{"id":2668,"name":"flake8","ecosystem":"pip","repository_url":"https://github.com/pycqa/flake8","issues_count":2308,"created_at":"2025-06-06T15:02:09.067Z","updated_at":"2025-06-06T15:02:09.067Z","purl":"pkg:pypi/flake8","metadata":{"id":2734930,"name":"flake8","ecosystem":"pypi","description":"the modular source code checker: pep8 pyflakes and co","homepage":"https://github.com/pycqa/flake8","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/pycqa/flake8","keywords_array":[],"namespace":null,"versions_count":93,"first_release_published_at":"2010-08-12T15:36:04.000Z","latest_release_published_at":"2025-03-29T20:08:37.000Z","latest_release_number":"7.2.0","last_synced_at":"2025-06-06T00:07:22.422Z","created_at":"2022-04-10T11:00:31.966Z","updated_at":"2025-06-06T00:07:22.423Z","registry_url":"https://pypi.org/project/flake8/","install_command":"pip install flake8 --index-url https://pypi.org/simple","documentation_url":"https://flake8.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Environment :: Console","Framework :: Flake8","Intended Audience :: Developers","License :: OSI Approved :: MIT License","Programming Language :: Python","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: Implementation :: CPython","Programming Language :: Python :: Implementation :: PyPy","Topic :: Software Development :: Libraries :: Python Modules","Topic :: Software Development :: Quality Assurance"],"normalized_name":"flake8"},"repo_metadata":{"id":20716244,"uuid":"24000265","full_name":"PyCQA/flake8","owner":"PyCQA","description":"flake8 is a python tool that glues together pycodestyle, pyflakes, mccabe, and third-party plugins to check the style and quality of some python code.","archived":false,"fork":false,"pushed_at":"2024-08-26T23:51:46.000Z","size":3665,"stargazers_count":3390,"open_issues_count":24,"forks_count":306,"subscribers_count":38,"default_branch":"main","last_synced_at":"2024-09-05T14:23:26.709Z","etag":null,"topics":["complexity-analysis","flake8","linter","linter-flake8","pep8","python","python3","static-analysis","static-code-analysis","style-guide","styleguide","stylelint"],"latest_commit_sha":null,"homepage":"https://flake8.pycqa.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/PyCQA.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"asottile","tidelift":"pypi/flake8"}},"created_at":"2014-09-13T17:06:24.000Z","updated_at":"2024-09-03T18:34:21.000Z","dependencies_parsed_at":"2023-12-20T14:30:52.446Z","dependency_job_id":"44d936a8-0aa3-4e56-941c-9682a8b9c642","html_url":"https://github.com/PyCQA/flake8","commit_stats":{"total_commits":1748,"total_committers":176,"mean_commits":9.931818181818182,"dds":0.5612128146453089,"last_synced_commit":"65a38c42a7f1a05ff8d99b313160754fc9b7a0d8"},"previous_names":[],"tags_count":88,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PyCQA","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":217991734,"owners_count":16262011,"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":"7.1.0","sha":"65a38c42a7f1a05ff8d99b313160754fc9b7a0d8","kind":"tag","published_at":"2024-06-15T21:36:27.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/7.1.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/7.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/7.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/7.1.0/manifests"},{"name":"7.0.0","sha":"88a4f9b2f48fc44b025a48fa6a8ac7cc89ef70e0","kind":"tag","published_at":"2024-01-05T00:41:15.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/7.0.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/7.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/7.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/7.0.0/manifests"},{"name":"6.1.0","sha":"7ef0350a439c93166bc8ba89fcc3de6a9a664e6c","kind":"tag","published_at":"2023-07-29T19:04:27.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/6.1.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/6.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/6.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/6.1.0/manifests"},{"name":"6.0.0","sha":"b9a7794c4f425ef8419081e6993f99419cc667ea","kind":"tag","published_at":"2022-11-23T19:27:24.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/6.0.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/6.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/6.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/6.0.0/manifests"},{"name":"5.0.4","sha":"6027577d325b0dd8bf1e465ebd29b71b5f0d005b","kind":"tag","published_at":"2022-08-03T23:20:41.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/5.0.4","html_url":"https://github.com/PyCQA/flake8/releases/tag/5.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/5.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/5.0.4/manifests"},{"name":"5.0.3","sha":"ff6569b87db8ae28c41b548071454de620ad14d5","kind":"tag","published_at":"2022-08-01T23:21:20.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/5.0.3","html_url":"https://github.com/PyCQA/flake8/releases/tag/5.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/5.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/5.0.3/manifests"},{"name":"5.0.2","sha":"70c0b3d27a5626a6ad58293bfaa6308244cb349c","kind":"tag","published_at":"2022-08-01T13:01:55.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/5.0.2","html_url":"https://github.com/PyCQA/flake8/releases/tag/5.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/5.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/5.0.2/manifests"},{"name":"5.0.1","sha":"405cfe06e02722a816068bf0c50c5947533ad602","kind":"tag","published_at":"2022-07-31T22:10:29.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/5.0.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/5.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/5.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/5.0.1/manifests"},{"name":"5.0.0","sha":"c7c6218e58f0fc005bd80f1872da63cd51afe71a","kind":"tag","published_at":"2022-07-30T21:01:07.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/5.0.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/5.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/5.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/5.0.0/manifests"},{"name":"4.0.1","sha":"82b698e09996cdde5d473e234681d8380810d7a2","kind":"tag","published_at":"2021-10-11T12:42:02.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/4.0.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/4.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/4.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/4.0.1/manifests"},{"name":"4.0.0","sha":"d31c5356bbb0a884555662185697ddc6bb46a44c","kind":"tag","published_at":"2021-10-11T02:08:18.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/4.0.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/4.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/4.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/4.0.0/manifests"},{"name":"3.9.2","sha":"c6e0d27593a45342ffa96a18bba708a5aab32fdf","kind":"tag","published_at":"2021-05-08T19:51:18.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.9.2","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.9.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.9.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.9.2/manifests"},{"name":"3.9.1","sha":"f7bda9296329cd0ad22cc38fe51b9fd679eed296","kind":"tag","published_at":"2021-04-16T03:49:29.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.9.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.9.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.9.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.9.1/manifests"},{"name":"3.9.0","sha":"434c108f7491b589362752b12979741598bb2dff","kind":"tag","published_at":"2021-03-14T23:30:06.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.9.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.9.0/manifests"},{"name":"3.8.4","sha":"fb91b994ed4adf4f2b4890e7bdba82f57e3a81df","kind":"tag","published_at":"2020-10-02T23:30:03.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.8.4","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.8.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.4/manifests"},{"name":"3.8.3","sha":"181bb46098dddf7e2d45319ea654b4b4d58c2840","kind":"tag","published_at":"2020-06-08T19:30:46.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.8.3","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.8.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.3/manifests"},{"name":"3.8.2","sha":"40716454a285b7a3f63c398f78106fafd5c668e7","kind":"tag","published_at":"2020-05-22T22:38:18.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.8.2","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.8.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.2/manifests"},{"name":"3.8.1","sha":"f94e0095fd58ddbd6bb16e5c71fb964b74914308","kind":"tag","published_at":"2020-05-12T05:34:55.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.8.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.1/manifests"},{"name":"3.8.0","sha":"b4d285019210ccdb5d526e64c281db64e5316d6c","kind":"tag","published_at":"2020-05-11T20:42:47.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.8.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.0/manifests"},{"name":"3.8.0a2","sha":"0cdc1b9efef12106b4d44a658ad943f24db7b2d2","kind":"tag","published_at":"2020-04-24T17:58:19.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.8.0a2","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.8.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.0a2/manifests"},{"name":"3.8.0a1","sha":"2cb1c65c99a7892b404d9b86771b598896343053","kind":"tag","published_at":"2020-04-24T17:35:11.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.8.0a1","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.8.0a1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.0a1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.8.0a1/manifests"},{"name":"3.7.9","sha":"ee2920d775df18481d638c2da084d229d56f95b9","kind":"tag","published_at":"2019-10-28T17:37:14.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.7.9","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.7.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.9/manifests"},{"name":"3.7.8","sha":"aa792d2930b8f6dada3f6305e8a3704d2d191005","kind":"tag","published_at":"2019-07-08T18:25:25.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.7.8","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.7.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.8/manifests"},{"name":"3.7.7","sha":"88caf5ac484f5c09aedc02167c59c66ff0af0068","kind":"tag","published_at":"2019-02-25T16:37:04.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.7.7","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.7.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.7/manifests"},{"name":"3.7.6","sha":"9b770f590ecca6e5d2e1c50ad707337e6695cfd4","kind":"tag","published_at":"2019-02-18T19:58:16.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.7.6","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.7.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.6/manifests"},{"name":"3.7.5","sha":"e7b8493b5d7af36f6c348566a7c3316b30e5b5ee","kind":"tag","published_at":"2019-02-04T16:37:22.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.7.5","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.7.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.5/manifests"},{"name":"3.7.4","sha":"afc57d471db072b9a39bc241ae70b85e0ce00e7c","kind":"tag","published_at":"2019-02-01T03:53:26.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.7.4","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.7.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.4/manifests"},{"name":"3.7.3","sha":"ee7081c8cea838fe57110f23899234e373988bec","kind":"tag","published_at":"2019-01-31T03:56:27.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.7.3","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.7.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.3/manifests"},{"name":"3.7.2","sha":"3d1a4265a76831d2821b5d56036db2bbcc44b1c6","kind":"tag","published_at":"2019-01-30T20:51:54.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.7.2","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.7.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.2/manifests"},{"name":"3.7.1","sha":"f70ae10c2ba191bef78c723a3404c27d84f13de8","kind":"tag","published_at":"2019-01-30T08:07:53.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.7.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.1/manifests"},{"name":"3.7.0","sha":"22f16e4081e9df63c68279c2c14bc1dd6807a5a0","kind":"tag","published_at":"2019-01-30T04:44:31.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.7.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.7.0/manifests"},{"name":"3.6.0","sha":"b6bd3a8ddd88dd29a94b5fa8a6634e5dffe7a711","kind":"tag","published_at":"2018-10-24T03:43:06.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.6.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.6.0/manifests"},{"name":"3.5.0","sha":"8acf55e0f85233c51c291816d73d828cc62d30d1","kind":"tag","published_at":"2017-10-21T12:25:27.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.5.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.5.0/manifests"},{"name":"3.4.1","sha":"a4f2135c774c31a7988a7cadbf793fe1c9271284","kind":"tag","published_at":"2017-07-28T11:22:10.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.4.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.4.1/manifests"},{"name":"3.4.0","sha":"0239f15dcce323357f316a66225b0d4d2308de28","kind":"tag","published_at":"2017-07-27T23:57:42.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.4.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.4.0/manifests"},{"name":"3.3.0","sha":"218a0b6980573069eb7821ce95ac7b2009c95ea1","kind":"tag","published_at":"2017-02-06T19:47:07.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.3.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.3.0/manifests"},{"name":"3.2.1","sha":"a981fe34ed5d02c762e40e1ed2d6f309290035b3","kind":"tag","published_at":"2016-11-21T21:53:40.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.2.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.2.1/manifests"},{"name":"3.2.0","sha":"e727bbb38b356be94dec5caa3d74a452f7787db9","kind":"tag","published_at":"2016-11-14T22:38:45.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.2.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.2.0/manifests"},{"name":"3.1.1","sha":"64cbc6559d7b5ee27ce9206e19ef038c05f423b4","kind":"tag","published_at":"2016-11-14T15:55:09.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.1.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.1.1/manifests"},{"name":"3.1.0","sha":"f6f01b469ccabdb78c95399d5cb50d94f69bdef9","kind":"tag","published_at":"2016-11-14T15:48:57.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.1.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.1.0/manifests"},{"name":"3.1.0b2","sha":"7e44b47c9ede5789177de9fa55b5b19af59cdaba","kind":"tag","published_at":"2016-11-13T21:06:28.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.1.0b2","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.1.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.1.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.1.0b2/manifests"},{"name":"3.1.0b1","sha":"3fecbe177d66cf34951cda6e1a86d92e5537e1ce","kind":"tag","published_at":"2016-11-12T20:54:55.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.1.0b1","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.1.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.1.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.1.0b1/manifests"},{"name":"3.0.4","sha":"aa294d2b38be18981ec047a9707578cb720fa0bd","kind":"tag","published_at":"2016-08-07T19:00:25.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.0.4","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.4/manifests"},{"name":"3.0.3","sha":"0b861e31ef16d299e02af4c676f4b8c960e54e40","kind":"tag","published_at":"2016-07-30T11:58:53.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.0.3","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.3/manifests"},{"name":"3.0.2","sha":"39361412090da69b84cc0af446cec88235a1630b","kind":"tag","published_at":"2016-07-27T00:51:04.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.0.2","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.2/manifests"},{"name":"3.0.1","sha":"88d9213962d6023d4ad97b54d2c6d1300512b727","kind":"tag","published_at":"2016-07-26T00:43:36.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.0.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.1/manifests"},{"name":"3.0.0","sha":"ff0bf5f0f91b69bfd677822e0d26f47e7def86c5","kind":"tag","published_at":"2016-07-25T01:11:58.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.0.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.0/manifests"},{"name":"3.0.0b2","sha":"5b8a875965c40e1fe3f189fb8940153360b9aff6","kind":"tag","published_at":"2016-06-29T01:47:56.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.0.0b2","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.0b2/manifests"},{"name":"2.6.2","sha":"1254fe8f5cfcbd4afc2f692827da4f04a3033c56","kind":"tag","published_at":"2016-06-25T17:11:31.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.6.2","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.6.2/manifests"},{"name":"3.0.0b1","sha":"cee691059f0a2805c644a1c3541f70e306225b48","kind":"tag","published_at":"2016-06-25T17:01:52.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/3.0.0b1","html_url":"https://github.com/PyCQA/flake8/releases/tag/3.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/3.0.0b1/manifests"},{"name":"2.6.1","sha":"93089108932a5382630243a5691d4cf796b60ec4","kind":"tag","published_at":"2016-06-25T16:37:39.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.6.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.6.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.6.1/manifests"},{"name":"2.6.0","sha":"e1de96f6296b9c18eabb2148e7beb0f38a782392","kind":"tag","published_at":"2016-06-16T00:37:02.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.6.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.6.0/manifests"},{"name":"2.5.5","sha":"3bf761be5802c726d869702d9fe9592581f4f0f1","kind":"tag","published_at":"2016-06-14T14:07:27.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.5.5","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.5.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.5/manifests"},{"name":"2.5.4","sha":"e2d6f33151f42245c038ca55b53bc0dd199147f4","kind":"tag","published_at":"2016-02-11T17:53:55.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.5.4","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.5.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.4/manifests"},{"name":"2.5.3","sha":"1845ec33ec019a1932c44b2cb04d6be28103fdea","kind":"tag","published_at":"2016-02-11T17:21:02.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.5.3","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.5.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.3/manifests"},{"name":"2.5.2","sha":"388db0d8116d9a69ffb34ebc0766ac6468a02b42","kind":"tag","published_at":"2016-01-30T16:06:45.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.5.2","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.5.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.2/manifests"},{"name":"2.5.1","sha":"4fb7d6a9a751f7cab1e8ead268b7c7864ef80827","kind":"tag","published_at":"2015-12-08T04:56:34.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.5.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.5.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.1/manifests"},{"name":"2.5.0","sha":"99bc94edaae3bb2d84f025ebdbb34c99982ebd89","kind":"tag","published_at":"2015-10-26T01:29:40.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.5.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.5.0/manifests"},{"name":"2.4.1","sha":"3ce1050d0fd0fe8c2cafb8c62b4a37b58f3b4c57","kind":"tag","published_at":"2015-05-18T23:44:35.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.4.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.4.1/manifests"},{"name":"2.4.0","sha":"ea456614b5599b521d5f01cd4392e54f987fcaef","kind":"tag","published_at":"2015-03-08T02:43:19.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.4.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.4.0/manifests"},{"name":"2.3.0","sha":"2f577791db7206e54677dee4482cc065d39aa91e","kind":"tag","published_at":"2015-01-04T20:49:21.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.3.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.3.0/manifests"},{"name":"2.2.5","sha":"247877b7c57d101d32c9c5560910c7609afb3e7b","kind":"tag","published_at":"2014-10-20T02:26:30.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.2.5","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.2.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.5/manifests"},{"name":"2.2.4","sha":"2cf10d26a31411f192d9100325bd81339616d848","kind":"tag","published_at":"2014-10-09T21:56:57.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.2.4","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.2.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.4/manifests"},{"name":"2.2.3","sha":"568d7751eb11e6b54cdda080f8517b29454d4117","kind":"commit","published_at":"2014-08-26T00:02:46.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.2.3","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.2.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.3/manifests"},{"name":"2.2.2","sha":"2a3ad4756332355e095a8e4c626ea8b6a66588a3","kind":"commit","published_at":"2014-07-05T02:52:54.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.2.2","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.2.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.2/manifests"},{"name":"2.2.1","sha":"8a0ac48df6019ac28883583dc34fe6518b046535","kind":"commit","published_at":"2014-06-30T13:49:44.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.2.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.1/manifests"},{"name":"2.2.0","sha":"54b0030531ae7779092549462225046a9a67f406","kind":"commit","published_at":"2014-06-23T02:20:23.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.2.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.2.0/manifests"},{"name":"2.1.0","sha":"91c67ab7fea0ff5e254b46060074530f719b0776","kind":"commit","published_at":"2013-10-26T20:23:24.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.1.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.1.0/manifests"},{"name":"2.0","sha":"21d5c27ba59b278d979ebf7ae209189a9c83ff60","kind":"commit","published_at":"2013-02-23T22:23:35.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/2.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/2.0/manifests"},{"name":"1.7.0","sha":"32a273fbdb64500cb8d7f0bcae7059078524f86d","kind":"commit","published_at":"2012-12-21T22:45:19.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/1.7.0","html_url":"https://github.com/PyCQA/flake8/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%2Fflake8/tags/1.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.7.0/manifests"},{"name":"1.6.2","sha":"1b2f13c384d845add3b11ec8f03535f1c59e7119","kind":"commit","published_at":"2012-11-25T10:54:09.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/1.6.2","html_url":"https://github.com/PyCQA/flake8/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%2Fflake8/tags/1.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.6.2/manifests"},{"name":"1.6.1","sha":"3af29194146be05b8b7bacb83cbf41ebea8bd5fb","kind":"commit","published_at":"2012-11-25T01:53:03.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/1.6.1","html_url":"https://github.com/PyCQA/flake8/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%2Fflake8/tags/1.6.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.6.1/manifests"},{"name":"1.6","sha":"20bbf8d123c787a459adc5e1dfa87188906fc380","kind":"commit","published_at":"2012-11-17T00:49:58.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/1.6","html_url":"https://github.com/PyCQA/flake8/releases/tag/1.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.6/manifests"},{"name":"1.5","sha":"2f396e061a0471936888d63ea34d3014f78263db","kind":"commit","published_at":"2012-10-13T14:13:15.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/1.5","html_url":"https://github.com/PyCQA/flake8/releases/tag/1.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.5/manifests"},{"name":"1.3.1","sha":"904a5cc107aba831bac1e02c8cafa07a14a86634","kind":"commit","published_at":"2012-05-19T17:21:04.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/1.3.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/1.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.3.1/manifests"},{"name":"1.3","sha":"926aa494216aeacc7f33ec221fa9711bd2f027f9","kind":"commit","published_at":"2012-03-22T09:35:22.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/1.3","html_url":"https://github.com/PyCQA/flake8/releases/tag/1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.3/manifests"},{"name":"1.2","sha":"b9c0ac5a114701c6df273f173a62dc2a0168869a","kind":"commit","published_at":"2012-02-27T23:09:27.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/1.2","html_url":"https://github.com/PyCQA/flake8/releases/tag/1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.2/manifests"},{"name":"1.1","sha":"1633d9a269c706b432189e2b08c9df3910566c92","kind":"commit","published_at":"2012-02-14T12:25:42.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/1.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.1/manifests"},{"name":"1.0","sha":"a6e22978380eefad24bfd4aea7efc974d7129dbb","kind":"commit","published_at":"2011-11-29T12:40:40.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/1.0","html_url":"https://github.com/PyCQA/flake8/releases/tag/1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/1.0/manifests"},{"name":"0.9","sha":"87dc65eac1cb197e474f78cc4b201bb1a192b9c8","kind":"commit","published_at":"2011-11-09T13:49:16.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/0.9","html_url":"https://github.com/PyCQA/flake8/releases/tag/0.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.9/manifests"},{"name":"0.8","sha":"4512b5f6507ecfb6633426625cc41eeec85138c5","kind":"commit","published_at":"2011-02-27T16:31:12.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/0.8","html_url":"https://github.com/PyCQA/flake8/releases/tag/0.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.8/manifests"},{"name":"0.7","sha":"bc80ac7f48addd3329ae12228ba9bfe2743d09de","kind":"commit","published_at":"2011-02-18T08:19:55.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/0.7","html_url":"https://github.com/PyCQA/flake8/releases/tag/0.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.7/manifests"},{"name":"0.6","sha":"4e2b37acf91c958c626d3c06fe25e3b459d107b3","kind":"commit","published_at":"2011-02-15T10:55:52.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/0.6","html_url":"https://github.com/PyCQA/flake8/releases/tag/0.6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.6/manifests"},{"name":"0.5","sha":"1acdac96e32161ebc4d72669e97895ce3d2414df","kind":"commit","published_at":"2011-02-13T12:15:48.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/0.5","html_url":"https://github.com/PyCQA/flake8/releases/tag/0.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.5/manifests"},{"name":"0.4","sha":"fd5d56fe7b566da80066e2f9d635ab40f7d7e804","kind":"commit","published_at":"2011-02-08T11:06:11.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/0.4","html_url":"https://github.com/PyCQA/flake8/releases/tag/0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.4/manifests"},{"name":"0.3","sha":"cdadaad4370dbf92fef986d061918f191801b15d","kind":"commit","published_at":"2011-02-08T10:48:18.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/0.3","html_url":"https://github.com/PyCQA/flake8/releases/tag/0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.3/manifests"},{"name":"0.2","sha":"53f153dc12a4d9b71673f0c41d0646f4c9efce47","kind":"commit","published_at":"2011-01-26T10:59:20.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/0.2","html_url":"https://github.com/PyCQA/flake8/releases/tag/0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.2/manifests"},{"name":"0.1","sha":"c35ff7c583efad378a861de4af2cc61196221357","kind":"commit","published_at":"2010-08-12T13:34:39.000Z","download_url":"https://codeload.github.com/PyCQA/flake8/tar.gz/0.1","html_url":"https://github.com/PyCQA/flake8/releases/tag/0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PyCQA%2Fflake8/tags/0.1/manifests"}]},"repo_metadata_updated_at":"2024-09-07T13:00:25.069Z","dependent_packages_count":7994,"downloads":35999690,"downloads_period":"last-month","dependent_repos_count":153063,"rankings":{"downloads":0.04236922856823188,"dependent_repos_count":0.004585414347211243,"dependent_packages_count":0.002384415460549846,"stargazers_count":1.8717661365316292,"forks_count":3.953360833591645,"docker_downloads_count":0.2630193669560369,"average":1.022914232575884},"purl":"pkg:pypi/flake8","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/flake8","docker_dependents_count":6026,"docker_downloads_count":1887960020,"usage_url":"https://repos.ecosyste.ms/usage/pypi/flake8","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/flake8/dependencies","status":null,"funding_links":["https://github.com/sponsors/asottile","https://tidelift.com/funding/github/pypi/flake8"],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/flake8/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/flake8/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/flake8/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/flake8/related_packages","maintainers":[{"uuid":"asottile","login":"asottile","name":null,"email":null,"url":null,"packages_count":88,"html_url":"https://pypi.org/user/asottile/","role":null,"created_at":"2023-01-30T22:07:13.795Z","updated_at":"2023-01-30T22:07:13.795Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/asottile/packages"},{"uuid":"graffatcolmingov","login":"graffatcolmingov","name":null,"email":null,"url":null,"packages_count":55,"html_url":"https://pypi.org/user/graffatcolmingov/","role":null,"created_at":"2023-05-24T20:11:40.584Z","updated_at":"2023-05-24T20:11:40.584Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/graffatcolmingov/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690055,"maintainers_count":292646,"namespaces_count":0,"keywords_count":228482,"github":"pypi","metadata":{"funded_packages_count":48953},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-05T05:19:27.498Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":1488,"unique_repositories_count_past_30_days":25,"recent_issues":[{"uuid":"5687275181","node_id":"PR_kwDOPyIw988AAAABGZx5gQ","number":1398,"state":"closed","title":"deps(deps): bump the python-minor-patch group across 1 directory with 42 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-10-03T19:26:03.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-03T06:36:12.000Z","updated_at":"2026-10-03T19:26:13.000Z","time_to_close":46191,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): bump","group_name":"python-minor-patch","update_count":42,"packages":[{"name":"readchar","old_version":"4.2.1","new_version":"4.2.2","repository_url":"https://github.com/magmax/python-readchar"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"docker","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/docker/docker-py"},{"name":"litellm","old_version":"1.88.6","new_version":"1.103.1","repository_url":"https://github.com/BerriAI/litellm"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.54.0"},{"name":"chardet","old_version":"7.4.0.post2","new_version":"7.6.0","repository_url":"https://github.com/chardet/chardet"},{"name":"numpy","old_version":"2.4.4","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"pandas","old_version":"3.0.1","new_version":"3.0.6","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"markdown","old_version":"3.10.2","new_version":"3.11","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"pdfplumber","old_version":"0.11.9","new_version":"0.11.10","repository_url":"https://github.com/jsvine/pdfplumber"},{"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":"pytest-mock","old_version":"3.15.1","new_version":"3.16.0","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"ruff","old_version":"0.14.14","new_version":"0.16.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"dopetask","old_version":"0.5.1","new_version":"0.5.7","repository_url":"https://github.com/DDD-Enterprises/dopeTask"},{"name":"tree-sitter","old_version":"0.25.2","new_version":"0.26.0","repository_url":"https://github.com/tree-sitter/py-tree-sitter"},{"name":"tree-sitter-python","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-python"},{"name":"tree-sitter-javascript","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-javascript"},{"name":"tree-sitter-typescript","old_version":"0.23.0","new_version":"0.23.2","repository_url":"https://github.com/tree-sitter/tree-sitter-typescript"},{"name":"tree-sitter-go","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-go"},{"name":"tree-sitter-rust","old_version":"0.23.0","new_version":"0.24.2","repository_url":"https://github.com/tree-sitter/tree-sitter-rust"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyjwt","old_version":"2.15.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"qdrant-client","old_version":"1.17.1","new_version":"1.19.1","repository_url":"https://github.com/qdrant/qdrant-client"},{"name":"pymupdf","old_version":"1.27.2.2","new_version":"1.28.2","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"beautifulsoup4","old_version":"4.14.3","new_version":"4.15.0"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"python-multipart","old_version":"0.0.31","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.13","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"alembic","old_version":"1.18.4","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pytz","old_version":"2026.1.post1","new_version":"2026.4","repository_url":"https://github.com/stub42/pytz"},{"name":"orjson","old_version":"3.11.7","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"msgpack","old_version":"1.2.1","new_version":"1.2.3","repository_url":"https://github.com/msgpack/msgpack-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 42 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [readchar](https://github.com/magmax/python-readchar) | `4.2.1` | `4.2.2` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [docker](https://github.com/docker/docker-py) | `7.1.0` | `7.2.0` |\n| [litellm](https://github.com/BerriAI/litellm) | `1.88.6` | `1.103.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.54.0` |\n| [chardet](https://github.com/chardet/chardet) | `7.4.0.post2` | `7.6.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.4` | `2.4.6` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `3.0.1` | `3.0.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.2` | `3.11` |\n| [pdfplumber](https://github.com/jsvine/pdfplumber) | `0.11.9` | `0.11.10` |\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| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.1` | `3.16.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.14` | `0.16.9` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.2` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n| [dopetask](https://github.com/DDD-Enterprises/dopeTask) | `0.5.1` | `0.5.7` |\n| [tree-sitter](https://github.com/tree-sitter/py-tree-sitter) | `0.25.2` | `0.26.0` |\n| [tree-sitter-python](https://github.com/tree-sitter/tree-sitter-python) | `0.23.0` | `0.25.0` |\n| [tree-sitter-javascript](https://github.com/tree-sitter/tree-sitter-javascript) | `0.23.0` | `0.25.0` |\n| [tree-sitter-typescript](https://github.com/tree-sitter/tree-sitter-typescript) | `0.23.0` | `0.23.2` |\n| [tree-sitter-go](https://github.com/tree-sitter/tree-sitter-go) | `0.23.0` | `0.25.0` |\n| [tree-sitter-rust](https://github.com/tree-sitter/tree-sitter-rust) | `0.23.0` | `0.24.2` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.26.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.15.0` | `2.15.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [qdrant-client](https://github.com/qdrant/qdrant-client) | `1.17.1` | `1.19.1` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.27.2.2` | `1.28.2` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.31` | `0.0.32` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.13` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.20.0` |\n| [pytz](https://github.com/stub42/pytz) | `2026.1.post1` | `2026.4` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.12.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.3` |\n\n\nUpdates `readchar` from 4.2.1 to 4.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/magmax/python-readchar/releases\"\u003ereadchar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix pytest 9 compatibility by \u003ca href=\"https://github.com/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd android as supported platform by \u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\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/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ehttps://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/05faadbfd883e80fe8e3ff1f8da97471a3b85262\"\u003e\u003ccode\u003e05faadb\u003c/code\u003e\u003c/a\u003e release v4.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/a9f2384ae26520a9456673b73c05944aae8fd2ca\"\u003e\u003ccode\u003ea9f2384\u003c/code\u003e\u003c/a\u003e Add android as supported platform (\u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/130\"\u003e#130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/753cb421b5a2cbe3601b1923992ac8b4985839a1\"\u003e\u003ccode\u003e753cb42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/129\"\u003e#129\u003c/a\u003e from mweinelt/pytest9-compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/5165992002f211fe85175bcbb4f9a60d5e90fdac\"\u003e\u003ccode\u003e5165992\u003c/code\u003e\u003c/a\u003e Fix pytest 9 compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/2204f05e47b7e5c6209a49dfde0ad64938e439a5\"\u003e\u003ccode\u003e2204f05\u003c/code\u003e\u003c/a\u003e increment version after release\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.0 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.33.0...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\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/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docker` from 7.1.0 to 7.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/docker/docker-py/releases\"\u003edocker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.2.0\u003c/h2\u003e\n\u003ch2\u003eUpgrade Notes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edocker.from_env()\u003c/code\u003e now honors the active Docker CLI context when \u003ccode\u003eDOCKER_HOST\u003c/code\u003e is not set.\n\u003cul\u003e\n\u003cli\u003eThis means the client may connect to the daemon selected by \u003ccode\u003eDOCKER_CONTEXT\u003c/code\u003e or the current context in \u003ccode\u003e~/.docker/config.json\u003c/code\u003e, matching Docker CLI behavior more closely.\u003c/li\u003e\n\u003cli\u003eIf your application relied on the previous default connection behavior, set \u003ccode\u003eDOCKER_HOST\u003c/code\u003e explicitly, set \u003ccode\u003eDOCKER_CONTEXT=default\u003c/code\u003e, or pass \u003ccode\u003euse_context=False\u003c/code\u003e to \u003ccode\u003eDockerClient.from_env()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003edocker.from_context()\u003c/code\u003e / \u003ccode\u003eDockerClient.from_context()\u003c/code\u003e for explicitly creating a client from a Docker CLI context.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Docker contexts when creating the default client\u003c/li\u003e\n\u003cli\u003eAdded subpath support for volumes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eexec_run\u003c/code\u003e documentation for the \u003ccode\u003estream\u003c/code\u003e parameter\u003c/li\u003e\n\u003cli\u003eFixed image loading to avoid depending on the deprecated \u003ccode\u003eJSONMessage.error\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003ePreserved the rotated unlock key in swarm integration tests\u003c/li\u003e\n\u003cli\u003eFixed SSL certificate generation in tests\u003c/li\u003e\n\u003cli\u003eFixed IPv6 integration tests by explicitly enabling IPv6 where required\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated tests for newer Docker Engine behavior\u003c/li\u003e\n\u003cli\u003eCI and build updates\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003etests/exec: expect 127 exit code for missing executable by \u003ca href=\"https://github.com/laurazard\"\u003e\u003ccode\u003e@​laurazard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3290\"\u003edocker/docker-py#3290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efixing doc for stream param in exec_run by \u003ca href=\"https://github.com/yasonk\"\u003e\u003ccode\u003e@​yasonk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3292\"\u003edocker/docker-py#3292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump default API version to 1.45 (Moby 26.0/26.1) by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3261\"\u003edocker/docker-py#3261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet a dummy-version if none set, and remove unused APT_MIRROR build-arg by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3267\"\u003edocker/docker-py#3267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_service_logs: stop testing experimental versions by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/2442\"\u003edocker/docker-py#2442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMakefile: fix circular reference for integration-dind by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3297\"\u003edocker/docker-py#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eimage load: don't depend on deprecated JSONMessage.error field by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3307\"\u003edocker/docker-py#3307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration: test_create_volume_invalid_driver allow either 400 or 404 by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3296\"\u003edocker/docker-py#3296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration: adjust tests for omitted \u0026quot;OnBuild\u0026quot; by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3336\"\u003edocker/docker-py#3336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement Subpath Support for Volumes in Docker-Py (\u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3243\"\u003e#3243\u003c/a\u003e) by \u003ca href=\"https://github.com/Khushiyant\"\u003e\u003ccode\u003e@​Khushiyant\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3270\"\u003edocker/docker-py#3270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix ssl generation by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3365\"\u003edocker/docker-py#3365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest/integration: don't check for deprecated Networks field by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3362\"\u003edocker/docker-py#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: Skip from_env_unix tests if DOCKER_HOST is network socket by \u003ca href=\"https://github.com/ricardobranco777\"\u003e\u003ccode\u003e@​ricardobranco777\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3366\"\u003edocker/docker-py#3366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_connect_with_ipv6_address: enable IPv6 by \u003ca href=\"https://github.com/robmry\"\u003e\u003ccode\u003e@​robmry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3372\"\u003edocker/docker-py#3372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_create_with_ipv6_address: enable IPv6 by \u003ca href=\"https://github.com/robmry\"\u003e\u003ccode\u003e@​robmry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3373\"\u003edocker/docker-py#3373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: Migrate off gpg2 and regenerate key ed25519 by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3399\"\u003edocker/docker-py#3399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003egha: Pin to digests by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3408\"\u003edocker/docker-py#3408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests on non-amd64 hosts and add ARM64 CI by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3407\"\u003edocker/docker-py#3407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration/swarm: Preserve rotated unlock key by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3410\"\u003edocker/docker-py#3410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DKP-2535] Honour context if present for default client, add contexts support by \u003ca href=\"https://github.com/ebriney\"\u003e\u003ccode\u003e@​ebriney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3401\"\u003edocker/docker-py#3401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: 7.2.0 changelog by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3415\"\u003edocker/docker-py#3415\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/laurazard\"\u003e\u003ccode\u003e@​laurazard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3290\"\u003edocker/docker-py#3290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yasonk\"\u003e\u003ccode\u003e@​yasonk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3292\"\u003edocker/docker-py#3292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ricardobranco777\"\u003e\u003ccode\u003e@​ricardobranco777\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3366\"\u003edocker/docker-py#3366\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/docker/docker-py/commit/5ad5327fba623897ee9a527d7eee1b01703e0726\"\u003e\u003ccode\u003e5ad5327\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3415\"\u003e#3415\u003c/a\u003e from vvoland/update-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/d2422303703cf33f604018d0601d8e4b71a2131e\"\u003e\u003ccode\u003ed242230\u003c/code\u003e\u003c/a\u003e docs: 7.2.0 changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/ba01cc7291a00a96260792c27046cfaedd9a61dc\"\u003e\u003ccode\u003eba01cc7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3401\"\u003e#3401\u003c/a\u003e from ebriney/client-from-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/ae5dfe9111b1f4e9fafd4107a8ac4a3fa52644dc\"\u003e\u003ccode\u003eae5dfe9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3410\"\u003e#3410\u003c/a\u003e from vvoland/fix-flaky\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/aa999998eded49919086be7fc4448f5dc9eac689\"\u003e\u003ccode\u003eaa99999\u003c/code\u003e\u003c/a\u003e integration/swarm: Preserve rotated unlock key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/059d371b576b9f324a16753e2a775b1f7731b6d0\"\u003e\u003ccode\u003e059d371\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3407\"\u003e#3407\u003c/a\u003e from vvoland/fix-arm64\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/9b4b9b8461966e5b54638490e66c91e45f25ea19\"\u003e\u003ccode\u003e9b4b9b8\u003c/code\u003e\u003c/a\u003e gha: Add arm64 integration CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/9e9f8ff315fe405d7f7e89b394d6269217c51dfe\"\u003e\u003ccode\u003e9e9f8ff\u003c/code\u003e\u003c/a\u003e Skip tests incompatible with host architecture\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/e0542d9ee4b564822722a3c49d9948484ffb37bc\"\u003e\u003ccode\u003ee0542d9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3408\"\u003e#3408\u003c/a\u003e from vvoland/gha-pin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/578a11dd65e167b0421b9f9af143635ce93abe83\"\u003e\u003ccode\u003e578a11d\u003c/code\u003e\u003c/a\u003e gha: Pin to digests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/docker/docker-py/compare/7.1.0...7.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `litellm` from 1.88.6 to 1.103.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/BerriAI/litellm/releases\"\u003elitellm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.103.1\u003c/h2\u003e\n\u003ch2\u003eVerify Docker Image Signature\u003c/h2\u003e\n\u003cp\u003eAll LiteLLM Docker images are signed with \u003ca href=\"https://docs.sigstore.dev/cosign/overview/\"\u003ecosign\u003c/a\u003e. Every release is signed with the same key introduced in \u003ca href=\"https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0\"\u003ecommit \u003ccode\u003e0112e53\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the pinned commit hash (recommended):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eA commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the release tag (convenience):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eTags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.103.1/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eExpected output:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eThe following checks were performed on each of these signatures:\n  - The cosign claims were validated\n  - The signatures were verified against the specified public key\n\u003c/code\u003e\u003c/pre\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/BerriAI/litellm/compare/v1.103.0...v1.103.1\"\u003ehttps://github.com/BerriAI/litellm/compare/v1.103.0...v1.103.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.103.0\u003c/h2\u003e\n\u003ch2\u003eVerify Docker Image Signature\u003c/h2\u003e\n\u003cp\u003eAll LiteLLM Docker images are signed with \u003ca href=\"https://docs.sigstore.dev/cosign/overview/\"\u003ecosign\u003c/a\u003e. Every release is signed with the same key introduced in \u003ca href=\"https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0\"\u003ecommit \u003ccode\u003e0112e53\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the pinned commit hash (recommended):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eA commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.0\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/580bde9a2d148714889ec1c04a9872819e78a778\"\u003e\u003ccode\u003e580bde9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/13\"\u003e#13\u003c/a\u003e from BerriAI/litellm_session_token_1_103_x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/d3bf0066132899ca86fce126a11f4c133d9a74c8\"\u003e\u003ccode\u003ed3bf006\u003c/code\u003e\u003c/a\u003e chore(lint): scope a TRY004 suppression to the bearer-token salt key check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/a80eacacee118fbed54e3d98f239d17a63fac818\"\u003e\u003ccode\u003ea80eaca\u003c/code\u003e\u003c/a\u003e refactor(auth): bind UI/CLI session tokens to their own AES-GCM context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/e7d8bbc5deb36c960162d4ce3922985fe56db835\"\u003e\u003ccode\u003ee7d8bbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/6\"\u003e#6\u003c/a\u003e from BerriAI/litellm_bump_1_103_1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/bf02f06913c06fe41459f529f3511a32305f16d4\"\u003e\u003ccode\u003ebf02f06\u003c/code\u003e\u003c/a\u003e bump: litellm 1.103.0 -\u0026gt; 1.103.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/c991f4b01f5799eb0b0cab0fb63988e15c3a8a9d\"\u003e\u003ccode\u003ec991f4b\u003c/code\u003e\u003c/a\u003e fix(proxy): unregister logging callbacks removed from the stored config (\u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43429\"\u003e#43429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/cc111d1ae57fbd4d6c0c2fbd4772fe00460da215\"\u003e\u003ccode\u003ecc111d1\u003c/code\u003e\u003c/a\u003e fix(streaming): backport text-completion usage fix and e2e provider-flake tol...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/4dbbe6eddd1820fdf9f6a2914fb3f03633777988\"\u003e\u003ccode\u003e4dbbe6e\u003c/code\u003e\u003c/a\u003e test(ci): fix the e2e and integration reds left on rc/1.103.0 after \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43382\"\u003e#43382\u003c/a\u003e an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/8aca86a571bd67edcfb34180106a2636b3a4dbfc\"\u003e\u003ccode\u003e8aca86a\u003c/code\u003e\u003c/a\u003e test(e2e): clear the two rc/1.103.0 e2e reds owned by upstream providers (\u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43\"\u003e#43\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/e640c0eb4155f40a1bcecb3dc6a8ddc81b030080\"\u003e\u003ccode\u003ee640c0e\u003c/code\u003e\u003c/a\u003e test(integration): make rc/1.103.0 integration groups collect and pass again ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/BerriAI/litellm/compare/v1.88.6...v1.103.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn[standard]` from 0.38.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\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.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\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.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.38.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 7.4.0.post2 to 7.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.6.0\u003c/h2\u003e\n\u003cp\u003eBig release: a Cython scoring kernel joins mypyc in compiled wheels, every model retrained on a deduplicated corpus, UTF-7 fixed in both directions, and a guarantee that \u003ccode\u003edetect()\u003c/code\u003e never returns an encoding that can't decode your complete input.\u003c/p\u003e\n\u003ch2\u003ePerformance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCompiled wheels now score bigram profiles through a small Cython kernel alongside mypyc, and the pair is 4.7x faster than the pure wheel on CPython 3.14. \u003ccode\u003e_kernel.py\u003c/code\u003e stays plain Python (PyPy and pure wheels run it interpreted, unchanged), and detection output is bit-identical. The kernel declares itself safe without the GIL, so free-threaded CPython scales instead of silently re-enabling the GIL on import: 3.14t runs the whole suite in ~340ms across 8 threads, the fastest configuration measured. Compiled builds now need both hooks: \u003ccode\u003eHATCH_BUILD_HOOK_ENABLE_MYPYC=true HATCH_BUILD_HOOK_ENABLE_CUSTOM=true\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdded support for CPython 3.15, including the free-threaded build. No code changes were needed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edetect()\u003c/code\u003e no longer returns an encoding that cannot decode the input it was given (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/380\"\u003e#380\u003c/a\u003e, thanks \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e). When the whole input has been examined and the winner's only multi-byte evidence is an incomplete trailing sequence, the best candidate that decodes the input completely wins instead. Genuinely truncated data keeps its answer.\u003c/li\u003e\n\u003cli\u003eFixed delimited ASCII data like \u003ccode\u003e|NAME,+LAY|\u003c/code\u003e misdetecting as UTF-7 (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/371\"\u003e#371\u003c/a\u003e follow-up, thanks \u003ca href=\"https://github.com/agreenburg\"\u003e\u003ccode\u003e@​agreenburg\u003c/code\u003e\u003c/a\u003e). The whole buffer must now actually decode as UTF-7, and a lone shifted character must land in a plausible script range.\u003c/li\u003e\n\u003cli\u003eSigned UTF-7 no longer reads as ASCII: the BOM stage recognizes the four UTF-7 signature prefixes when the rest of the buffer decodes as UTF-7.\u003c/li\u003e\n\u003cli\u003eFixed short apostrophe-heavy English being labeled Scottish Gaelic or Breton: a rare-language label on an input under 128 bytes now needs a 0.03 lead over the best mainstream language (ADR-0005).\u003c/li\u003e\n\u003cli\u003eFixed Hungarian text losing to a Czech reading in confusion rescoring; tied pairs are compared only under language models both encodings have.\u003c/li\u003e\n\u003cli\u003eFixed space-padded text matching a degenerate Serbian model at high confidence; statistical scoring now skips repeated-whitespace bigrams. This also fixes windows-1251 logs misdetecting as windows-1250 (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/379\"\u003e#379\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed EBCDIC text being invisible to the early pipeline stages, and the last two EBCDIC sibling misdetections.\u003c/li\u003e\n\u003cli\u003eFixed training normalization gaps that starved ISO-8859-16 and the 26 pre-euro encodings at exactly their distinguishing bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRetrained every bigram model on a refreshed, deduplicated corpus with training provenance now recorded per model.\u003c/li\u003e\n\u003cli\u003eNew ANSI-art model for cp437, trained on 16,621 text-mode art files from \u003ca href=\"https://16colo.rs/\"\u003e16colo.rs\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRare-language arbitration (ADR-0005): low-confidence statistical winners from languages with no documented legacy-encoding population yield to near-tied mainstream candidates.\u003c/li\u003e\n\u003cli\u003eConfusion-group resolution is context-aware: per-occurrence votes, word-shape demotions, art-model exemption.\u003c/li\u003e\n\u003cli\u003eStatistical dead heats no longer resolve by candidate enumeration order.\u003c/li\u003e\n\u003cli\u003eTraining pipeline hardening after a cache-loss post-mortem.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chardet/chardet/compare/7.5.1...7.6.0\"\u003ehttps://github.com/chardet/chardet/compare/7.5.1...7.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.5.1\u003c/h2\u003e\n\u003cp\u003ePatch release: three detection fixes found while benchmarking against charset-normalizer's char-dataset.\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed markup-declared encodings being reported under a name that can't decode the input. A page declaring \u003ccode\u003eShift_JIS\u003c/code\u003e but using CP932 extension characters (like ①) came back as \u003ccode\u003eSHIFT_JIS\u003c/code\u003e, which fails \u003ccode\u003e.decode()\u003c/code\u003e on those same bytes. Superset promotion (\u003ccode\u003eCP932\u003c/code\u003e, \u003ccode\u003eCP949\u003c/code\u003e) now always fires when the reported name can't decode the data but the superset can.\u003c/li\u003e\n\u003cli\u003eFixed a lying charset declaration beating genuine UTF-8 content. A UTF-8 page declaring \u003ccode\u003e\u0026lt;meta charset=\u0026quot;iso-8859-1\u0026quot;\u0026gt;\u003c/code\u003e came back as ISO-8859-1, which decodes to mojibake. Valid multi-byte UTF-8 now wins over a conflicting declaration.\u003c/li\u003e\n\u003cli\u003eFixed BOM-less UTF-16 byte-order detection for pure-CJK text: short Chinese UTF-16 samples came back with reversed endianness at full confidence. Byte order is now chosen by decoding both ways and comparing text quality.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chardet/chardet/compare/7.5.0...7.5.1\"\u003ehttps://github.com/chardet/chardet/compare/7.5.0...7.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.5.0\u003c/h2\u003e\n\u003cp\u003eAccuracy and speed release: truncation-proof byte validity, statistical pruning worth ~2.9x, and half the peak memory.\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed multi-byte encodings being eliminated when the input ends in an incomplete character. Byte-validity filtering used a one-shot strict decode, which cannot tell a truncated tail from corrupt data, so a single dangling lead byte dropped every CJK candidate and the result came down to input-length parity. Also reachable on complete files through chardet's own \u003ccode\u003emax_bytes\u003c/code\u003e and \u003ccode\u003e_SCAN_LIMIT\u003c/code\u003e slicing. Validity checks now decode incrementally with \u003ccode\u003efinal=False\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/376\"\u003e#376\u003c/a\u003e, thanks \u003ca href=\"https://github.com/aadsm\"\u003e\u003ccode\u003e@​aadsm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ecompat_names\u003c/code\u003e (the default) leaking internal Python codec names for seven encodings (\u003ccode\u003eISO-8859-2\u003c/code\u003e, \u003ccode\u003eISO-8859-6\u003c/code\u003e, \u003ccode\u003eISO-8859-13\u003c/code\u003e, \u003ccode\u003eWindows-1250\u003c/code\u003e, \u003ccode\u003eWindows-1256\u003c/code\u003e, \u003ccode\u003eWindows-1257\u003c/code\u003e, \u003ccode\u003eCP874\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/374\"\u003e#374\u003c/a\u003e, thanks \u003ca href=\"https://github.com/aadsm\"\u003e\u003ccode\u003e@​aadsm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ecompat_names\u003c/code\u003e leaking the internal \u003ccode\u003ecp932\u003c/code\u003e codec name; \u003ccode\u003edetect()\u003c/code\u003e now returns \u003ccode\u003eCP932\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/375\"\u003e#375\u003c/a\u003e, thanks \u003ca href=\"https://github.com/uttam12331\"\u003e\u003ccode\u003e@​uttam12331\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/chardet/chardet/blob/main/docs/changelog.rst\"\u003echardet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.6.0 (2026-08-14)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003ePerformance:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCompiled wheels now score bigram profiles through a small Cython\nkernel alongside mypyc, and the pair is 4.7x faster than the pure\nwheel on CPython 3.14.  \u003ccode\u003e_kernel.py\u003c/code\u003e stays plain Python (PyPy and\npure wheels run it interpreted, unchanged), \u003ccode\u003e_kernel.pxd\u003c/code\u003e adds C\ntypes at build time and ships nothing, and detection output is\nbit-identical.  The kernel declares itself safe without the GIL, so\nfree-threaded CPython scales instead of silently re-enabling the GIL\non import: 3.14t runs the whole suite in ~340ms across 8 threads,\nthe fastest configuration measured.  Compiled builds now need both\nhooks::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eHATCH_BUILD_HOOK_ENABLE_MYPYC=true HATCH_BUILD_HOOK_ENABLE_CUSTOM=true uv build\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for CPython 3.15, including the free-threaded build.\nNo code changes were needed.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug Fixes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed delimited ASCII data like \u003ccode\u003e|NAME,+LAY|\u003c/code\u003e misdetecting as\nUTF-7, a follow-up to \u003ccode\u003e[#371](https://github.com/chardet/chardet/issues/371) \u0026lt;https://github.com/chardet/chardet/issues/371\u0026gt;\u003c/code\u003e\u003cem\u003e.  Two new checks:\nthe whole buffer must actually decode as UTF-7 (\u003ccode\u003e+|\u003c/code\u003e is an illegal\nshift, so tabular data fails immediately), and a block encoding a\nsingle code unit must land in a script range where a lone shifted\ncharacter plausibly occurs.  \u003ccode\u003e+LAY\u003c/code\u003e decodes to U+2C06, Glagolitic;\nno genuine lone block in the corpus lands anywhere like it, while em\ndashes, ellipses, kanji, and accented letters all pass.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003c/em\u003e via Claude)\u003c/li\u003e\n\u003cli\u003eSigned UTF-7 no longer reads as ASCII.  The BOM stage recognizes the\nfour UTF-7 signature prefixes (\u003ccode\u003e+/v8-\u003c/code\u003e and friends) when the rest\nof the buffer decodes as UTF-7 --- the prefix alone is ordinary ASCII\n(a diff of V8 source paths starts with \u003ccode\u003e+/v8\u003c/code\u003e).  This is a\ndeliberate divergence from WHATWG's browser-security exclusion of\nUTF-7: chardet already detects the unsigned form, so refusing only\nthe signed one made no sense.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edetect()\u003c/code\u003e no longer returns an encoding that cannot decode the\ninput it was given\n(\u003ccode\u003e[#380](https://github.com/chardet/chardet/issues/380) \u0026lt;https://github.com/chardet/chardet/issues/380\u0026gt;\u003c/code\u003e_).  When the\nwhole input has been examined and the winner's only multi-byte\nevidence is an incomplete trailing sequence, the best candidate that\ndecodes the input completely wins instead.  Genuinely truncated data\nkeeps its answer: CJK cut mid-character, or input sliced at\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/...\n\n_Description has been truncated_","html_url":"https://github.com/DDD-Enterprises/dopemux-mvp/pull/1398","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DDD-Enterprises%2Fdopemux-mvp/issues/1398","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1398/packages"},{"uuid":"5686723489","node_id":"PR_kwDOPyIw988AAAABGZWeSA","number":1396,"state":"closed","title":"deps(deps): bump the python-minor-patch group across 1 directory with 43 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T06:34:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-03T05:01:42.000Z","updated_at":"2026-10-03T06:34:15.000Z","time_to_close":5551,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): bump","group_name":"python-minor-patch","update_count":43,"packages":[{"name":"readchar","old_version":"4.2.1","new_version":"4.2.2","repository_url":"https://github.com/magmax/python-readchar"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"docker","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/docker/docker-py"},{"name":"litellm","old_version":"1.85.1","new_version":"1.103.1","repository_url":"https://github.com/BerriAI/litellm"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.54.0"},{"name":"chardet","old_version":"7.4.0.post2","new_version":"7.6.0","repository_url":"https://github.com/chardet/chardet"},{"name":"numpy","old_version":"2.4.4","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"pandas","old_version":"3.0.1","new_version":"3.0.6","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"markdown","old_version":"3.10.2","new_version":"3.11","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"pdfplumber","old_version":"0.11.9","new_version":"0.11.10","repository_url":"https://github.com/jsvine/pdfplumber"},{"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":"pytest-mock","old_version":"3.15.1","new_version":"3.16.0","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"ruff","old_version":"0.14.14","new_version":"0.16.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"semgrep","old_version":"1.166.0","new_version":"1.179.0","repository_url":"https://github.com/semgrep/semgrep"},{"name":"dopetask","old_version":"0.5.1","new_version":"0.5.7","repository_url":"https://github.com/DDD-Enterprises/dopeTask"},{"name":"tree-sitter","old_version":"0.25.2","new_version":"0.26.0","repository_url":"https://github.com/tree-sitter/py-tree-sitter"},{"name":"tree-sitter-python","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-python"},{"name":"tree-sitter-javascript","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-javascript"},{"name":"tree-sitter-typescript","old_version":"0.23.0","new_version":"0.23.2","repository_url":"https://github.com/tree-sitter/tree-sitter-typescript"},{"name":"tree-sitter-go","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-go"},{"name":"tree-sitter-rust","old_version":"0.23.0","new_version":"0.24.2","repository_url":"https://github.com/tree-sitter/tree-sitter-rust"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyjwt","old_version":"2.15.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"qdrant-client","old_version":"1.17.1","new_version":"1.19.1","repository_url":"https://github.com/qdrant/qdrant-client"},{"name":"pymupdf","old_version":"1.27.2.2","new_version":"1.28.2","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"beautifulsoup4","old_version":"4.14.3","new_version":"4.15.0"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"python-multipart","old_version":"0.0.31","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.13","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"alembic","old_version":"1.18.4","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pytz","old_version":"2026.1.post1","new_version":"2026.4","repository_url":"https://github.com/stub42/pytz"},{"name":"orjson","old_version":"3.11.7","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"msgpack","old_version":"1.2.1","new_version":"1.2.3","repository_url":"https://github.com/msgpack/msgpack-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 43 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [readchar](https://github.com/magmax/python-readchar) | `4.2.1` | `4.2.2` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [docker](https://github.com/docker/docker-py) | `7.1.0` | `7.2.0` |\n| [litellm](https://github.com/BerriAI/litellm) | `1.85.1` | `1.103.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.54.0` |\n| [chardet](https://github.com/chardet/chardet) | `7.4.0.post2` | `7.6.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.4` | `2.4.6` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `3.0.1` | `3.0.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.2` | `3.11` |\n| [pdfplumber](https://github.com/jsvine/pdfplumber) | `0.11.9` | `0.11.10` |\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| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.1` | `3.16.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.14` | `0.16.9` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.2` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n| [semgrep](https://github.com/semgrep/semgrep) | `1.166.0` | `1.179.0` |\n| [dopetask](https://github.com/DDD-Enterprises/dopeTask) | `0.5.1` | `0.5.7` |\n| [tree-sitter](https://github.com/tree-sitter/py-tree-sitter) | `0.25.2` | `0.26.0` |\n| [tree-sitter-python](https://github.com/tree-sitter/tree-sitter-python) | `0.23.0` | `0.25.0` |\n| [tree-sitter-javascript](https://github.com/tree-sitter/tree-sitter-javascript) | `0.23.0` | `0.25.0` |\n| [tree-sitter-typescript](https://github.com/tree-sitter/tree-sitter-typescript) | `0.23.0` | `0.23.2` |\n| [tree-sitter-go](https://github.com/tree-sitter/tree-sitter-go) | `0.23.0` | `0.25.0` |\n| [tree-sitter-rust](https://github.com/tree-sitter/tree-sitter-rust) | `0.23.0` | `0.24.2` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.26.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.15.0` | `2.15.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [qdrant-client](https://github.com/qdrant/qdrant-client) | `1.17.1` | `1.19.1` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.27.2.2` | `1.28.2` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.31` | `0.0.32` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.13` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.20.0` |\n| [pytz](https://github.com/stub42/pytz) | `2026.1.post1` | `2026.4` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.12.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.3` |\n\n\nUpdates `readchar` from 4.2.1 to 4.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/magmax/python-readchar/releases\"\u003ereadchar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix pytest 9 compatibility by \u003ca href=\"https://github.com/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd android as supported platform by \u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\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/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ehttps://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/05faadbfd883e80fe8e3ff1f8da97471a3b85262\"\u003e\u003ccode\u003e05faadb\u003c/code\u003e\u003c/a\u003e release v4.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/a9f2384ae26520a9456673b73c05944aae8fd2ca\"\u003e\u003ccode\u003ea9f2384\u003c/code\u003e\u003c/a\u003e Add android as supported platform (\u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/130\"\u003e#130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/753cb421b5a2cbe3601b1923992ac8b4985839a1\"\u003e\u003ccode\u003e753cb42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/129\"\u003e#129\u003c/a\u003e from mweinelt/pytest9-compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/5165992002f211fe85175bcbb4f9a60d5e90fdac\"\u003e\u003ccode\u003e5165992\u003c/code\u003e\u003c/a\u003e Fix pytest 9 compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/2204f05e47b7e5c6209a49dfde0ad64938e439a5\"\u003e\u003ccode\u003e2204f05\u003c/code\u003e\u003c/a\u003e increment version after release\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.0 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.33.0...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\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/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docker` from 7.1.0 to 7.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/docker/docker-py/releases\"\u003edocker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.2.0\u003c/h2\u003e\n\u003ch2\u003eUpgrade Notes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edocker.from_env()\u003c/code\u003e now honors the active Docker CLI context when \u003ccode\u003eDOCKER_HOST\u003c/code\u003e is not set.\n\u003cul\u003e\n\u003cli\u003eThis means the client may connect to the daemon selected by \u003ccode\u003eDOCKER_CONTEXT\u003c/code\u003e or the current context in \u003ccode\u003e~/.docker/config.json\u003c/code\u003e, matching Docker CLI behavior more closely.\u003c/li\u003e\n\u003cli\u003eIf your application relied on the previous default connection behavior, set \u003ccode\u003eDOCKER_HOST\u003c/code\u003e explicitly, set \u003ccode\u003eDOCKER_CONTEXT=default\u003c/code\u003e, or pass \u003ccode\u003euse_context=False\u003c/code\u003e to \u003ccode\u003eDockerClient.from_env()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003edocker.from_context()\u003c/code\u003e / \u003ccode\u003eDockerClient.from_context()\u003c/code\u003e for explicitly creating a client from a Docker CLI context.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Docker contexts when creating the default client\u003c/li\u003e\n\u003cli\u003eAdded subpath support for volumes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eexec_run\u003c/code\u003e documentation for the \u003ccode\u003estream\u003c/code\u003e parameter\u003c/li\u003e\n\u003cli\u003eFixed image loading to avoid depending on the deprecated \u003ccode\u003eJSONMessage.error\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003ePreserved the rotated unlock key in swarm integration tests\u003c/li\u003e\n\u003cli\u003eFixed SSL certificate generation in tests\u003c/li\u003e\n\u003cli\u003eFixed IPv6 integration tests by explicitly enabling IPv6 where required\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated tests for newer Docker Engine behavior\u003c/li\u003e\n\u003cli\u003eCI and build updates\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003etests/exec: expect 127 exit code for missing executable by \u003ca href=\"https://github.com/laurazard\"\u003e\u003ccode\u003e@​laurazard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3290\"\u003edocker/docker-py#3290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efixing doc for stream param in exec_run by \u003ca href=\"https://github.com/yasonk\"\u003e\u003ccode\u003e@​yasonk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3292\"\u003edocker/docker-py#3292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump default API version to 1.45 (Moby 26.0/26.1) by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3261\"\u003edocker/docker-py#3261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet a dummy-version if none set, and remove unused APT_MIRROR build-arg by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3267\"\u003edocker/docker-py#3267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_service_logs: stop testing experimental versions by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/2442\"\u003edocker/docker-py#2442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMakefile: fix circular reference for integration-dind by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3297\"\u003edocker/docker-py#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eimage load: don't depend on deprecated JSONMessage.error field by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3307\"\u003edocker/docker-py#3307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration: test_create_volume_invalid_driver allow either 400 or 404 by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3296\"\u003edocker/docker-py#3296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration: adjust tests for omitted \u0026quot;OnBuild\u0026quot; by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3336\"\u003edocker/docker-py#3336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement Subpath Support for Volumes in Docker-Py (\u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3243\"\u003e#3243\u003c/a\u003e) by \u003ca href=\"https://github.com/Khushiyant\"\u003e\u003ccode\u003e@​Khushiyant\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3270\"\u003edocker/docker-py#3270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix ssl generation by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3365\"\u003edocker/docker-py#3365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest/integration: don't check for deprecated Networks field by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3362\"\u003edocker/docker-py#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: Skip from_env_unix tests if DOCKER_HOST is network socket by \u003ca href=\"https://github.com/ricardobranco777\"\u003e\u003ccode\u003e@​ricardobranco777\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3366\"\u003edocker/docker-py#3366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_connect_with_ipv6_address: enable IPv6 by \u003ca href=\"https://github.com/robmry\"\u003e\u003ccode\u003e@​robmry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3372\"\u003edocker/docker-py#3372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_create_with_ipv6_address: enable IPv6 by \u003ca href=\"https://github.com/robmry\"\u003e\u003ccode\u003e@​robmry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3373\"\u003edocker/docker-py#3373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: Migrate off gpg2 and regenerate key ed25519 by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3399\"\u003edocker/docker-py#3399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003egha: Pin to digests by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3408\"\u003edocker/docker-py#3408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests on non-amd64 hosts and add ARM64 CI by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3407\"\u003edocker/docker-py#3407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration/swarm: Preserve rotated unlock key by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3410\"\u003edocker/docker-py#3410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DKP-2535] Honour context if present for default client, add contexts support by \u003ca href=\"https://github.com/ebriney\"\u003e\u003ccode\u003e@​ebriney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3401\"\u003edocker/docker-py#3401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: 7.2.0 changelog by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3415\"\u003edocker/docker-py#3415\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/laurazard\"\u003e\u003ccode\u003e@​laurazard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3290\"\u003edocker/docker-py#3290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yasonk\"\u003e\u003ccode\u003e@​yasonk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3292\"\u003edocker/docker-py#3292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ricardobranco777\"\u003e\u003ccode\u003e@​ricardobranco777\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3366\"\u003edocker/docker-py#3366\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/docker/docker-py/commit/5ad5327fba623897ee9a527d7eee1b01703e0726\"\u003e\u003ccode\u003e5ad5327\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3415\"\u003e#3415\u003c/a\u003e from vvoland/update-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/d2422303703cf33f604018d0601d8e4b71a2131e\"\u003e\u003ccode\u003ed242230\u003c/code\u003e\u003c/a\u003e docs: 7.2.0 changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/ba01cc7291a00a96260792c27046cfaedd9a61dc\"\u003e\u003ccode\u003eba01cc7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3401\"\u003e#3401\u003c/a\u003e from ebriney/client-from-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/ae5dfe9111b1f4e9fafd4107a8ac4a3fa52644dc\"\u003e\u003ccode\u003eae5dfe9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3410\"\u003e#3410\u003c/a\u003e from vvoland/fix-flaky\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/aa999998eded49919086be7fc4448f5dc9eac689\"\u003e\u003ccode\u003eaa99999\u003c/code\u003e\u003c/a\u003e integration/swarm: Preserve rotated unlock key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/059d371b576b9f324a16753e2a775b1f7731b6d0\"\u003e\u003ccode\u003e059d371\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3407\"\u003e#3407\u003c/a\u003e from vvoland/fix-arm64\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/9b4b9b8461966e5b54638490e66c91e45f25ea19\"\u003e\u003ccode\u003e9b4b9b8\u003c/code\u003e\u003c/a\u003e gha: Add arm64 integration CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/9e9f8ff315fe405d7f7e89b394d6269217c51dfe\"\u003e\u003ccode\u003e9e9f8ff\u003c/code\u003e\u003c/a\u003e Skip tests incompatible with host architecture\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/e0542d9ee4b564822722a3c49d9948484ffb37bc\"\u003e\u003ccode\u003ee0542d9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3408\"\u003e#3408\u003c/a\u003e from vvoland/gha-pin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/578a11dd65e167b0421b9f9af143635ce93abe83\"\u003e\u003ccode\u003e578a11d\u003c/code\u003e\u003c/a\u003e gha: Pin to digests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/docker/docker-py/compare/7.1.0...7.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `litellm` from 1.85.1 to 1.103.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/BerriAI/litellm/releases\"\u003elitellm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.103.1\u003c/h2\u003e\n\u003ch2\u003eVerify Docker Image Signature\u003c/h2\u003e\n\u003cp\u003eAll LiteLLM Docker images are signed with \u003ca href=\"https://docs.sigstore.dev/cosign/overview/\"\u003ecosign\u003c/a\u003e. Every release is signed with the same key introduced in \u003ca href=\"https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0\"\u003ecommit \u003ccode\u003e0112e53\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the pinned commit hash (recommended):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eA commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the release tag (convenience):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eTags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.103.1/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eExpected output:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eThe following checks were performed on each of these signatures:\n  - The cosign claims were validated\n  - The signatures were verified against the specified public key\n\u003c/code\u003e\u003c/pre\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/BerriAI/litellm/compare/v1.103.0...v1.103.1\"\u003ehttps://github.com/BerriAI/litellm/compare/v1.103.0...v1.103.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.103.0\u003c/h2\u003e\n\u003ch2\u003eVerify Docker Image Signature\u003c/h2\u003e\n\u003cp\u003eAll LiteLLM Docker images are signed with \u003ca href=\"https://docs.sigstore.dev/cosign/overview/\"\u003ecosign\u003c/a\u003e. Every release is signed with the same key introduced in \u003ca href=\"https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0\"\u003ecommit \u003ccode\u003e0112e53\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the pinned commit hash (recommended):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eA commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.0\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/580bde9a2d148714889ec1c04a9872819e78a778\"\u003e\u003ccode\u003e580bde9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/13\"\u003e#13\u003c/a\u003e from BerriAI/litellm_session_token_1_103_x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/d3bf0066132899ca86fce126a11f4c133d9a74c8\"\u003e\u003ccode\u003ed3bf006\u003c/code\u003e\u003c/a\u003e chore(lint): scope a TRY004 suppression to the bearer-token salt key check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/a80eacacee118fbed54e3d98f239d17a63fac818\"\u003e\u003ccode\u003ea80eaca\u003c/code\u003e\u003c/a\u003e refactor(auth): bind UI/CLI session tokens to their own AES-GCM context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/e7d8bbc5deb36c960162d4ce3922985fe56db835\"\u003e\u003ccode\u003ee7d8bbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/6\"\u003e#6\u003c/a\u003e from BerriAI/litellm_bump_1_103_1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/bf02f06913c06fe41459f529f3511a32305f16d4\"\u003e\u003ccode\u003ebf02f06\u003c/code\u003e\u003c/a\u003e bump: litellm 1.103.0 -\u0026gt; 1.103.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/c991f4b01f5799eb0b0cab0fb63988e15c3a8a9d\"\u003e\u003ccode\u003ec991f4b\u003c/code\u003e\u003c/a\u003e fix(proxy): unregister logging callbacks removed from the stored config (\u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43429\"\u003e#43429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/cc111d1ae57fbd4d6c0c2fbd4772fe00460da215\"\u003e\u003ccode\u003ecc111d1\u003c/code\u003e\u003c/a\u003e fix(streaming): backport text-completion usage fix and e2e provider-flake tol...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/4dbbe6eddd1820fdf9f6a2914fb3f03633777988\"\u003e\u003ccode\u003e4dbbe6e\u003c/code\u003e\u003c/a\u003e test(ci): fix the e2e and integration reds left on rc/1.103.0 after \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43382\"\u003e#43382\u003c/a\u003e an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/8aca86a571bd67edcfb34180106a2636b3a4dbfc\"\u003e\u003ccode\u003e8aca86a\u003c/code\u003e\u003c/a\u003e test(e2e): clear the two rc/1.103.0 e2e reds owned by upstream providers (\u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43\"\u003e#43\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/e640c0eb4155f40a1bcecb3dc6a8ddc81b030080\"\u003e\u003ccode\u003ee640c0e\u003c/code\u003e\u003c/a\u003e test(integration): make rc/1.103.0 integration groups collect and pass again ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/BerriAI/litellm/compare/v1.85.1...v1.103.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn[standard]` from 0.38.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\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.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\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.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.38.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 7.4.0.post2 to 7.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.6.0\u003c/h2\u003e\n\u003cp\u003eBig release: a Cython scoring kernel joins mypyc in compiled wheels, every model retrained on a deduplicated corpus, UTF-7 fixed in both directions, and a guarantee that \u003ccode\u003edetect()\u003c/code\u003e never returns an encoding that can't decode your complete input.\u003c/p\u003e\n\u003ch2\u003ePerformance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCompiled wheels now score bigram profiles through a small Cython kernel alongside mypyc, and the pair is 4.7x faster than the pure wheel on CPython 3.14. \u003ccode\u003e_kernel.py\u003c/code\u003e stays plain Python (PyPy and pure wheels run it interpreted, unchanged), and detection output is bit-identical. The kernel declares itself safe without the GIL, so free-threaded CPython scales instead of silently re-enabling the GIL on import: 3.14t runs the whole suite in ~340ms across 8 threads, the fastest configuration measured. Compiled builds now need both hooks: \u003ccode\u003eHATCH_BUILD_HOOK_ENABLE_MYPYC=true HATCH_BUILD_HOOK_ENABLE_CUSTOM=true\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdded support for CPython 3.15, including the free-threaded build. No code changes were needed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edetect()\u003c/code\u003e no longer returns an encoding that cannot decode the input it was given (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/380\"\u003e#380\u003c/a\u003e, thanks \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e). When the whole input has been examined and the winner's only multi-byte evidence is an incomplete trailing sequence, the best candidate that decodes the input completely wins instead. Genuinely truncated data keeps its answer.\u003c/li\u003e\n\u003cli\u003eFixed delimited ASCII data like \u003ccode\u003e|NAME,+LAY|\u003c/code\u003e misdetecting as UTF-7 (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/371\"\u003e#371\u003c/a\u003e follow-up, thanks \u003ca href=\"https://github.com/agreenburg\"\u003e\u003ccode\u003e@​agreenburg\u003c/code\u003e\u003c/a\u003e). The whole buffer must now actually decode as UTF-7, and a lone shifted character must land in a plausible script range.\u003c/li\u003e\n\u003cli\u003eSigned UTF-7 no longer reads as ASCII: the BOM stage recognizes the four UTF-7 signature prefixes when the rest of the buffer decodes as UTF-7.\u003c/li\u003e\n\u003cli\u003eFixed short apostrophe-heavy English being labeled Scottish Gaelic or Breton: a rare-language label on an input under 128 bytes now needs a 0.03 lead over the best mainstream language (ADR-0005).\u003c/li\u003e\n\u003cli\u003eFixed Hungarian text losing to a Czech reading in confusion rescoring; tied pairs are compared only under language models both encodings have.\u003c/li\u003e\n\u003cli\u003eFixed space-padded text matching a degenerate Serbian model at high confidence; statistical scoring now skips repeated-whitespace bigrams. This also fixes windows-1251 logs misdetecting as windows-1250 (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/379\"\u003e#379\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed EBCDIC text being invisible to the early pipeline stages, and the last two EBCDIC sibling misdetections.\u003c/li\u003e\n\u003cli\u003eFixed training normalization gaps that starved ISO-8859-16 and the 26 pre-euro encodings at exactly their distinguishing bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRetrained every bigram model on a refreshed, deduplicated corpus with training provenance now recorded per model.\u003c/li\u003e\n\u003cli\u003eNew ANSI-art model for cp437, trained on 16,621 text-mode art files from \u003ca href=\"https://16colo.rs/\"\u003e16colo.rs\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRare-language arbitration (ADR-0005): low-confidence statistical winners from languages with no documented legacy-encoding population yield to near-tied mainstream candidates.\u003c/li\u003e\n\u003cli\u003eConfusion-group resolution is context-aware: per-occurrence votes, word-shape demotions, art-model exemption.\u003c/li\u003e\n\u003cli\u003eStatistical dead heats no longer resolve by candidate enumeration order.\u003c/li\u003e\n\u003cli\u003eTraining pipeline hardening after a cache-loss post-mortem.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chardet/chardet/compare/7.5.1...7.6.0\"\u003ehttps://github.com/chardet/chardet/compare/7.5.1...7.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.5.1\u003c/h2\u003e\n\u003cp\u003ePatch release: three detection fixes found while benchmarking against charset-normalizer's char-dataset.\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed markup-declared encodings being reported under a name that can't decode the input. A page declaring \u003ccode\u003eShift_JIS\u003c/code\u003e but using CP932 extension characters (like ①) came back as \u003ccode\u003eSHIFT_JIS\u003c/code\u003e, which fails \u003ccode\u003e.decode()\u003c/code\u003e on those same bytes. Superset promotion (\u003ccode\u003eCP932\u003c/code\u003e, \u003ccode\u003eCP949\u003c/code\u003e) now always fires when the reported name can't decode the data but the superset can.\u003c/li\u003e\n\u003cli\u003eFixed a lying charset declaration beating genuine UTF-8 content. A UTF-8 page declaring \u003ccode\u003e\u0026lt;meta charset=\u0026quot;iso-8859-1\u0026quot;\u0026gt;\u003c/code\u003e came back as ISO-8859-1, which decodes to mojibake. Valid multi-byte UTF-8 now wins over a conflicting declaration.\u003c/li\u003e\n\u003cli\u003eFixed BOM-less UTF-16 byte-order detection for pure-CJK text: short Chinese UTF-16 samples came back with reversed endianness at full confidence. Byte order is now chosen by decoding both ways and comparing text quality.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chardet/chardet/compare/7.5.0...7.5.1\"\u003ehttps://github.com/chardet/chardet/compare/7.5.0...7.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.5.0\u003c/h2\u003e\n\u003cp\u003eAccuracy and speed release: truncation-proof byte validity, statistical pruning worth ~2.9x, and half the peak memory.\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed multi-byte encodings being eliminated when the input ends in an incomplete character. Byte-validity filtering used a one-shot strict decode, which cannot tell a truncated tail from corrupt data, so a single dangling lead byte dropped every CJK candidate and the result came down to input-length parity. Also reachable on complete files through chardet's own \u003ccode\u003emax_bytes\u003c/code\u003e and \u003ccode\u003e_SCAN_LIMIT\u003c/code\u003e slicing. Validity checks now decode incrementally with \u003ccode\u003efinal=False\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/376\"\u003e#376\u003c/a\u003e, thanks \u003ca href=\"https://github.com/aadsm\"\u003e\u003ccode\u003e@​aadsm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ecompat_names\u003c/code\u003e (the default) leaking internal Python codec names for seven encodings (\u003ccode\u003eISO-8859-2\u003c/code\u003e, \u003ccode\u003eISO-8859-6\u003c/code\u003e, \u003ccode\u003eISO-8859-13\u003c/code\u003e, \u003ccode\u003eWindows-1250\u003c/code\u003e, \u003ccode\u003eWindows-1256\u003c/code\u003e, \u003ccode\u003eWindows-1257\u003c/code\u003e, \u003ccode\u003eCP874\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/374\"\u003e#374\u003c/a\u003e, thanks \u003ca href=\"https://github.com/aadsm\"\u003e\u003ccode\u003e@​aadsm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ecompat_names\u003c/code\u003e leaking the internal \u003ccode\u003ecp932\u003c/code\u003e codec name; \u003ccode\u003edetect()\u003c/code\u003e now returns \u003ccode\u003eCP932\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/375\"\u003e#375\u003c/a\u003e, thanks \u003ca href=\"https://github.com/uttam12331\"\u003e\u003ccode\u003e@​uttam12331\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/chardet/chardet/blob/main/docs/changelog.rst\"\u003echardet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.6.0 (2026-08-14)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003ePerformance:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCompiled wheels now score bigram profiles through a small Cython\nkernel alongside mypyc, and the pair is 4.7x faster than the pure\nwheel on CPython 3.14.  \u003ccode\u003e_kernel.py\u003c/code\u003e stays plain Python (PyPy and\npure wheels run it interpreted, unchanged), \u003ccode\u003e_kernel.pxd\u003c/code\u003e adds C\ntypes at build time and ships nothing, and detection output is\nbit-identical.  The kernel declares itself safe without the GIL, so\nfree-threaded CPython scales instead of silently re-enabling the GIL\non import: 3.14t runs the whole suite in ~340ms across 8 threads,\nthe fastest configuration measured.  Compiled builds now need both\nhooks::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eHATCH_BUILD_HOOK_ENABLE_MYPYC=true HATCH_BUILD_HOOK_ENABLE_CUSTOM=true uv build\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for CPython 3.15, including the free-threaded build.\nNo code changes were needed.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug Fixes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed delimited ASCII data like \u003ccode\u003e|NAME,+LAY|\u003c/code\u003e misdetecting as\nUTF-7, a follow-up to \u003ccode\u003e[#371](https://github.com/chardet/chardet/issues/371) \u0026lt;https://github.com/chardet/chardet/issues/371\u0026gt;\u003c/code\u003e\u003cem\u003e.  Two new checks:\nthe whole buffer must actually decode as UTF-7 (\u003ccode\u003e+|\u003c/code\u003e is an illegal\nshift, so tabular data fails immediately), and a block encoding a\nsingle code unit must land in a script range where a lone shifted\ncharacter plausibly occurs.  \u003ccode\u003e+LAY\u003c/code\u003e decodes to U+2C06, Glagolitic;\nno genuine lone block in the corpus lands anywhere like it, while em\ndashes, ellipses, kanji, and accented letters all pass.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003c/em\u003e via Claude)\u003c/li\u003e\n\u003cli\u003eSigned UTF-7 no longer reads as ASCII.  The BOM stage recognizes the\nfour UTF-7 signature prefixes (\u003ccode\u003e+/v8-\u003c/code\u003e and friends) when the rest\nof the buffer decodes as UTF-7 --- the prefix alone is ordinary ASCII\n(a diff of V8 source paths starts with \u003ccode\u003e+/v8\u003c/code\u003e).  This is a\ndeliberate divergence from WHATWG's browser-security exclusion of\nUTF-7: chardet already detects the unsigned form, so refusing only\nthe signed one made no sense.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edetect()\u003c/code\u003e no longer returns an encoding that cannot decode the\ninput it was given\n(\u003ccode\u003e[#380](https://github.com/chardet/chardet/issues/380) \u0026lt;https://github.com/chardet/chardet/issues/380\u0026gt;\u003c/code\u003e_).  When the\nwhole input has been examined and the winner's only multi-byte\nevidence is an incomplete trailing sequence, the best candidate that\ndecodes the input completely wins instead.  Genuinely truncated data\nkeeps its answer: CJK cut mid-character, or input sliced at\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csumma...\n\n_Description has been truncated_","html_url":"https://github.com/DDD-Enterprises/dopemux-mvp/pull/1396","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DDD-Enterprises%2Fdopemux-mvp/issues/1396","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1396/packages"},{"uuid":"5686382697","node_id":"PR_kwDOK5PfP88AAAABGZFfLw","number":188,"state":"open","title":"chore(deps-dev): bump flake8 from 7.4.0 to 7.4.1","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-10-03T04:02:58.000Z","updated_at":"2026-10-03T04:03:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"flake8","old_version":"7.4.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.4.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.4.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.4.0\u0026new-version=7.4.1)](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/BrianLusina/pymaze/pull/188","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianLusina%2Fpymaze/issues/188","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/188/packages"},{"uuid":"5684929251","node_id":"PR_kwDOP0QzTs8AAAABGX9GVw","number":245,"state":"closed","title":"chore(deps)(deps): update flake8 requirement from ~=7.4.0 to ~=7.4.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T00:04:02.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-03T00:03:49.000Z","updated_at":"2026-10-03T00:04:04.000Z","time_to_close":13,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): update","packages":[{"name":"flake8","old_version":"~=7.4.0","new_version":"~=7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [flake8](https://github.com/pycqa/flake8) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.4.0...7.4.1\"\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/Kento-E/stock-report/pull/245","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kento-E%2Fstock-report/issues/245","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/245/packages"},{"uuid":"5676462049","node_id":"PR_kwDOFzracs8AAAABGRMW-w","number":2177,"state":"open","title":"chore(deps-dev): bump flake8 from 7.3.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-02T11:00:38.000Z","updated_at":"2026-10-02T11:03:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.3.0\u0026new-version=7.4.1)](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/paruff/fawkes/pull/2177","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paruff%2Ffawkes/issues/2177","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2177/packages"},{"uuid":"5672422420","node_id":"PR_kwDOQeUekM8AAAABGOAo8A","number":202,"state":"open","title":"chore(deps-dev): bump flake8 from 7.3.0 to 7.4.1","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-10-02T03:23:16.000Z","updated_at":"2026-10-02T03:25:23.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.3.0\u0026new-version=7.4.1)](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/vil02/adv_2025/pull/202","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vil02%2Fadv_2025/issues/202","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/202/packages"},{"uuid":"5669938434","node_id":"PR_kwDOHpcma88AAAABGMDxDw","number":303,"state":"open","title":"chore(deps): Bump the python-development group across 1 directory with 6 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-01T22:14:29.000Z","updated_at":"2026-10-01T22:15:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"python-development","update_count":6,"packages":[{"name":"coverage","old_version":"7.14.3","new_version":"7.16.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"isort","old_version":"8.0.1","new_version":"9.0.1","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"tox","old_version":"4.56.0","new_version":"4.64.2","repository_url":"https://github.com/tox-dev/tox"},{"name":"twine","old_version":"6.2.0","new_version":"7.0.0","repository_url":"https://github.com/pypa/twine"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-development group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.14.3` | `7.16.1` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [isort](https://github.com/PyCQA/isort) | `8.0.1` | `9.0.1` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |\n| [tox](https://github.com/tox-dev/tox) | `4.56.0` | `4.64.2` |\n| [twine](https://github.com/pypa/twine) | `6.2.0` | `7.0.0` |\n\n\nUpdates `coverage` from 7.14.3 to 7.16.1\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.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\u003cli\u003ePerformance improvement in HTML reporting by reducing the number of times files have to be parsed, thanks to \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2240\"\u003eKevin Turcios\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.15.3\"\u003ecoverage 7.15.3\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.15.3\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.15.2\u003c/h2\u003e\n\u003ch2\u003eVersion 7.15.2 — 2026-07-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: one of the performance improvements in 7.15.1 (pull 2215) dramatically increased memory use during reporting for large projects. Now we use a different approach that is both faster and slimmer than 7.15.0. Fixes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2229\"\u003eissue 2229\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.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\npath when it was only meant to be replaced once, in the leading portion of\nthe path. This is now fixed, in \u003ccode\u003epull 2268\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes to validation of options and configuration settings:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNegative precision settings now always cause useful error messages (\u003ccode\u003epull 2261\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\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 \u0026quot;Couldn't use data file ...:\nuser-defined function raised exception\u0026quot; error. Now it raises a proper\nconfiguration error naming the bad regex, like other regex settings do\n(\u003ccode\u003epull 2262\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNon-string values in TOML configuration settings now produce a helpful\nerror message instead of a traceback.  This affects list settings whose\nelements aren't strings (like \u003ccode\u003eomit\u003c/code\u003e, \u003ccode\u003eexclude_lines\u003c/code\u003e, or a \u003ccode\u003e[paths]\u003c/code\u003e\nentry), file settings like \u003ccode\u003edata_file\u003c/code\u003e, and any wrong-typed value in the\n\u003ccode\u003e[paths]\u003c/code\u003e section (\u003ccode\u003epull 2263\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ecoverage run\u003c/code\u003e refuses run-affecting command-line options like\n\u003ccode\u003e--branch\u003c/code\u003e alongside \u003ccode\u003e--concurrency=multiprocessing\u003c/code\u003e, since they can't\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ccbb99245dcb4e51a35087285499cdb22b164ccc\"\u003e\u003ccode\u003eccbb992\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/0697ccc9360cea85676076b935b076b020e3bcb1\"\u003e\u003ccode\u003e0697ccc\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/12f35958932173737ac451bdc33cdea2f3678917\"\u003e\u003ccode\u003e12f3595\u003c/code\u003e\u003c/a\u003e chore: bump docker/setup-qemu-action in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2280\"\u003e#2280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/35b58d3e83b2298dcb453e9356eb3f40e91a8db9\"\u003e\u003ccode\u003e35b58d3\u003c/code\u003e\u003c/a\u003e fix: CoverageData.update() can be called twice on an in-memory database. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003e#2279\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/92e1ce9b7bbcf69c3eccd2669e8c5edf0a4eba45\"\u003e\u003ccode\u003e92e1ce9\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2278\"\u003e#2278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bf0731046b4d8865ef61ccf3be0c573930468342\"\u003e\u003ccode\u003ebf07310\u003c/code\u003e\u003c/a\u003e build: quote var expansion (actionlint SC2086)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3c434f506ee01e14297802b704c4db87904914b3\"\u003e\u003ccode\u003e3c434f5\u003c/code\u003e\u003c/a\u003e quality: use shellcheck-py to get shellcheck in GitHub CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/632f39725595a765c8dbd6327fec867c06d8bec3\"\u003e\u003ccode\u003e632f397\u003c/code\u003e\u003c/a\u003e build: use .txt instead of .pip, even though it's a stupid extension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ffc6a4ad4447dfb52fe47d5110440cd6776431ab\"\u003e\u003ccode\u003effc6a4a\u003c/code\u003e\u003c/a\u003e test: only run diff-cover on pull requests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/33553b33cfbbc5c6afa5f49a033520b803d034d2\"\u003e\u003ccode\u003e33553b3\u003c/code\u003e\u003c/a\u003e fix: exclude the \u003ccode\u003ecase\u003c/code\u003e line when an irrefutable case body is excluded (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2269\"\u003e#2269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.14.3...7.16.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 8.0.1 to 9.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch2\u003e:beetle: Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore \u003ccode\u003epython -m isort\u003c/code\u003e by excluding \u003ccode\u003e__main__\u003c/code\u003e from mypyc compilation by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e with \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2643\"\u003ePyCQA/isort#2643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd changelog entries for last releases by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2641\"\u003ePyCQA/isort#2641\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/isort/compare/9.0.0...9.0.1\"\u003ehttps://github.com/PyCQA/isort/compare/9.0.0...9.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e9.0.0\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eisort\u003c/code\u003e \u003ccode\u003e9.0.0\u003c/code\u003e is the result of several alpha and beta releases, as well as a small number of fixes added after the last beta. For release notes for the individual alphas and betas we would like to refer to:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/releases/tag/9.0.0a2\"\u003e9.0.0a2\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/releases/tag/9.0.0a3\"\u003e9.0.0a3\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/releases/tag/9.0.0b1\"\u003e9.0.0b1\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/releases/tag/9.0.0b2\"\u003e9.0.0b2\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/releases/tag/9.0.0b5\"\u003e9.0.0b5\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003eSkipped version numbers are the result of changes to our release infrastructure that broke while creating the actual releases.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePlease find below the full release notes for version \u003ccode\u003e9.0.0\u003c/code\u003e, the newest release of \u003ccode\u003eisort\u003c/code\u003e after version \u003ccode\u003e8.0.1\u003c/code\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003ccode\u003eisort\u003c/code\u003e \u003ccode\u003e9.0.0\u003c/code\u003e contains some significant changes and improvements. Most notably there is now support for Python 3.15 and its \u003ccode\u003elazy\u003c/code\u003e imports and we have included several performance improvements as well as providing \u003ccode\u003emypyc\u003c/code\u003e compiled wheels for all major platforms and supported versions of Python. In our own tests we saw speeds ups of more than 2x and 3x times, but this is highly dependent on the codebase \u003ccode\u003eisort\u003c/code\u003e needs to inspect.\u003c/p\u003e\n\u003cp\u003eThe full list of changes is as follows:\u003c/p\u003e\n\u003ch2\u003e:boom: Breaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove logic for deprecated options (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2498\"\u003e#2498\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:rocket: Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSort lazy import statements (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2503\"\u003e#2503\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd initial support for Python 3.15 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2466\"\u003e#2466\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCompile with \u003ccode\u003emypyc\u003c/code\u003e by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2586\"\u003ePyCQA/isort#2586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache calls to \u003ccode\u003eposixpath.abspath\u003c/code\u003e by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2606\"\u003ePyCQA/isort#2606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsider private \u003ccode\u003estdlib\u003c/code\u003e modules to be \u003ccode\u003estdlib\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2295\"\u003e#2295\u003c/a\u003e) \u003ca href=\"https://github.com/devdanzin\"\u003e\u003ccode\u003e@​devdanzin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd CLI Flag for --forced-separate (\u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2367\"\u003ePyCQA/isort#2367\u003c/a\u003e) \u003ca href=\"https://github.com/hirak99\"\u003e\u003ccode\u003e@​hirak99\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd separate_packages option (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2313\"\u003e#2313\u003c/a\u003e) \u003ca href=\"https://github.com/alex-liang3\"\u003e\u003ccode\u003e@​alex-liang3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:beetle: Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix inline comment duplication across merged \u003ccode\u003efrom X import\u003c/code\u003e lines (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2499\"\u003e#2499\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix src glob patterns passed via CLI (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2497\"\u003e#2497\u003c/a\u003e) \u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix opening-line comment moving to alias attribute line on wrapped imports (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2491\"\u003e#2491\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix multi_line_output=3/5 ignored when wrapping single imports with inline comments (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2474\"\u003e#2474\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix false positive in \u003ccode\u003echeck_code\u003c/code\u003e when using \u003ccode\u003efloat_to_top\u003c/code\u003e + \u003ccode\u003eadd_imports\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2492\"\u003e#2492\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: preserve bare \u003ccode\u003e#\u003c/code\u003e inline comments on imports (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2488\"\u003e#2488\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\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/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eNOTE: isort follows the \u003ca href=\"https://semver.org/\"\u003esemver\u003c/a\u003e versioning standard.\nFind out more about isort's release policy \u003ca href=\"https://github.com/PyCQA/isort/blob/main/docs/major_releases/release_policy.md\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003ePlease find a complete overview of all releases\non \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eGithub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReleases\u003c/h2\u003e\n\u003ch3\u003eUnreleased\u003c/h3\u003e\n\u003ch3\u003e9.0.0 August 26 2026\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove logic for deprecated options (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2498\"\u003e#2498\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSort lazy import statements (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2503\"\u003e#2503\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd initial support for Python 3.15 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2466\"\u003e#2466\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCompile with \u003ccode\u003emypyc\u003c/code\u003e by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2586\"\u003ePyCQA/isort#2586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache calls to \u003ccode\u003eposixpath.abspath\u003c/code\u003e by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2606\"\u003ePyCQA/isort#2606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsider private \u003ccode\u003estdlib\u003c/code\u003e modules to be \u003ccode\u003estdlib\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2295\"\u003e#2295\u003c/a\u003e) \u003ca href=\"https://github.com/devdanzin\"\u003e\u003ccode\u003e@​devdanzin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd CLI Flag for --forced-separate (\u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2367\"\u003ePyCQA/isort#2367\u003c/a\u003e) \u003ca href=\"https://github.com/hirak99\"\u003e\u003ccode\u003e@​hirak99\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd separate_packages option (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2313\"\u003e#2313\u003c/a\u003e) \u003ca href=\"https://github.com/alex-liang3\"\u003e\u003ccode\u003e@​alex-liang3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix inline comment duplication across merged \u003ccode\u003efrom X import\u003c/code\u003e lines (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2499\"\u003e#2499\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix src glob patterns passed via CLI (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2497\"\u003e#2497\u003c/a\u003e) \u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix opening-line comment moving to alias attribute line on wrapped imports (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2491\"\u003e#2491\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix multi_line_output=3/5 ignored when wrapping single imports with inline comments (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2474\"\u003e#2474\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix false positive in \u003ccode\u003echeck_code\u003c/code\u003e when using \u003ccode\u003efloat_to_top\u003c/code\u003e + \u003ccode\u003eadd_imports\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2492\"\u003e#2492\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: preserve bare \u003ccode\u003e#\u003c/code\u003e inline comments on imports (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2488\"\u003e#2488\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix grouping of non-aliased imports when mixed with aliased imports from the same module (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2470\"\u003e#2470\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2500\"\u003ePyCQA/isort#2500\u003c/a\u003e: trusted publishing by \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2521\"\u003ePyCQA/isort#2521\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix git_hook lazy=True option by \u003ca href=\"https://github.com/sparrowt\"\u003e\u003ccode\u003e@​sparrowt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2542\"\u003ePyCQA/isort#2542\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHonor \u003ccode\u003e# isort: off/on/split\u003c/code\u003e during \u003ccode\u003efloat_to_top\u003c/code\u003e preprocessing with CRLF input by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e with \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2553\"\u003ePyCQA/isort#2553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix --sort-reexports crash with non-seekable streams (e.g. stdin) by \u003ca href=\"https://github.com/Abdu-Ahmed\"\u003e\u003ccode\u003e@​Abdu-Ahmed\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2547\"\u003ePyCQA/isort#2547\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix non-idempotent output with split_on_trailing_comma and a non-default wrap mode by \u003ca href=\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2554\"\u003ePyCQA/isort#2554\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix non-idempotent NOQA wrap mode with imports that carry their own comment by \u003ca href=\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2556\"\u003ePyCQA/isort#2556\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NOQA wrap mode accumulating spaces before the comment on each run by \u003ca href=\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2558\"\u003ePyCQA/isort#2558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NOQA not added to long imports in several output paths by \u003ca href=\"https://github.com/urayoru113\"\u003e\u003ccode\u003e@​urayoru113\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2568\"\u003ePyCQA/isort#2568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHonor \u003ccode\u003e# isort: skip\u003c/code\u003e when a \u003ccode\u003e__future__\u003c/code\u003e import is present (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2092\"\u003e#2092\u003c/a\u003e) by \u003ca href=\"https://github.com/apoorvdarshan\"\u003e\u003ccode\u003e@​apoorvdarshan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2574\"\u003ePyCQA/isort#2574\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: make sorted \u003ccode\u003e__all__\u003c/code\u003e and literals black-compatible (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2280\"\u003e#2280\u003c/a\u003e) by \u003ca href=\"https://github.com/lord-haffi\"\u003e\u003ccode\u003e@​lord-haffi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2576\"\u003ePyCQA/isort#2576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHonor skip comments when sorting reexports by \u003ca href=\"https://github.com/sakshichitnis27\"\u003e\u003ccode\u003e@​sakshichitnis27\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2581\"\u003ePyCQA/isort#2581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep aliased import when the plain name carries a comment by \u003ca href=\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2567\"\u003ePyCQA/isort#2567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't crash on --config-root without --resolve-all-configs by \u003ca href=\"https://github.com/Gooh456\"\u003e\u003ccode\u003e@​Gooh456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2597\"\u003ePyCQA/isort#2597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: check_code misses lines_before_imports-only changes (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2242\"\u003e#2242\u003c/a\u003e) by \u003ca href=\"https://github.com/gaoflow\"\u003e\u003ccode\u003e@​gaoflow\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2563\"\u003ePyCQA/isort#2563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix preservation of form-feed blank lines by \u003ca href=\"https://github.com/utkarshalpha\"\u003e\u003ccode\u003e@​utkarshalpha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2599\"\u003ePyCQA/isort#2599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall clean up and fix inconsistency in handling of \u003ccode\u003e*\u003c/code\u003e imports by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2619\"\u003ePyCQA/isort#2619\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix word-wrapping of 'from ... import *' into invalid Python (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2267\"\u003e#2267\u003c/a\u003e) by \u003ca href=\"https://github.com/sudorm-rf0\"\u003e\u003ccode\u003e@​sudorm-rf0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2624\"\u003ePyCQA/isort#2624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pylint disable-next comments at the start of imports by \u003ca href=\"https://github.com/Neallin-917\"\u003e\u003ccode\u003e@​Neallin-917\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2628\"\u003ePyCQA/isort#2628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep add_imports below a prefixed module docstring by \u003ca href=\"https://github.com/Eljees\"\u003e\u003ccode\u003e@​Eljees\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2626\"\u003ePyCQA/isort#2626\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd read the docs configuration (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2504\"\u003e#2504\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/131f4adcd5582bfc53928ab0d740eceb8b506b6c\"\u003e\u003ccode\u003e131f4ad\u003c/code\u003e\u003c/a\u003e Fix review typing and import order in CLI invocation test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/9491900490be659d5e600dfe403de6793eddfb8e\"\u003e\u003ccode\u003e9491900\u003c/code\u003e\u003c/a\u003e Test python -m isort invocation directly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/f0a2dca32371ba8f04af81939746cf3b03adb65a\"\u003e\u003ccode\u003ef0a2dca\u003c/code\u003e\u003c/a\u003e Fix python -m isort by excluding \u003cstrong\u003emain\u003c/strong\u003e from mypyc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/037c2b210d65e1702cdaff872ab5ca2db44fc12c\"\u003e\u003ccode\u003e037c2b2\u003c/code\u003e\u003c/a\u003e Add changelog entries for last releases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/727d119442a3cc9c4184e45e14c74759b811cdb8\"\u003e\u003ccode\u003e727d119\u003c/code\u003e\u003c/a\u003e Name the predicate and drive the prefix test off STRING_PREFIXES\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/dec76bce8e1075cb1263fe7fafeb0c512c38126d\"\u003e\u003ccode\u003edec76bc\u003c/code\u003e\u003c/a\u003e Fix multiline docstring style\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/cb179db220f169e0fe8b73ec977b7d4a06566969\"\u003e\u003ccode\u003ecb179db\u003c/code\u003e\u003c/a\u003e Keep add_imports below a prefixed module docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/7542f761c021e5737a171cf50780a7fe4c9116f3\"\u003e\u003ccode\u003e7542f76\u003c/code\u003e\u003c/a\u003e test: distinguish pylint disable-next comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/9f567676d3c67d4a17db90dbf65ccf317f886983\"\u003e\u003ccode\u003e9f56767\u003c/code\u003e\u003c/a\u003e Fix pylint disable-next comments at top of imports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0cba6f6111a07cc05b167008dda0727ecca907c5\"\u003e\u003ccode\u003e0cba6f6\u003c/code\u003e\u003c/a\u003e Delete .cruft.json\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/8.0.1...9.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 2.1.0 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/v2.1.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.56.0 to 4.64.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.64.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(run): keep .venv redirect off for a .venv env by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4091\"\u003etox-dev/tox#4091\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(run): point .venv at a deliberate dev env by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4092\"\u003etox-dev/tox#4092\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.64.1...4.64.2\"\u003ehttps://github.com/tox-dev/tox/compare/4.64.1...4.64.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.64.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(config): apply overrides to sections the file lacks by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4089\"\u003etox-dev/tox#4089\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.64.0...4.64.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.64.0...4.64.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.64.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: fix the TOML string substitution example by \u003ca href=\"https://github.com/agammann\"\u003e\u003ccode\u003e@​agammann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4081\"\u003etox-dev/tox#4081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore broken sphinx-llm release by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4083\"\u003etox-dev/tox#4083\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(type): narrow _emit_conf keys for ty 0.0.83 by \u003ca href=\"https://github.com/MohammedAlkindi\"\u003e\u003ccode\u003e@​MohammedAlkindi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4084\"\u003etox-dev/tox#4084\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(config): read the user config file as UTF-8 by \u003ca href=\"https://github.com/MohammedAlkindi\"\u003e\u003ccode\u003e@​MohammedAlkindi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4086\"\u003etox-dev/tox#4086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(ci): diff coverage against the PR base by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4088\"\u003etox-dev/tox#4088\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(config): write a PEP 832 .venv redirect file by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4013\"\u003etox-dev/tox#4013\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/agammann\"\u003e\u003ccode\u003e@​agammann\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4081\"\u003etox-dev/tox#4081\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.63.0...4.64.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.63.0...4.64.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.63.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(run): keep package env interrupt logs in parallel by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4079\"\u003etox-dev/tox#4079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(extras): dedupe static extras resolution and other copies by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4080\"\u003etox-dev/tox#4080\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.62.1...4.63.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.62.1...4.63.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.62.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003etest: skip POSIX-venv wheel-build tests on Windows by \u003ca href=\"https://github.com/iam-kira\"\u003e\u003ccode\u003e@​iam-kira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4078\"\u003etox-dev/tox#4078\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/tox-dev/tox/blob/main/docs/changelog.rst\"\u003etox's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBug fixes - 4.64.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA tox environment with \u003ccode\u003eenv_dir = \u0026quot;{tox_root}/.venv\u0026quot;\u003c/code\u003e no longer crashes with \u003ccode\u003eFileExistsError\u003c/code\u003e after another\nenvironment ran (:issue:\u003ccode\u003e4090\u003c/code\u003e) - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWith :ref:\u003ccode\u003evenv_redirect\u003c/code\u003e unset, the new default, tox writes the redirect file unless a tox environment lives at\n\u003ccode\u003e.venv\u003c/code\u003e; with \u003ccode\u003etrue\u003c/code\u003e, tox fails the run with an error naming that environment.\u003c/li\u003e\n\u003cli\u003etox deletes a redirect file it wrote where an environment should live, and fails the environment with an error\nnaming any other file there. (:issue:\u003ccode\u003e4091\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe :PEP:\u003ccode\u003e832\u003c/code\u003e \u003ccode\u003e.venv\u003c/code\u003e redirect file now names a deliberate development environment - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003etox picks :ref:\u003ccode\u003evenv_redirect_env\u003c/code\u003e, else an environment named \u003ccode\u003edev\u003c/code\u003e, else the first that installs the project in\ndevelopment mode, and writes nothing without one, so a project that uses tox for tests alone gets no file.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etox devenv\u003c/code\u003e points the redirect at the environment it creates, and later runs leave it in place.\u003c/li\u003e\n\u003cli\u003etox tells virtualenv to write no redirect file of its own beside the environments it builds. (:issue:\u003ccode\u003e4092\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.64.1 (2026-09-24)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eBug fixes - 4.64.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eApply \u003ccode\u003e-x\u003c/code\u003e/\u003ccode\u003e--override\u003c/code\u003e and \u003ccode\u003eTOX_OVERRIDE\u003c/code\u003e values that target a section the configuration file does not define,\nsuch as \u003ccode\u003etox.skip_missing_interpreters\u003c/code\u003e on a \u003ccode\u003etox.ini\u003c/code\u003e without a \u003ccode\u003e[tox]\u003c/code\u003e section, instead of dropping them - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e4089\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.64.0 (2026-09-24)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eFeatures - 4.64.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePoint a :PEP:\u003ccode\u003e832\u003c/code\u003e \u003ccode\u003e.venv\u003c/code\u003e redirect file at a tox environment after each run, so editors such as VS Code or PyCharm\npick it as the project interpreter instead of asking you for a path under \u003ccode\u003e.tox\u003c/code\u003e - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003etox picks an environment named \u003ccode\u003edev\u003c/code\u003e, then one installing the project in development mode, then the first of\n:ref:\u003ccode\u003eenv_list\u003c/code\u003e; set :ref:\u003ccode\u003evenv_redirect_env\u003c/code\u003e to choose another.\u003c/li\u003e\n\u003cli\u003etox leaves a \u003ccode\u003e.venv\u003c/code\u003e directory alone, and a redirect file pointing outside its environments.\u003c/li\u003e\n\u003cli\u003etox removes the redirect while it recreates the target and writes it back once the run ends.\u003c/li\u003e\n\u003cli\u003eSet :ref:\u003ccode\u003evenv_redirect\u003c/code\u003e to \u003ccode\u003efalse\u003c/code\u003e to opt out.\u003c/li\u003e\n\u003cli\u003eThe feature is provisional while :PEP:\u003ccode\u003e832\u003c/code\u003e is a draft: a minor or patch release may change it in backward\nincompatible ways to follow the PEP. (:issue:\u003ccode\u003e4013\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.64.0\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/9cd0f4e7527e39c30955e31c4307b0630cd37aaa\"\u003e\u003ccode\u003e9cd0f4e\u003c/code\u003e\u003c/a\u003e release 4.64.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/c2b87d2ff342f23afaee218bc28aa5f96e89453b\"\u003e\u003ccode\u003ec2b87d2\u003c/code\u003e\u003c/a\u003e 🐛 fix(run): point .venv at a deliberate dev env (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4092\"\u003e#4092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/a8fa8cc0db19360dbd57ae0a726c5d34f247ae74\"\u003e\u003ccode\u003ea8fa8cc\u003c/code\u003e\u003c/a\u003e 🐛 fix(run): keep .venv redirect off for a .venv env (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4091\"\u003e#4091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/e40e8e666838ddb4e3ae4936a9f8b162119d9190\"\u003e\u003ccode\u003ee40e8e6\u003c/code\u003e\u003c/a\u003e release 4.64.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/eacd4e9374a65f9e2c0c199b8ecf035fe8769fc3\"\u003e\u003ccode\u003eeacd4e9\u003c/code\u003e\u003c/a\u003e 🐛 fix(config): apply overrides to sections the file lacks (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4089\"\u003e#4089\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/fff62f65ed4bab06a31a73a32c361afc054a7b9b\"\u003e\u003ccode\u003efff62f6\u003c/code\u003e\u003c/a\u003e release 4.64.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/5c56ce0855e69d264b95b9e307bf3a33351fdd56\"\u003e\u003ccode\u003e5c56ce0\u003c/code\u003e\u003c/a\u003e ✨ feat(config): write a PEP 832 .venv redirect file (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4013\"\u003e#4013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/551ad34007aa656f79edef82f873a93119acb1c3\"\u003e\u003ccode\u003e551ad34\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): diff coverage against the PR base (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4088\"\u003e#4088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/8e1967e98f6480b0d99847c6a058463b7cce5416\"\u003e\u003ccode\u003e8e1967e\u003c/code\u003e\u003c/a\u003e fix(config): read the user config file as UTF-8 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4086\"\u003e#4086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/12bf3a68f1200945e6da2d7576ee1cfd695038ed\"\u003e\u003ccode\u003e12bf3a6\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 10.0.1 to 10.1.0 in the github-acti...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox/compare/4.56.0...4.64.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `twine` from 6.2.0 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/twine/blob/main/docs/changelog.rst\"\u003etwine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etwine 7.0.0 (2026-07-27)\u003c/h2\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSpecify UTF-8 encoding when reading \u003ccode\u003e.pypirc\u003c/code\u003e files. (\u003ccode\u003e[#1268](https://github.com/pypa/twine/issues/1268) \u0026lt;https://github.com/pypa/twine/issues/1268\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdd missing subdependencies to \u003ccode\u003e--version\u003c/code\u003e output. (\u003ccode\u003e[#1275](https://github.com/pypa/twine/issues/1275) \u0026lt;https://github.com/pypa/twine/issues/1275\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eThe dependency on \u003ccode\u003erich\u003c/code\u003e has been bumped to avoid a hang in some environments. (\u003ccode\u003e[#1308](https://github.com/pypa/twine/issues/1308) \u0026lt;https://github.com/pypa/twine/issues/1308\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eIndices that respond with non-standard HTTP codes are now handled more gracefully. (\u003ccode\u003e[#1309](https://github.com/pypa/twine/issues/1309) \u0026lt;https://github.com/pypa/twine/issues/1309\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and Removals\n^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix uploading packages with metadata version 2.5. The fix no longer allows metadata version 2.0, which was never officially standardised. (\u003ccode\u003e[#1317](https://github.com/pypa/twine/issues/1317) \u0026lt;https://github.com/pypa/twine/issues/1317\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#1298](https://github.com/pypa/twine/issues/1298) \u0026lt;https://github.com/pypa/twine/issues/1298\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/fdb86cb45de11faeece9b274be6da7d275cdd4f9\"\u003e\u003ccode\u003efdb86cb\u003c/code\u003e\u003c/a\u003e Update changelog for 7.0.0 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1344\"\u003e#1344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/bfa7f7f037c6ba39e93813c6ad2537d13cf4b1e6\"\u003e\u003ccode\u003ebfa7f7f\u003c/code\u003e\u003c/a\u003e changelog: backfill entries from PRs (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1330\"\u003e#1330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/4f20c0dc374bbd54fe7cddc341e3c5ba7479917b\"\u003e\u003ccode\u003e4f20c0d\u003c/code\u003e\u003c/a\u003e Remove monkeypatch allowing Metadata 2.0 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1317\"\u003e#1317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/1df249ecb442f5420d44c7782be11337daf83651\"\u003e\u003ccode\u003e1df249e\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action from 4.35.2 to 4.35.3 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/bea960757875c4e2800f82f95519aa0b4d9c3c04\"\u003e\u003ccode\u003ebea9607\u003c/code\u003e\u003c/a\u003e fix: bump minimum rich dependency to 14.3.3 to prevent verbose hang (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1308\"\u003e#1308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/ac17a17a9c01c5a2ba10f6ee142cef5aec6f56b0\"\u003e\u003ccode\u003eac17a17\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1311\"\u003e#1311\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/039cedfd9082b520dc37563dc0cf8a2d453a36e2\"\u003e\u003ccode\u003e039cedf\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action from 4.35.1 to 4.35.2 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1313\"\u003e#1313\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/d465cb0930d3c6446d240902f6f782f8d5793288\"\u003e\u003ccode\u003ed465cb0\u003c/code\u003e\u003c/a\u003e Handle non-standard HTTP status codes (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/cab618fb122bb2d1e6c042f5bf0c5a8b8e2573bc\"\u003e\u003ccode\u003ecab618f\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epackaging \u0026gt;= 26.1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/2d06e1177b1dcf94ae302e48f6fe6a4992fc89ae\"\u003e\u003ccode\u003e2d06e11\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1307\"\u003e#1307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/twine/compare/6.2.0...7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/cordada/lib-pe-sunat-python/pull/303","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cordada%2Flib-pe-sunat-python/issues/303","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/303/packages"},{"uuid":"5655970978","node_id":"PR_kwDOQR0O9s8AAAABGA0Luw","number":32,"state":"closed","title":"Update flake8 requirement from \u003e=3.9.0 to \u003e=7.4.1 in /hdfm-framework","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-02T00:36:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-01T02:34:35.000Z","updated_at":"2026-10-02T00:36:55.000Z","time_to_close":79331,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flake8","old_version":"\u003e=3.9.0","new_version":"\u003e=7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":"/hdfm-framework","ecosystem":"pip"},"body":"Updates the requirements on [flake8](https://github.com/pycqa/flake8) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/3.9.0...7.4.1\"\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/jdhart81/hdfm-framework/pull/32","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdhart81%2Fhdfm-framework/issues/32","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/32/packages"},{"uuid":"5651997924","node_id":"PR_kwDOPJzn-c8AAAABF9pNuA","number":82,"state":"open","title":"Bump the minor group across 1 directory with 7 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-30T19:37:03.000Z","updated_at":"2026-10-02T13:44:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor","update_count":7,"packages":[{"name":"bitarray","old_version":"3.10.1","new_version":"3.11.0","repository_url":"https://github.com/ilanschnell/bitarray"},{"name":"lxml","old_version":"6.1.2","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"onnxruntime","old_version":"1.24.4","new_version":"1.30.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"cachetools","old_version":"7.1.7","new_version":"7.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"pytest-mock","old_version":"3.15.1","new_version":"3.16.0","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"ruff","old_version":"0.16.5","new_version":"0.16.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"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 group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [bitarray](https://github.com/ilanschnell/bitarray) | `3.10.1` | `3.11.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.2` | `6.1.3` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.24.4` | `1.30.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.1.7` | `7.2.0` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.1` | `3.16.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.5` | `0.16.9` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n\n\nUpdates `bitarray` from 3.10.1 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ilanschnell/bitarray/blob/master/doc/changelog.rst\"\u003ebitarray's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChange log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003e3.11.0\u003c/strong\u003e (2026-09-01):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd run-length codec: \u003ccode\u003eutil.rl_encode()\u003c/code\u003e and \u003ccode\u003eutil.rl_decode()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eutil.sc_stat()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eComparison of bitarray codecs \u0026lt;codecs.rst\u0026gt;\u003c/code\u003e__ documentation\u003c/li\u003e\n\u003cli\u003eoptimize sparse block selection for trailing zeros\u003c/li\u003e\n\u003cli\u003epreserve bitarrays when buffer reallocation fails\u003c/li\u003e\n\u003cli\u003econsistent input validation for large \u003ccode\u003eutil.sum_indices()\u003c/code\u003e inputs\u003c/li\u003e\n\u003cli\u003eimprove sparse-compression and debug-mode tests, including new tests\nfor slice adjustment \u003ccode\u003eadjust_slice()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003emove private \u003ccode\u003esysinfo()\u003c/code\u003e and \u003ccode\u003essqi()\u003c/code\u003e out of the top-level namespace\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.10.1\u003c/strong\u003e (2026-08-07):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003emove internal tests for \u003ccode\u003eutil._Random\u003c/code\u003e class into \u003ccode\u003edevel/test_random.py\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd debug-mode introspection and tests for \u003ccode\u003edecodetree\u003c/code\u003e structure\u003c/li\u003e\n\u003cli\u003efix \u003ccode\u003eutil.pprint()\u003c/code\u003e for very narrow output widths\u003c/li\u003e\n\u003cli\u003esubstantially simplify \u003ccode\u003eutil.ba2int()\u003c/code\u003e and \u003ccode\u003eutil.int2ba()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.10.0\u003c/strong\u003e (2026-07-31):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003efree threading support \u0026lt;free_threading.rst\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003ebitarray/test_free_threading.py\u003c/code\u003e - these free-threading tests are\nimported when Python was compiled using \u003ccode\u003e--disable-gil\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd official support for \u003ccode\u003edecodetree\u003c/code\u003e methods \u003ccode\u003e.nodes()\u003c/code\u003e and \u003ccode\u003e.todict()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eutil.huffman_code()\u003c/code\u003e and \u003ccode\u003eutil.canonical_huffman()\u003c/code\u003e return codedicts\nmapping symbols to frozenbitarrays\u003c/li\u003e\n\u003cli\u003efix free-threading bug in \u003ccode\u003ebinode_make_tree()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003euse a private capsule to safely share the \u003ccode\u003ebitarray\u003c/code\u003e type between\nthe \u003ccode\u003e_bitarray\u003c/code\u003e and \u003ccode\u003e_util\u003c/code\u003e extension modules\u003c/li\u003e\n\u003cli\u003ebitarrays in prefix codes passed to \u003ccode\u003e.decode()\u003c/code\u003e or \u003ccode\u003edecodetree()\u003c/code\u003e cannot\nexceed 256 bits\u003c/li\u003e\n\u003cli\u003ethe following methods/functions also accept a \u003ccode\u003efrozendict\u003c/code\u003e (added in\nPython 3.15): \u003ccode\u003e.decode()\u003c/code\u003e, \u003ccode\u003edecodetree()\u003c/code\u003e, \u003ccode\u003e.encode()\u003c/code\u003e,\n\u003ccode\u003eutil.huffman_code()\u003c/code\u003e and \u003ccode\u003eutil.canonical_huffman()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003emake C code more cohesive\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.9.2\u003c/strong\u003e (2026-07-25):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd more critical sections in Python-facing operations\u003c/li\u003e\n\u003cli\u003eoptimize mask indexing operations for sparse and dense masks\u003c/li\u003e\n\u003cli\u003emove tests for internal \u003ccode\u003essqi()\u003c/code\u003e to \u003ccode\u003edevel/test_sum_indices.py\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eremove all occurrences of \u003ccode\u003ePySlice_GetIndicesEx\u003c/code\u003e (deprecated since\nPython 3.6.1)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/ec1ea4ac828cb9f1530a94f58cc497e48a593aa8\"\u003e\u003ccode\u003eec1ea4a\u003c/code\u003e\u003c/a\u003e add release date - update docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/492b5530b47e095435d09b8664d6d2754987fae0\"\u003e\u003ccode\u003e492b553\u003c/code\u003e\u003c/a\u003e avoid MSVC warning about possible loas of data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/b54a84c52031f858937834119ab3648f1c12e0d5\"\u003e\u003ccode\u003eb54a84c\u003c/code\u003e\u003c/a\u003e validate large sum_indices() inputs consistently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/0921579e0e72b8e5357a173f72aa77e5c30904b5\"\u003e\u003ccode\u003e0921579\u003c/code\u003e\u003c/a\u003e clarify sc_encode_lock_held() output invariant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/3fda1fd0bf7abdaff52c3e1aca6ffee5095c2351\"\u003e\u003ccode\u003e3fda1fd\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/9610fe69fc42caa53706de23fe733e479f3a413f\"\u003e\u003ccode\u003e9610fe6\u003c/code\u003e\u003c/a\u003e naming\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/970c2cc4c9a8e5d1422437ec99741b720a02da89\"\u003e\u003ccode\u003e970c2cc\u003c/code\u003e\u003c/a\u003e simplify update_doc.py - update readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/f53a9fb3ce3f53251474f3ea8ac715d88dcd1e59\"\u003e\u003ccode\u003ef53a9fb\u003c/code\u003e\u003c/a\u003e link codec functions to codec comparison\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/702508587cf2bd7cd38a83552bfba7b291d2117c\"\u003e\u003ccode\u003e7025085\u003c/code\u003e\u003c/a\u003e add new codecs document\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/a0e2114cc5db207c1b932b6f03e7f2d3a2655714\"\u003e\u003ccode\u003ea0e2114\u003c/code\u003e\u003c/a\u003e update README key features\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ilanschnell/bitarray/compare/3.10.1...3.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml` from 6.1.2 to 6.1.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lxml/lxml/blob/master/CHANGES.txt\"\u003elxml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.1.3 (2026-09-02)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2165901: External parameter entity parsing was allowed by default\n(with \u003ccode\u003eresolve_entities=\u0026quot;internal\u0026quot;\u003c/code\u003e).\nIssue found by Tomer Fichman.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/3c1a4c7f2d5a3c19efe01adfd3c33ac3c8fe52c1\"\u003e\u003ccode\u003e3c1a4c7\u003c/code\u003e\u003c/a\u003e Prepare release of 6.1.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/c1191fc55b8d574544203d07e7a02ba3378ced8d\"\u003e\u003ccode\u003ec1191fc\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/03ec3123b9683e7f02ce659f34322667683d3eef\"\u003e\u003ccode\u003e03ec312\u003c/code\u003e\u003c/a\u003e Disable parameter entity parsing when internal-only entity parsing is requested.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/11d03e922e0a7845131df3ab2fb5e894c0ced0ab\"\u003e\u003ccode\u003e11d03e9\u003c/code\u003e\u003c/a\u003e Build: Prevent duplicate Py3.8 wheel builds.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/9efc586ed3555be22548a3188f7f435826834961\"\u003e\u003ccode\u003e9efc586\u003c/code\u003e\u003c/a\u003e Build: Exclude musllinux-ARM from Py3.8 wheel building to prevent slow emulat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/9716fb1e1a80db4ba5e36bf99947dfccd8730471\"\u003e\u003ccode\u003e9716fb1\u003c/code\u003e\u003c/a\u003e Build: Include older PyPy versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/0f3327d3c8fc1ba01c90a866770ad8c4889e537f\"\u003e\u003ccode\u003e0f3327d\u003c/code\u003e\u003c/a\u003e Build: Exclude Win-Aarch64 from wheel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/6967c960976541979570099de9866af398fb292f\"\u003e\u003ccode\u003e6967c96\u003c/code\u003e\u003c/a\u003e Build: Make all built wheels downloadable even if they don't pass the release...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/061218d210747a1181dea76fb6b6d0eebe946b2d\"\u003e\u003ccode\u003e061218d\u003c/code\u003e\u003c/a\u003e Build: Exclude Py3.15 i686 wheels from validation (because they are intention...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/ce9fe0dd26bd5b64fe03b6bcdf68a997ee5a2596\"\u003e\u003ccode\u003ece9fe0d\u003c/code\u003e\u003c/a\u003e Build: Fix Py3.8 windows build.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/lxml/lxml/compare/lxml-6.1.2...lxml-6.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `onnxruntime` from 1.24.4 to 1.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/onnxruntime/releases\"\u003eonnxruntime's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eONNX Runtime v1.30.0\u003c/h2\u003e\n\u003cp\u003eONNX Runtime 1.30.0 expands generative AI inference, improves CPU and GPU performance, adds Go bindings, and strengthens runtime reliability. These notes cover changes since ONNX Runtime 1.29.1.\u003c/p\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExpanded CUDA inference support with variable-length causal convolution for continuous batching, speculative decoding in paged XQA, and INT4 paged KV caches with per-channel scales (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32168\"\u003e#32168\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32340\"\u003e#32340\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32515\"\u003e#32515\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved WebGPU PagedAttention, added GPT-OSS support and INT8 KV-cache block quantization, and extended convolution optimizations (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31727\"\u003e#31727\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32277\"\u003e#32277\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32284\"\u003e#32284\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32420\"\u003e#32420\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded fused CPU LinearAttention kernels for AVX-512, Arm64 NEON, and SVE, plus AVX2 LayerNorm/RMSNorm acceleration (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31674\"\u003e#31674\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31973\"\u003e#31973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32178\"\u003e#32178\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32356\"\u003e#32356\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded Go bindings for the ONNX Runtime C API and DeepSeek Engram contrib operators (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29615\"\u003e#29615\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32268\"\u003e#32268\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAnnouncements \u0026amp; Compatibility\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFP4 QMoE kernels are now enabled by default in CUDA builds, with Windows build support added in this release. Source builds can opt out with \u003ccode\u003e-Donnxruntime_USE_FP4_QMOE=OFF\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32096\"\u003e#32096\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32163\"\u003e#32163\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eCUDA fpA-intB builds now default to a compact kernel set for FP16 activations, INT4/INT8 weights, scale-only quantization, and \u003ccode\u003eblock_size=32\u003c/code\u003e. Set \u003ccode\u003e-Donnxruntime_USE_FPA_INTB_GEMM_FULL=ON\u003c/code\u003e when building from source to retain the full kernel set, including BF16, zero-point, bias, larger-block-size, and native Hopper variants (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32324\"\u003e#32324\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eCPU FP16 \u003ccode\u003eGemm\u003c/code\u003e and \u003ccode\u003eMatMul\u003c/code\u003e execution is gated on hardware acceleration. CPU-assigned FP16 nodes without a matching kernel now fall back to FP32 (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32301\"\u003e#32301\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32197\"\u003e#32197\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eWebGPU plugin EP packaging now supports Linux AArch64. Plugin versions were advanced to WebGPU 0.4.0 and CUDA 0.2 (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32287\"\u003e#32287\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31960\"\u003e#31960\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31970\"\u003e#31970\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSecurity \u0026amp; Reliability\u003c/h2\u003e\n\u003ch3\u003eModel Loading, Memory, and Input Validation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimited nested model-graph depth and canonicalized external-data locations to harden model loading (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32344\"\u003e#32344\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32135\"\u003e#32135\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded checked rounding for BFC arena allocations and fixed prepacked-weight reference lifetimes (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32010\"\u003e#32010\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32040\"\u003e#32040\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eStrengthened shape, rank, and parameter validation for \u003ccode\u003eSplit\u003c/code\u003e, \u003ccode\u003eScan\u003c/code\u003e, \u003ccode\u003eGatherND\u003c/code\u003e, \u003ccode\u003eScatterND\u003c/code\u003e, \u003ccode\u003eSpaceToDepth\u003c/code\u003e/\u003ccode\u003eDepthToSpace\u003c/code\u003e, \u003ccode\u003eCrop\u003c/code\u003e, \u003ccode\u003eConv\u003c/code\u003e, \u003ccode\u003eNormalizer\u003c/code\u003e, and pooling (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29461\"\u003e#29461\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31668\"\u003e#31668\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32034\"\u003e#32034\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32039\"\u003e#32039\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32076\"\u003e#32076\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32157\"\u003e#32157\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32160\"\u003e#32160\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32161\"\u003e#32161\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32345\"\u003e#32345\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32349\"\u003e#32349\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eHardened generation and attention input handling, including attention-attribute narrowing, \u003ccode\u003eBifurcationDetector\u003c/code\u003e inputs, generation subgraph shapes, and QEmbed segment inputs. BeamSearch buffer expansion now uses dynamic shape storage (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31648\"\u003e#31648\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31701\"\u003e#31701\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32009\"\u003e#32009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32078\"\u003e#32078\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32144\"\u003e#32144\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eValidated \u003ccode\u003eTreeEnsemble\u003c/code\u003e node references and bounded subtree comparison, rejected non-finite CPU \u003ccode\u003eRoiAlign\u003c/code\u003e coordinates, and required \u003ccode\u003eImageScaler\u003c/code\u003e bias to match the channel count (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32031\"\u003e#32031\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32043\"\u003e#32043\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32011\"\u003e#32011\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32002\"\u003e#32002\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded an allowlist of safe LoRA adapter parameter data types, validated \u003ccode\u003eMatMulFpQ4\u003c/code\u003e shape inputs, and checked MLAS blockwise quantization/dequantization index ranges (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31682\"\u003e#31682\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32032\"\u003e#32032\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32007\"\u003e#32007\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGPU Bounds and Resource Lifetimes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHardened CUDA indexing and buffer-size arithmetic in \u003ccode\u003eMatMulNBits\u003c/code\u003e, \u003ccode\u003eRemovePadding\u003c/code\u003e, \u003ccode\u003eRotaryEmbedding\u003c/code\u003e, \u003ccode\u003eSparseAttention\u003c/code\u003e, Whisper beam search, NMS, QDQ, and \u003ccode\u003eGatherElements\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31643\"\u003e#31643\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31994\"\u003e#31994\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31995\"\u003e#31995\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31996\"\u003e#31996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31998\"\u003e#31998\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32014\"\u003e#32014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32029\"\u003e#32029\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32030\"\u003e#32030\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed overflow in CUDA reduction scans and Softmax offset arithmetic, and handled zero-sized outputs in CUDA random-generator kernels (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32137\"\u003e#32137\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32330\"\u003e#32330\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31997\"\u003e#31997\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed CUDA MultiHeadAttention shared-cache scratch lifetimes and kept \u003ccode\u003eCudaAsyncBuffer\u003c/code\u003e staging storage alive across CUDA graph replay (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31968\"\u003e#31968\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32121\"\u003e#32121\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed WebGPU out-of-bounds subgroup-matrix loads for partial tiles, zero-initialized writable device-allocator buffers, and rejected foreign GPU handles in built-in data transfers (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32364\"\u003e#32364\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32063\"\u003e#32063\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32317\"\u003e#32317\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies and Tooling\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgraded Protobuf to 33.6 and refreshed Python documentation dependencies, including an ONNX security-related update (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29906\"\u003e#29906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32190\"\u003e#32190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32424\"\u003e#32424\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpdated JavaScript dependencies including \u003ccode\u003ejs-yaml\u003c/code\u003e, \u003ccode\u003ejoi\u003c/code\u003e, \u003ccode\u003efast-uri\u003c/code\u003e, and the Next.js end-to-end fixture (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32397\"\u003e#32397\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32486\"\u003e#32486\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32488\"\u003e#32488\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32505\"\u003e#32505\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32508\"\u003e#32508\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePinned GitHub Actions to full-length commit SHAs and strengthened packaging infrastructure with authenticated package feeds and NPM network isolation (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32176\"\u003e#32176\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32005\"\u003e#32005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32440\"\u003e#32440\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003ch3\u003eCore APIs \u0026amp; Runtime\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded Go bindings for the ONNX Runtime C API (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29615\"\u003e#29615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eExtended memory importing with host-pointer support and added access to preallocated outputs through \u003ccode\u003eKernelContext::GetPreallocatedOutput\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29726\"\u003e#29726\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32089\"\u003e#32089\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded packed-attention workspace recipes and estimates, and made workspace input-shape handling aware of optional inputs (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32283\"\u003e#32283\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32321\"\u003e#32321\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32312\"\u003e#32312\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded DeepSeek Engram contrib operators, \u003ccode\u003eEngramGate\u003c/code\u003e and \u003ccode\u003eNGramHashMapping\u003c/code\u003e, and expanded kernel coverage for Qwen-3.5 operators (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32268\"\u003e#32268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32106\"\u003e#32106\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/microsoft/onnxruntime/commit/f2c39fe2f838cf35ce7da92824f5a5e3ee6e88a7\"\u003e\u003ccode\u003ef2c39fe\u003c/code\u003e\u003c/a\u003e [CUDA] Add INT4 paged KV cache with per-channel scales (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32515\"\u003e#32515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/5894ba8a53526b3aeb702bd86e6b117c9df8fa4f\"\u003e\u003ccode\u003e5894ba8\u003c/code\u003e\u003c/a\u003e Add portable random-access file reads to Env (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32503\"\u003e#32503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/a2ee3eb43052de307003e6256fc9258ce19d9c34\"\u003e\u003ccode\u003ea2ee3eb\u003c/code\u003e\u003c/a\u003e Fix CUDA plugin device discovery on WSL (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32517\"\u003e#32517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/b652e595b04d202b7f71af1d9105a183fac2b100\"\u003e\u003ccode\u003eb652e59\u003c/code\u003e\u003c/a\u003e [WebGPU] Prepack Conv weights for the im2col-matmul path (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32420\"\u003e#32420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/0f0f29f5015f16926912ae47061e6a3eedcfbe04\"\u003e\u003ccode\u003e0f0f29f\u003c/code\u003e\u003c/a\u003e Get rid of spurious warning about not being able to find spectre mitigation (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/23dd6510fd395b4556f474c1c0079be2a8b7a8c8\"\u003e\u003ccode\u003e23dd651\u003c/code\u003e\u003c/a\u003e Register ONNX schemas only when static registration is disabled (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32353\"\u003e#32353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/33af5d32801b2e631ebece4f382f4ba775f17d8c\"\u003e\u003ccode\u003e33af5d3\u003c/code\u003e\u003c/a\u003e Release external data loaders after graph initialization (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32502\"\u003e#32502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/2e3c24d5963d62d0bd7c9d306433b19b7304d5d2\"\u003e\u003ccode\u003e2e3c24d\u003c/code\u003e\u003c/a\u003e Clarify external initializer and EP context path interaction (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32442\"\u003e#32442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/e76036b8e49515ee7dd2dd0ac39c9d8b7533d38a\"\u003e\u003ccode\u003ee76036b\u003c/code\u003e\u003c/a\u003e [CUDA] Pin FP8 GEMV residency for grids just past two blocks per SM (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32433\"\u003e#32433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/82583c5b6398a9c37815f91e9cd1d7c165a132a7\"\u003e\u003ccode\u003e82583c5\u003c/code\u003e\u003c/a\u003e Add session option for a BNHS GroupQueryAttention Value cache layout (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32139\"\u003e#32139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/onnxruntime/compare/v1.24.4...v1.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 7.1.7 to 7.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst\"\u003ecachetools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev7.2.0 (2026-09-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate use of \u003ccode\u003ecache=None\u003c/code\u003e to suppress caching with the\n\u003ccode\u003e@cached\u003c/code\u003e decorator.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor test improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor documentation updates.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.1.8 (2026-08-31)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eReject negative \u003ccode\u003emaxsize\u003c/code\u003e in \u003ccode\u003eCache.__init__\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3c082c654c2804b9354e4b62dbd2994f1aac464d\"\u003e\u003ccode\u003e3c082c6\u003c/code\u003e\u003c/a\u003e Release v7.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/ff9a394f437eafcf2f6c079578638a326da6d0a7\"\u003e\u003ccode\u003eff9a394\u003c/code\u003e\u003c/a\u003e Minor documentation updates.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9b7fe6ca659382158897723205882f0b4126241e\"\u003e\u003ccode\u003e9b7fe6c\u003c/code\u003e\u003c/a\u003e Deprecate \u003ca href=\"https://github.com/cached\"\u003e\u003ccode\u003e@​cached\u003c/code\u003e\u003c/a\u003e(cache=None).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/72adda62f911ff3fb635c4817635bf9c92b87289\"\u003e\u003ccode\u003e72adda6\u003c/code\u003e\u003c/a\u003e Minor test improvements.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/8275879f071bc1a9c117d68f33b92aae7aacab0a\"\u003e\u003ccode\u003e8275879\u003c/code\u003e\u003c/a\u003e Update copilot instructions and review.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/290c50b37e464ca5733131d86a7e521beeb386e8\"\u003e\u003ccode\u003e290c50b\u003c/code\u003e\u003c/a\u003e Add support for Python 3.15.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/4500e3d04288738d25acbb4973eb3c3e1bf41db9\"\u003e\u003ccode\u003e4500e3d\u003c/code\u003e\u003c/a\u003e Release v7.1.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/6e49bef559f20995d603830202afda0ea890bd1a\"\u003e\u003ccode\u003e6e49bef\u003c/code\u003e\u003c/a\u003e Update copilot instructions and review.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/defc58b02543ca0189fb37505827db4cc4e0565c\"\u003e\u003ccode\u003edefc58b\u003c/code\u003e\u003c/a\u003e Prepare v7.1.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/a39180bfced6e162614e23eaa9c3dc79d8ec74d6\"\u003e\u003ccode\u003ea39180b\u003c/code\u003e\u003c/a\u003e Remove somewhat superfluous and slightly incorrect documentation note regardi...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v7.1.7...v7.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-mock` from 3.15.1 to 3.16.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/releases\"\u003epytest-mock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-09-27\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/604\"\u003e#604\u003c/a\u003e: Fixed \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e for async functions spied with \u003ccode\u003emocker.spy\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/611\"\u003e#611\u003c/a\u003e: Fixed async mock assertion introspection to use awaited arguments instead of the latest call's arguments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/606\"\u003e#606\u003c/a\u003e: \u003ccode\u003emocker.resetall(return_value=True, side_effect=True)\u003c/code\u003e now also applies to non-callable mocks, such as those returned by \u003ccode\u003emocker.create_autospec(SomeClass, instance=True)\u003c/code\u003e. Previously both arguments were silently ignored for them.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/547\"\u003e#547\u003c/a\u003e: Added \u003ccode\u003eSpyType\u003c/code\u003e for annotating \u003ccode\u003emocker.spy\u003c/code\u003e results.\u003c/li\u003e\n\u003cli\u003eDropped support for EOL Python 3.9.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/147\"\u003e#147\u003c/a\u003e: Removed handling of \u003ccode\u003eRuntimeError: stop called on unstarted patcher\u003c/code\u003e, which can no longer occur in the supported Python versions.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst\"\u003epytest-mock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.16.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-09-27\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#604](https://github.com/pytest-dev/pytest-mock/issues/604) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/604\u0026gt;\u003c/code\u003e_: Fixed \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e for async functions spied with \u003ccode\u003emocker.spy\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#611](https://github.com/pytest-dev/pytest-mock/issues/611) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/611\u0026gt;\u003c/code\u003e_: Fixed async mock assertion introspection to use awaited arguments instead of the latest call's arguments.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#606](https://github.com/pytest-dev/pytest-mock/issues/606) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/606\u0026gt;\u003c/code\u003e_: \u003ccode\u003emocker.resetall(return_value=True, side_effect=True)\u003c/code\u003e now also applies to non-callable mocks, such as those returned by \u003ccode\u003emocker.create_autospec(SomeClass, instance=True)\u003c/code\u003e. Previously both arguments were silently ignored for them.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#547](https://github.com/pytest-dev/pytest-mock/issues/547) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/547\u0026gt;\u003c/code\u003e_: Added \u003ccode\u003eSpyType\u003c/code\u003e for annotating \u003ccode\u003emocker.spy\u003c/code\u003e results.\u003c/li\u003e\n\u003cli\u003eDropped support for EOL Python 3.9.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#147](https://github.com/pytest-dev/pytest-mock/issues/147) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/147\u0026gt;\u003c/code\u003e_: Removed handling of \u003ccode\u003eRuntimeError: stop called on unstarted patcher\u003c/code\u003e, which can no longer occur in the supported Python versions.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/f3b531f93c6d9837edc87ea1a6f4324dc9a2cdf3\"\u003e\u003ccode\u003ef3b531f\u003c/code\u003e\u003c/a\u003e Release 3.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/71ed67309520be160f3e100368705b58758d237a\"\u003e\u003ccode\u003e71ed673\u003c/code\u003e\u003c/a\u003e Fix duplicate_iterators for async spies (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/0797e3d303cc5bbe0a3514b0625f7aeb3fa350b0\"\u003e\u003ccode\u003e0797e3d\u003c/code\u003e\u003c/a\u003e Fix async assertion argument introspection (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/611\"\u003e#611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/e24c334d573cfbf6989a31f4e3346676d9d31598\"\u003e\u003ccode\u003ee24c334\u003c/code\u003e\u003c/a\u003e docs: import os in the opening usage example (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/9e7eb7b59cde362c1c8ace2d18ca00fe2d7a1cd1\"\u003e\u003ccode\u003e9e7eb7b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/613\"\u003e#613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/445fd4d3daa8ed4c6d5428a77880da2e03d2f721\"\u003e\u003ccode\u003e445fd4d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/a8bd0b147afdf6b4bb1a1a3c3c088f32b0240091\"\u003e\u003ccode\u003ea8bd0b1\u003c/code\u003e\u003c/a\u003e Honour resetall() arguments for non-callable mocks (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/606\"\u003e#606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/6559fdfd5b67f096423e604a3a5a7045db2486a0\"\u003e\u003ccode\u003e6559fdf\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/466d026254c949a8fbba8626b894308827be81cf\"\u003e\u003ccode\u003e466d026\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/605\"\u003e#605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/164defebde25bc31d53a2a64943c5c9aac43b57e\"\u003e\u003ccode\u003e164defe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/603\"\u003e#603\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-mock/compare/v3.15.1...v3.16.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.9\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.9\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid false positives for overloaded division (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28309\"\u003e#28309\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-bugbear\u003c/code\u003e] Avoid false positives for calls with keyword arguments (\u003ccode\u003eB009\u003c/code\u003e, \u003ccode\u003eB010\u003c/code\u003e, \u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28776\"\u003e#28776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Allow lazy imports to be used in deferred annotations (\u003ccode\u003eTID255\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28767\"\u003e#28767\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate LibCST-based fixes for Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28616\"\u003e#28616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Mention stubs in the diagnostic message (\u003ccode\u003ePYI002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28542\"\u003e#28542\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix horizontal overflow on the rules documentation page (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28699\"\u003e#28699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rules table with category information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28651\"\u003e#28651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-annotations\u003c/code\u003e] Clarify that \u003ccode\u003eANN401\u003c/code\u003e checks return types in addition to arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28334\"\u003e#28334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Document type-checker interaction (\u003ccode\u003eB010\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28509\"\u003e#28509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Document \u003ccode\u003emap\u003c/code\u003e/generator exception behavior (\u003ccode\u003eC417\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27794\"\u003e#27794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Mention related isort settings (\u003ccode\u003eRUF022\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28719\"\u003e#28719\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/qinpei-dev\"\u003e\u003ccode\u003e@​qinpei-dev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sanjayrohith\"\u003e\u003ccode\u003e@​sanjayrohith\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/webdevsamran\"\u003e\u003ccode\u003e@​webdevsamran\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zaniebot\"\u003e\u003ccode\u003e@​zaniebot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewdurbin\"\u003e\u003ccode\u003e@​ewdurbin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/spaceone\"\u003e\u003ccode\u003e@​spaceone\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/IbrahimKhan12\"\u003e\u003ccode\u003e@​IbrahimKhan12\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/devtechedge\"\u003e\u003ccode\u003e@​devtechedge\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GruffElixir\"\u003e\u003ccode\u003e@​GruffElixir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.9\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.9/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid false positives for overloaded division (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28309\"\u003e#28309\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-bugbear\u003c/code\u003e] Avoid false positives for calls with keyword arguments (\u003ccode\u003eB009\u003c/code\u003e, \u003ccode\u003eB010\u003c/code\u003e, \u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28776\"\u003e#28776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Allow lazy imports to be used in deferred annotations (\u003ccode\u003eTID255\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28767\"\u003e#28767\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate LibCST-based fixes for Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28616\"\u003e#28616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Mention stubs in the diagnostic message (\u003ccode\u003ePYI002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28542\"\u003e#28542\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix horizontal overflow on the rules documentation page (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28699\"\u003e#28699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rules table with category information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28651\"\u003e#28651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-annotations\u003c/code\u003e] Clarify that \u003ccode\u003eANN401\u003c/code\u003e checks return types in addition to arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28334\"\u003e#28334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Document type-checker interaction (\u003ccode\u003eB010\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28509\"\u003e#28509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Document \u003ccode\u003emap\u003c/code\u003e/generator exception behavior (\u003ccode\u003eC417\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27794\"\u003e#27794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Mention related isort settings (\u003ccode\u003eRUF022\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28719\"\u003e#28719\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/qinpei-dev\"\u003e\u003ccode\u003e@​qinpei-dev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sanjayrohith\"\u003e\u003ccode\u003e@​sanjayrohith\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/webdevsamran\"\u003e\u003ccode\u003e@​webdevsamran\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zaniebot\"\u003e\u003ccode\u003e@​zaniebot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewdurbin\"\u003e\u003ccode\u003e@​ewdurbin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/spaceone\"\u003e\u003ccode\u003e@​spaceone\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/IbrahimKhan12\"\u003e\u003ccode\u003e@​IbrahimKhan12\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/devtechedge\"\u003e\u003ccode\u003e@​devtechedge\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GruffElixir\"\u003e\u003ccode\u003e@​GruffElixir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.8\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-16.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVisit functional \u003ccode\u003eTypedDict\u003c/code\u003e keyword arguments correctly (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28584\"\u003e#28584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Detect nested \u003ccode\u003easync with\u003c/code\u003e under sync parent (\u003ccode\u003eSIM117\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27821\"\u003e#27821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve operand order in \u003ccode\u003eSIM109\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27824\"\u003e#27824\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/0be08a206f9c3180afd3e93bcc792ed5cb1f4db1\"\u003e\u003ccode\u003e0be08a2\u003c/code\u003e\u003c/a\u003e Bump version to 0.16.9 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28882\"\u003e#28882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b4920b72b354e7c715ab861ae23458874683bb02\"\u003e\u003ccode\u003eb4920b7\u003c/code\u003e\u003c/a\u003e Rename \u003ccode\u003eruff_cli\u003c/code\u003e to \u003ccode\u003eruff_command_line\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28881\"\u003e#28881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/47c751b95908a4d1f95f9ef8723036aae9da0b18\"\u003e\u003ccode\u003e47c751b\u003c/code\u003e\u003c/a\u003e Update dependency astral-sh/uv to v0.12.18 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28880\"\u003e#28880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8c244e56a1aeac31c26d2371ef26588e0632235c\"\u003e\u003ccode\u003e8c244e5\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Document \u003ccode\u003emap\u003c/code\u003e/generator exception behavior (\u003ccode\u003eC417\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5edf5a1d0a84663079e46983216059f06acea87d\"\u003e\u003ccode\u003e5edf5a1\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003etarget\u003c/code\u003e form in \u003ccode\u003erooster.version_files\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28876\"\u003e#28876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/915bb2b4bf9ae7eee47cf55646bbfebae254a23b\"\u003e\u003ccode\u003e915bb2b\u003c/code\u003e\u003c/a\u003e [ty] Prefer existing @ paths over response files in Ruff and ty (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28877\"\u003e#28877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4710e1aa962b13720cf64aa84eb279c5333896d7\"\u003e\u003ccode\u003e4710e1a\u003c/code\u003e\u003c/a\u003e ci(github): update version number in placeholder of issue template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28871\"\u003e#28871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eedfc62a75bf1ba86d48959b00eea75ae87eadca\"\u003e\u003ccode\u003eeedfc62\u003c/code\u003e\u003c/a\u003e [ty] Propagate outer type context through cast calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28855\"\u003e#28855\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ceaa6a00830e1e350b8a23977a1a10ac467920a1\"\u003e\u003ccode\u003eceaa6a0\u003c/code\u003e\u003c/a\u003e [ty] Contain rendered code within Markdown fences (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28869\"\u003e#28869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dba0f30615424b94f94a174bba6ce6cce4bf11ff\"\u003e\u003ccode\u003edba0f30\u003c/code\u003e\u003c/a\u003e authorize ruff-pre-commit dispatch via OIDC (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28867\"\u003e#28867\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.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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/double16/shyhurricane/pull/82","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/double16%2Fshyhurricane/issues/82","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/82/packages"},{"uuid":"5647366142","node_id":"PR_kwDOQQKcjc8AAAABF56Xpg","number":663,"state":"closed","title":"chore(deps): bump the backend-minor-patch group across 1 directory with 68 updates","user":"dependabot[bot]","labels":["dependencies","backend"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T01:18:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-30T13:38:40.000Z","updated_at":"2026-10-03T01:18:33.000Z","time_to_close":214792,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"backend-minor-patch","update_count":68,"packages":[{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"aiosmtplib","old_version":"5.1.2","new_version":"5.1.3","repository_url":"https://github.com/cole/aiosmtplib"},{"name":"alembic","old_version":"1.17.0","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"amqp","old_version":"5.3.1","new_version":"5.4.0","repository_url":"https://github.com/celery/py-amqp"},{"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.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"bidict","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/jab/bidict"},{"name":"billiard","old_version":"4.2.2","new_version":"4.3.0","repository_url":"https://github.com/celery/billiard"},{"name":"casbin-async-sqlalchemy-adapter","old_version":"1.13.0","new_version":"1.17.0","repository_url":"https://github.com/officialpycasbin/async-sqlalchemy-adapter"},{"name":"celery","old_version":"5.5.3","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":"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":"click-repl","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/click-contrib/click-repl"},{"name":"fastapi","old_version":"0.136.1","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastapi-mail","old_version":"1.6.5","new_version":"1.6.8","repository_url":"https://github.com/sabuhish/fastapi-mail"},{"name":"greenlet","old_version":"3.2.4","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"httptools","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.15","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"kombu","old_version":"5.5.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"limits","old_version":"5.6.0","new_version":"5.8.0","repository_url":"https://github.com/alisaifee/limits"},{"name":"mako","old_version":"1.3.12","new_version":"1.4.3","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markdown","old_version":"3.10.2","new_version":"3.11","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"numpy","old_version":"2.3.4","new_version":"2.5.3","repository_url":"https://github.com/numpy/numpy"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"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.4.1","new_version":"0.5.4","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.13","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pycasbin","old_version":"2.4.0","new_version":"2.8.0","repository_url":"https://github.com/casbin/pycasbin"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.49.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.14.0","new_version":"2.15.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyotp","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pyauth/pyotp"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-engineio","old_version":"4.13.3","new_version":"4.14.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-multipart","old_version":"0.0.31","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"python-socketio","old_version":"5.16.3","new_version":"5.17.0","repository_url":"https://github.com/sponsors/miguelgrinberg"},{"name":"pytokens","old_version":"0.2.0","new_version":"0.4.1","repository_url":"https://github.com/tusharsadhwani/pytokens"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"sentry-sdk","old_version":"2.22.0","new_version":"2.70.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"simpleeval","old_version":"1.0.5","new_version":"1.0.8","repository_url":"https://github.com/danthedeckie/simpleeval"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"sqlalchemy","old_version":"2.0.44","new_version":"2.1.1","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"1.3.1","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"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":"ua-parser","old_version":"1.0.1","new_version":"1.0.2","repository_url":"https://github.com/ua-parser/uap-python"},{"name":"urllib3","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.37.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.21.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.9.1","repository_url":"https://github.com/jquast/wcwidth"},{"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.22.0","new_version":"1.25.1","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zope-event","old_version":"6.0","new_version":"6.2","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"8.0.1","new_version":"8.6","repository_url":"https://github.com/zopefoundation/zope.interface"},{"name":"fakeredis","old_version":"2.32.0","new_version":"2.38.0","repository_url":"https://github.com/cunla/fakeredis-py"},{"name":"pytest-asyncio","old_version":"1.2.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"autoflake","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/PyCQA/autoflake"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"platformdirs","old_version":"4.5.0","new_version":"4.12.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pycodestyle","old_version":"2.14.0","new_version":"2.15.0","repository_url":"https://github.com/PyCQA/pycodestyle"},{"name":"mkdocs-get-deps","old_version":"0.2.0","new_version":"0.2.2","repository_url":"https://github.com/mkdocs/get-deps"},{"name":"mkdocs-material","old_version":"9.6.22","new_version":"9.7.7","repository_url":"https://github.com/squidfunk/mkdocs-material"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-minor-patch group with 68 updates in the /Backend_FastAPI directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [aiosmtplib](https://github.com/cole/aiosmtplib) | `5.1.2` | `5.1.3` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.17.0` | `1.20.0` |\n| [amqp](https://github.com/celery/py-amqp) | `5.3.1` | `5.4.0` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [bidict](https://github.com/jab/bidict) | `0.23.1` | `0.24.1` |\n| [billiard](https://github.com/celery/billiard) | `4.2.2` | `4.3.0` |\n| [casbin-async-sqlalchemy-adapter](https://github.com/officialpycasbin/async-sqlalchemy-adapter) | `1.13.0` | `1.17.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.3` |\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| [click-repl](https://github.com/click-contrib/click-repl) | `0.3.0` | `0.4.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.1` | `0.141.1` |\n| [fastapi-mail](https://github.com/sabuhish/fastapi-mail) | `1.6.5` | `1.6.8` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.4` | `3.5.6` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.7.1` | `0.8.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.20` |\n| [kombu](https://github.com/celery/kombu) | `5.5.4` | `5.6.2` |\n| [limits](https://github.com/alisaifee/limits) | `5.6.0` | `5.8.0` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.12` | `1.4.3` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.2` | `3.11` |\n| [numpy](https://github.com/numpy/numpy) | `2.3.4` | `2.5.3` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.26.0` |\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.4.1` | `0.5.4` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.13` |\n| [pycasbin](https://github.com/casbin/pycasbin) | `2.4.0` | `2.8.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.15.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.49.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.14.0` | `2.15.0` |\n| [pyotp](https://github.com/pyauth/pyotp) | `2.9.0` | `2.10.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.13.3` | `4.14.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.31` | `0.0.32` |\n| [python-socketio](https://github.com/sponsors/miguelgrinberg) | `5.16.3` | `5.17.0` |\n| [pytokens](https://github.com/tusharsadhwani/pytokens) | `0.2.0` | `0.4.1` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.22.0` | `2.70.0` |\n| [simpleeval](https://github.com/danthedeckie/simpleeval) | `1.0.5` | `1.0.8` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.44` | `2.1.1` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.7.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| [ua-parser](https://github.com/ua-parser/uap-python) | `1.0.1` | `1.0.2` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.7.0` | `2.8.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.37.0` | `0.54.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.22.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.3.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.9.1` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.25.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `6.0` | `6.2` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `8.0.1` | `8.6` |\n| [fakeredis](https://github.com/cunla/fakeredis-py) | `2.32.0` | `2.38.0` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.2.0` | `1.4.0` |\n| [autoflake](https://github.com/PyCQA/autoflake) | `2.3.1` | `2.4.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.0` | `4.12.0` |\n| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.14.0` | `2.15.0` |\n| [mkdocs-get-deps](https://github.com/mkdocs/get-deps) | `0.2.0` | `0.2.2` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.22` | `9.7.7` |\n\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 `aiosmtplib` from 5.1.2 to 5.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/cole/aiosmtplib/releases\"\u003eaiosmtplib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.1.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSecurity: reject addresses containing whitespace or angle brackets outside of a\nquoted local part in \u003ccode\u003email\u003c/code\u003e, \u003ccode\u003ercpt\u003c/code\u003e, \u003ccode\u003evrfy\u003c/code\u003e, \u003ccode\u003eexpn\u003c/code\u003e and \u003ccode\u003esendmail\u003c/code\u003e.\nPreviously, a caller supplied address such as\n\u003ccode\u003euser@example.com\u0026gt; AUTH=\u0026lt;attacker@example.com\u003c/code\u003e could smuggle additional ESMTP\nparameters onto the command line. This is a follow up to the fix in 5.1.1 for\nCVE-2026-53533 (GHSA-v3q9-hj7j-63hq), which only rejected control characters.\n\u003ccode\u003esendmail\u003c/code\u003e now validates all addresses before sending any commands.\u003c/li\u003e\n\u003cli\u003eBugfix: reject \u003ccode\u003elocal_hostname\u003c/code\u003e values (and the \u003ccode\u003ehostname\u003c/code\u003e argument to\n\u003ccode\u003ehelo\u003c/code\u003e/\u003ccode\u003eehlo\u003c/code\u003e) containing whitespace or control characters, so a hostname\nsuch as \u003ccode\u003eme.example.com XCLIENT ADDR=1.2.3.4\u003c/code\u003e can no longer smuggle extra\nparameters onto the EHLO/HELO command line. Surrounding whitespace is stripped.\u003c/li\u003e\n\u003cli\u003eBugfix: raise \u003ccode\u003eSMTPAuthenticationError\u003c/code\u003e instead of \u003ccode\u003ebinascii.Error\u003c/code\u003e when the\nserver sends a malformed (non-base64) CRAM-MD5 challenge, so \u003ccode\u003elogin\u003c/code\u003e can fall\nback to the next auth method\u003c/li\u003e\n\u003cli\u003eBugfix: prevent SMTP command/response desync from unsolicited server data (thanks\n\u003ca href=\"https://github.com/Charisn\"\u003e\u003ccode\u003e@​Charisn\u003c/code\u003e\u003c/a\u003e for contributing)\u003c/li\u003e\n\u003cli\u003eBugfix: handle protocol connection lost callback arriving after reconnect\u003c/li\u003e\n\u003cli\u003eBugfix: close connection on async context manager exit in cases of a server error response\u003c/li\u003e\n\u003cli\u003eBugfix: release connection lock on connect timeout\u003c/li\u003e\n\u003cli\u003eBugfix: re-derive the default port on each \u003ccode\u003econnect()\u003c/code\u003e so changing\n\u003ccode\u003euse_tls\u003c/code\u003e/\u003ccode\u003estart_tls\u003c/code\u003e between connects no longer reuses a stale default.\nDefaulted \u003ccode\u003eport\u003c/code\u003e/\u003ccode\u003ehostname\u003c/code\u003e are now resolved per-connect rather than\nwritten back onto the instance, so they read back as \u003ccode\u003eNone\u003c/code\u003e when unset\u003c/li\u003e\n\u003cli\u003eBugfix: typeerror in latest ty\u003c/li\u003e\n\u003cli\u003eBugfix: mark response waiter exceptions as retrieved when they are set, so\n\u003ccode\u003eFuture exception was never retrieved\u003c/code\u003e is no longer logged on free-threaded\nbuilds where the previous \u003ccode\u003e__del__\u003c/code\u003e based cleanup ran too late\u003c/li\u003e\n\u003cli\u003eCI: test on free-threaded 3.14 and on 3.15 (standard and free-threaded)\u003c/li\u003e\n\u003cli\u003eBugfix: the \u003ccode\u003eSIZE\u003c/code\u003e parameter sent with \u003ccode\u003eMAIL FROM\u003c/code\u003e now reports the number\nof octets as the message will be transmitted (with CRLF line endings), rather\nthan the raw length of the message argument\u003c/li\u003e\n\u003cli\u003eBugfix: data arriving on the transport after the connection is lost is now\ndropped instead of raising \u003ccode\u003eRuntimeError\u003c/code\u003e from the protocol callback\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003eSMTPProtocol\u003c/code\u003e now records that it is using TLS after a successful\n\u003ccode\u003estart_tls\u003c/code\u003e, so a second upgrade attempt on the protocol is rejected\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003estarttls\u003c/code\u003e now validates its TLS options before sending EHLO, so\ninvalid options raise \u003ccode\u003eValueError\u003c/code\u003e without touching the connection\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003ehelo\u003c/code\u003e no longer records a failed response as \u003ccode\u003elast_helo_response\u003c/code\u003e,\nso a rejected HELO does not leave the session looking as if a greeting succeeded\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e values are no longer silently passed\nthrough the auth encoding helpers; only \u003ccode\u003estr\u003c/code\u003e and \u003ccode\u003ebytes\u003c/code\u003e are accepted, as\nthe type annotations already stated\u003c/li\u003e\n\u003cli\u003eBugfix: TLS context setup now run in thread (thanks \u003ca href=\"https://github.com/tr4nt0r\"\u003e\u003ccode\u003e@​tr4nt0r\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\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/cole/aiosmtplib/blob/main/CHANGELOG.rst\"\u003eaiosmtplib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.1.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSecurity: reject addresses containing whitespace or angle brackets outside of a\nquoted local part in \u003ccode\u003email\u003c/code\u003e, \u003ccode\u003ercpt\u003c/code\u003e, \u003ccode\u003evrfy\u003c/code\u003e, \u003ccode\u003eexpn\u003c/code\u003e and \u003ccode\u003esendmail\u003c/code\u003e.\nPreviously, a caller supplied address such as\n\u003ccode\u003euser@example.com\u0026gt; AUTH=\u0026lt;attacker@example.com\u003c/code\u003e could smuggle additional ESMTP\nparameters onto the command line. This is a follow up to the fix in 5.1.1 for\nCVE-2026-53533 (GHSA-v3q9-hj7j-63hq), which only rejected control characters.\n\u003ccode\u003esendmail\u003c/code\u003e now validates all addresses before sending any commands.\u003c/li\u003e\n\u003cli\u003eBugfix: reject \u003ccode\u003elocal_hostname\u003c/code\u003e values (and the \u003ccode\u003ehostname\u003c/code\u003e argument to\n\u003ccode\u003ehelo\u003c/code\u003e/\u003ccode\u003eehlo\u003c/code\u003e) containing whitespace or control characters, so a hostname\nsuch as \u003ccode\u003eme.example.com XCLIENT ADDR=1.2.3.4\u003c/code\u003e can no longer smuggle extra\nparameters onto the EHLO/HELO command line. Surrounding whitespace is stripped.\u003c/li\u003e\n\u003cli\u003eBugfix: raise \u003ccode\u003eSMTPAuthenticationError\u003c/code\u003e instead of \u003ccode\u003ebinascii.Error\u003c/code\u003e when the\nserver sends a malformed (non-base64) CRAM-MD5 challenge, so \u003ccode\u003elogin\u003c/code\u003e can fall\nback to the next auth method\u003c/li\u003e\n\u003cli\u003eBugfix: prevent SMTP command/response desync from unsolicited server data (thanks\n\u003ca href=\"https://github.com/Charisn\"\u003e\u003ccode\u003e@​Charisn\u003c/code\u003e\u003c/a\u003e for contributing)\u003c/li\u003e\n\u003cli\u003eBugfix: handle protocol connection lost callback arriving after reconnect\u003c/li\u003e\n\u003cli\u003eBugfix: close connection on async context manager exit in cases of a server error response\u003c/li\u003e\n\u003cli\u003eBugfix: release connection lock on connect timeout\u003c/li\u003e\n\u003cli\u003eBugfix: re-derive the default port on each \u003ccode\u003econnect()\u003c/code\u003e so changing\n\u003ccode\u003euse_tls\u003c/code\u003e/\u003ccode\u003estart_tls\u003c/code\u003e between connects no longer reuses a stale default.\nDefaulted \u003ccode\u003eport\u003c/code\u003e/\u003ccode\u003ehostname\u003c/code\u003e are now resolved per-connect rather than\nwritten back onto the instance, so they read back as \u003ccode\u003eNone\u003c/code\u003e when unset\u003c/li\u003e\n\u003cli\u003eBugfix: typeerror in latest ty\u003c/li\u003e\n\u003cli\u003eBugfix: mark response waiter exceptions as retrieved when they are set, so\n\u003ccode\u003eFuture exception was never retrieved\u003c/code\u003e is no longer logged on free-threaded\nbuilds where the previous \u003ccode\u003e__del__\u003c/code\u003e based cleanup ran too late\u003c/li\u003e\n\u003cli\u003eCI: test on free-threaded 3.14 and on 3.15 (standard and free-threaded)\u003c/li\u003e\n\u003cli\u003eBugfix: the \u003ccode\u003eSIZE\u003c/code\u003e parameter sent with \u003ccode\u003eMAIL FROM\u003c/code\u003e now reports the number\nof octets as the message will be transmitted (with CRLF line endings), rather\nthan the raw length of the message argument\u003c/li\u003e\n\u003cli\u003eBugfix: data arriving on the transport after the connection is lost is now\ndropped instead of raising \u003ccode\u003eRuntimeError\u003c/code\u003e from the protocol callback\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003eSMTPProtocol\u003c/code\u003e now records that it is using TLS after a successful\n\u003ccode\u003estart_tls\u003c/code\u003e, so a second upgrade attempt on the protocol is rejected\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003estarttls\u003c/code\u003e now validates its TLS options before sending EHLO, so\ninvalid options raise \u003ccode\u003eValueError\u003c/code\u003e without touching the connection\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003ehelo\u003c/code\u003e no longer records a failed response as \u003ccode\u003elast_helo_response\u003c/code\u003e,\nso a rejected HELO does not leave the session looking as if a greeting succeeded\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e values are no longer silently passed\nthrough the auth encoding helpers; only \u003ccode\u003estr\u003c/code\u003e and \u003ccode\u003ebytes\u003c/code\u003e are accepted, as\nthe type annotations already stated\u003c/li\u003e\n\u003cli\u003eBugfix: TLS context setup now run in thread (thanks \u003ca href=\"https://github.com/tr4nt0r\"\u003e\u003ccode\u003e@​tr4nt0r\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/cole/aiosmtplib/commit/9cc425460026ee54392507f0593ecd4052cd6aa4\"\u003e\u003ccode\u003e9cc4254\u003c/code\u003e\u003c/a\u003e ci: only twine-check wheel and sdist in buildcheck\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/e4ee41a88d61a0b7916c4d0c3b02b8aff8f22cce\"\u003e\u003ccode\u003ee4ee41a\u003c/code\u003e\u003c/a\u003e release: v5.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/8ee1047e0772e9617e8842d009ecb25cc6ed8380\"\u003e\u003ccode\u003e8ee1047\u003c/code\u003e\u003c/a\u003e test: replace event_loop_policy override with pytest_asyncio_loop_factories hook\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/ddf47a7dd45503bbca059b58b764d8d4fb8b76c8\"\u003e\u003ccode\u003eddf47a7\u003c/code\u003e\u003c/a\u003e ci: test on free-threaded 3.14 and on 3.15 (standard and free-threaded)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/ced720d39fbc906b7bd2569b7053f884c73115d9\"\u003e\u003ccode\u003eced720d\u003c/code\u003e\u003c/a\u003e test: expect HeaderWriteError for non-ASCII address on Python 3.15+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/4d22898f1ef21f1ffe3684fd70b2ccdb50ed440b\"\u003e\u003ccode\u003e4d22898\u003c/code\u003e\u003c/a\u003e fix: mark response waiter exceptions as retrieved when set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/7b8e3de72cd8fe8bec110ecc854b2ea0e6486d7d\"\u003e\u003ccode\u003e7b8e3de\u003c/code\u003e\u003c/a\u003e fix: report SIZE as transmitted octets, not raw message length\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/aa0d536058620d12d5c2884f3cb0fa4599d698b7\"\u003e\u003ccode\u003eaa0d536\u003c/code\u003e\u003c/a\u003e fix: drop data received after connection loss instead of raising\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/bdc17f564bd76ec62594437ac5969ffdfaf8509e\"\u003e\u003ccode\u003ebdc17f5\u003c/code\u003e\u003c/a\u003e fix: mark SMTPProtocol as over SSL after a successful start_tls\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/1d84d5714412028e737f402d901e05ab4e70d1a0\"\u003e\u003ccode\u003e1d84d57\u003c/code\u003e\u003c/a\u003e fix: validate starttls options before sending EHLO\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/cole/aiosmtplib/compare/v5.1.2...v5.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.17.0 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 `amqp` from 5.3.1 to 5.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/py-amqp/releases\"\u003eamqp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded DeepWiki to README by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/447\"\u003ecelery/py-amqp#447\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace deprecated datetime.datetime.utcfromtimestamp by \u003ca href=\"https://github.com/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/448\"\u003ecelery/py-amqp#448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate supported python versions in classifiers by \u003ca href=\"https://github.com/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/450\"\u003ecelery/py-amqp#450\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove Python 3.8 support by \u003ca href=\"https://github.com/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/449\"\u003ecelery/py-amqp#449\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/celery/py-amqp/pull/453\"\u003ecelery/py-amqp#453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI workflow to exclude Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/454\"\u003ecelery/py-amqp#454\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd null check for connection to prevent AttributeError on drain_events by \u003ca href=\"https://github.com/Cyanty\"\u003e\u003ccode\u003e@​Cyanty\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/457\"\u003ecelery/py-amqp#457\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix prevent channel revival during intentional close to fix shutdown crash by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/458\"\u003ecelery/py-amqp#458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Add Python 3.14 to the testing by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/461\"\u003ecelery/py-amqp#461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Drop the archived GitHub Action useblacksmith/setup-python by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/459\"\u003ecelery/py-amqp#459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport limiting tls version by \u003ca href=\"https://github.com/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/463\"\u003ecelery/py-amqp#463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecode AMQP field-table type l as signed 64-bit by \u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/465\"\u003ecelery/py-amqp#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat basic_publish write timeouts as connection errors by \u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/464\"\u003ecelery/py-amqp#464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSerialize frame_writer() writes with a lock by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/466\"\u003ecelery/py-amqp#466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Python version requirements in setup.py by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/467\"\u003ecelery/py-amqp#467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop unused python version check by \u003ca href=\"https://github.com/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/468\"\u003ecelery/py-amqp#468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecode AMQP field-table type 's' as signed 16-bit by \u003ca href=\"https://github.com/cocofabio\"\u003e\u003ccode\u003e@​cocofabio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/469\"\u003ecelery/py-amqp#469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease v5.4.0 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/471\"\u003ecelery/py-amqp#471\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/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/448\"\u003ecelery/py-amqp#448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Cyanty\"\u003e\u003ccode\u003e@​Cyanty\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/457\"\u003ecelery/py-amqp#457\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/458\"\u003ecelery/py-amqp#458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/465\"\u003ecelery/py-amqp#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/466\"\u003ecelery/py-amqp#466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cocofabio\"\u003e\u003ccode\u003e@​cocofabio\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/469\"\u003ecelery/py-amqp#469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/py-amqp/compare/v5.3.1...v5.4.0\"\u003ehttps://github.com/celery/py-amqp/compare/v5.3.1...v5.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/celery/py-amqp/blob/main/Changelog\"\u003eamqp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.4.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-09-19\n:release-by: Asif Saif Uddin (\u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace deprecated datetime.datetime.utcfromtimestamp (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove Python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003eUpdate CI workflow to exclude Python 3.9 (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/454\"\u003e#454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd null check for connection to prevent AttributeError on drain_events (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/457\"\u003e#457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix prevent channel revival during intentional close to fix shutdown crash (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/458\"\u003e#458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 support\u003c/li\u003e\n\u003cli\u003eSupport limiting tls version (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/463\"\u003e#463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecode AMQP field-table type l as signed 64-bit (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/465\"\u003e#465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat basic_publish write timeouts as connection errors (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/464\"\u003e#464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSerialize frame_writer() writes with a lock (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/466\"\u003e#466\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecode AMQP field-table type 's' as signed 16-bit (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/469\"\u003e#469\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.3.1:\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/celery/py-amqp/commit/31b0b588e887fecdd5d0246fbcf78f63ca86e95e\"\u003e\u003ccode\u003e31b0b58\u003c/code\u003e\u003c/a\u003e Bump version: 5.3.1 → 5.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/de36b555a17f193e1a3f1b875c271bfc0af1915c\"\u003e\u003ccode\u003ede36b55\u003c/code\u003e\u003c/a\u003e added changelog for v5.4.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/f3d82f18fd2d6900760c1ce8d23d968fc3bc0e2e\"\u003e\u003ccode\u003ef3d82f1\u003c/code\u003e\u003c/a\u003e Decode AMQP field-table type 's' as signed 16-bit (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/469\"\u003e#469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/c2012cc6be618b125ae9710fe90b6b73d8505019\"\u003e\u003ccode\u003ec2012cc\u003c/code\u003e\u003c/a\u003e Drop unused python version check (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/9517a4d3fac2fe5ed07b93e9682553084efc5a22\"\u003e\u003ccode\u003e9517a4d\u003c/code\u003e\u003c/a\u003e Update Python version requirements in setup.py (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/467\"\u003e#467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/3082466b5ff0077f3a22d90b972a5892780e6128\"\u003e\u003ccode\u003e3082466\u003c/code\u003e\u003c/a\u003e Serialize frame_writer() writes with a lock (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/466\"\u003e#466\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/39b4127e280c823230fff7701874fbaaab536864\"\u003e\u003ccode\u003e39b4127\u003c/code\u003e\u003c/a\u003e Treat basic_publish write timeouts as connection errors (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/464\"\u003e#464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/ebbee9cb7e38f6616bfa3c5d9e894b3a78a27942\"\u003e\u003ccode\u003eebbee9c\u003c/code\u003e\u003c/a\u003e Decode AMQP field-table type 'l' as signed 64-bit.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/4e16568ce642b9891bfaa5b178a75fd1fee5b98e\"\u003e\u003ccode\u003e4e16568\u003c/code\u003e\u003c/a\u003e Support limiting tls version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/a03ad34f9b620773f50a4e19f26382bc23140e63\"\u003e\u003ccode\u003ea03ad34\u003c/code\u003e\u003c/a\u003e ci: Drop the archived GitHub Action useblacksmith/setup-python\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/py-amqp/compare/v5.3.1...v5.4.0\"\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.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 `asyncpg` from 0.30.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.30.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/...\n\n_Description has been truncated_","html_url":"https://github.com/favouritekid/QLTS/pull/663","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/favouritekid%2FQLTS/issues/663","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/663/packages"},{"uuid":"5640898199","node_id":"PR_kwDOEcrRgc8AAAABF0sznQ","number":5511,"state":"open","title":"[Tech] Python - Bump the non-major-dependencies group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["tech. enhancement","dependencies"],"assignees":["VincentAntoine"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-30T04:27:15.000Z","updated_at":"2026-09-30T15:28:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"[Tech] Python - Bump","group_name":"non-major-dependencies","update_count":11,"packages":[{"name":"coverage","old_version":"7.16.0","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"scrapy","old_version":"2.18.0","new_version":"2.19.0","repository_url":"https://github.com/scrapy/scrapy"},{"name":"css-inline","old_version":"0.21.2","new_version":"0.21.3","repository_url":"https://github.com/Stranger6667/css-inline"},{"name":"pypdf","old_version":"6.18.0","new_version":"6.19.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"fastapi","old_version":"0.135.4","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"matplotlib","old_version":"3.11.1","new_version":"3.11.2","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"sphinx-intl","old_version":"2.3.2","new_version":"2.4.0","repository_url":"https://github.com/sphinx-doc/sphinx-intl"},{"name":"sphinx-autoapi","old_version":"3.8.0","new_version":"3.8.1","repository_url":"https://github.com/readthedocs/sphinx-autoapi"},{"name":"scikit-learn","old_version":"1.9.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"greenlet","old_version":"3.5.5","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"}],"path":null,"ecosystem":"pip"},"body":"Bumps the non-major-dependencies group with 11 updates in the /pipeline directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.16.0` | `7.16.2` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [scrapy](https://github.com/scrapy/scrapy) | `2.18.0` | `2.19.0` |\n| [css-inline](https://github.com/Stranger6667/css-inline) | `0.21.2` | `0.21.3` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.18.0` | `6.19.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.4` | `0.141.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.11.1` | `3.11.2` |\n| [sphinx-intl](https://github.com/sphinx-doc/sphinx-intl) | `2.3.2` | `2.4.0` |\n| [sphinx-autoapi](https://github.com/readthedocs/sphinx-autoapi) | `3.8.0` | `3.8.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.9.0` | `1.9.1` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.5.5` | `3.5.6` |\n\n\nUpdates `coverage` from 7.16.0 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\u003c/blockquote\u003e\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\u003c/blockquote\u003e\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.16.0...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` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scrapy` from 2.18.0 to 2.19.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapy/scrapy/releases\"\u003escrapy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ccode\u003eRemoteControl\u003c/code\u003e extension which allows inspecting and controlling a running crawl over HTTP, used by the \u003ca href=\"https://docs.scrapy.org/en/latest/topics/agents.html#using-the-mcp-server\"\u003eScrapy MCP server\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExperimental \u003ccode\u003eaiohttp\u003c/code\u003e-based download handler (now the default when running without a reactor)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.scrapy.org/en/latest/news.html#scrapy-2-19-0-2026-09-10\"\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/scrapy/scrapy/blob/master/docs/news.rst\"\u003escrapy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScrapy 2.19.0 (2026-09-10)\u003c/h2\u003e\n\u003cp\u003eHighlights:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew \u003ccode\u003eRemoteControl\u003c/code\u003e extension which allows inspecting and controlling a\nrunning crawl over HTTP, used by the :ref:\u003ccode\u003eScrapy MCP server \u0026lt;using-mcp-server\u0026gt;\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExperimental \u003ccode\u003eaiohttp\u003c/code\u003e-based download handler (now the default when\nrunning without a reactor)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eModified requirements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n-   Added support for Python 3.15.\n    (:gh:`7511`)\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew dependencies:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eaiohttp_ \u0026gt;= 3.13.3\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003echarset-normalizer_ \u0026gt;= 3.4.0\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eplatformdirs_ \u0026gt;= 2.0.0\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(:gh:\u003ccode\u003e7866\u003c/code\u003e, :gh:\u003ccode\u003e8054\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBackward-incompatible changes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWhen running :ref:\u003ccode\u003ewithout a Twisted reactor \u0026lt;asyncio-without-reactor\u0026gt;\u003c/code\u003e,\ni.e. with :setting:\u003ccode\u003eTWISTED_REACTOR_ENABLED\u003c/code\u003e set to \u003ccode\u003eFalse\u003c/code\u003e, the default\ndownload handler for \u003ccode\u003ehttp\u003c/code\u003e and \u003ccode\u003ehttps\u003c/code\u003e is now\n:class:\u003ccode\u003e~scrapy.core.downloader.handlers._aiohttp.AiohttpDownloadHandler\u003c/code\u003e\ninstead of\n:class:\u003ccode\u003e~scrapy.core.downloader.handlers._httpx.HttpxDownloadHandler\u003c/code\u003e. You\ncan configure\n:class:\u003ccode\u003e~scrapy.core.downloader.handlers._httpx.HttpxDownloadHandler\u003c/code\u003e in\nthe :setting:\u003ccode\u003eDOWNLOAD_HANDLERS\u003c/code\u003e setting if you want.\n(:gh:\u003ccode\u003e8118\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003escrapy.http.cookies.WrappedRequest.is_unverifiable()\u003c/code\u003e now always returns\n\u003ccode\u003eFalse\u003c/code\u003e, and the undocumented \u003ccode\u003eis_unverifiable\u003c/code\u003e request meta key that\nit used to read is ignored.\n(:gh:\u003ccode\u003e7933\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\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/scrapy/scrapy/commit/8026deeaac371a5d9a3edbe4886d58f61139d464\"\u003e\u003ccode\u003e8026dee\u003c/code\u003e\u003c/a\u003e Bump version: 2.18.0 → 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/b1f1cba07b8fbfef4b2818f361910fff5b23325e\"\u003e\u003ccode\u003eb1f1cba\u003c/code\u003e\u003c/a\u003e Release notes for 2.19.0 (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8124\"\u003e#8124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/a4109754c56b2ccf31d97cb21070e9fb63e3191e\"\u003e\u003ccode\u003ea410975\u003c/code\u003e\u003c/a\u003e Fix LocalCache evicting a different key when updating an existing key (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8113\"\u003e#8113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/41c3f3e1ffba7d62a222f217cb43827e0b91c323\"\u003e\u003ccode\u003e41c3f3e\u003c/code\u003e\u003c/a\u003e Add AiohttpDownloadHandler and switch reactorless to it (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8118\"\u003e#8118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/20dcf82876820c598703e6c8034b4226ae2c0786\"\u003e\u003ccode\u003e20dcf82\u003c/code\u003e\u003c/a\u003e Implement some idioms from newer Python versions. (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8123\"\u003e#8123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/3fd2a407cc32fd9e124545b8ac47c4c479292af6\"\u003e\u003ccode\u003e3fd2a40\u003c/code\u003e\u003c/a\u003e Agents docs page. (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8120\"\u003e#8120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/6995549c46467b203e2abd0ae4bfa2759c0d72be\"\u003e\u003ccode\u003e6995549\u003c/code\u003e\u003c/a\u003e Exclude news and contributing from llms-full.txt only (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8119\"\u003e#8119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/6057f02ddeb7c88790e4ea0b78b80df346872842\"\u003e\u003ccode\u003e6057f02\u003c/code\u003e\u003c/a\u003e Expose HTTP cache storage timestamp via the cache_timestamp meta key (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8034\"\u003e#8034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/1d5fa5a1f9dcde65123b1678b453528dc5520397\"\u003e\u003ccode\u003e1d5fa5a\u003c/code\u003e\u003c/a\u003e Include bind address in HTTP/1.1 and HTTP/2 pool keys (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8081\"\u003e#8081\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/544f4d2d52377c7a5d6e12b51e219a310ec1b43d\"\u003e\u003ccode\u003e544f4d2\u003c/code\u003e\u003c/a\u003e Fix missing certificate and IP address on HTTP/1.1 responses without a body (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapy/scrapy/compare/2.18.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `css-inline` from 0.21.2 to 0.21.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Stranger6667/css-inline/releases\"\u003ecss-inline's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[Python] Release 0.21.3\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePyodide 3.14 wheels for the \u003ccode\u003epyemscripten_2026_0\u003c/code\u003e platform. \u003ca href=\"https://redirect.github.com/Stranger6667/css-inline/issues/786\"\u003e#786\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/Stranger6667/css-inline/blob/master/CHANGELOG.md\"\u003ecss-inline's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003e[Unreleased]\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/dcedc1bf33cbc6aa0d79b36e8bc94290e73b3cea\"\u003e\u003ccode\u003edcedc1b\u003c/code\u003e\u003c/a\u003e chore(ruby): Release 0.21.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/45f9c947be8625b2103da4bb78d6cf53fb007ce0\"\u003e\u003ccode\u003e45f9c94\u003c/code\u003e\u003c/a\u003e build: Adjust ruby release process\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/9515907be6d85cf8f2efaf064c39e52423e1f630\"\u003e\u003ccode\u003e9515907\u003c/code\u003e\u003c/a\u003e ci(ruby): Publish precompiled native gems\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/dbe9b13c638b891703b7e2d531a02c33c218ddf5\"\u003e\u003ccode\u003edbe9b13\u003c/code\u003e\u003c/a\u003e chore(ruby): Release 0.21.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/25f7f82e6a84bb75a80e2c6ea7a7fbe0dddae5f8\"\u003e\u003ccode\u003e25f7f82\u003c/code\u003e\u003c/a\u003e chore(php): Release 0.21.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/8b3c7b2fc8aac58691bac4352e362c803a09ab4f\"\u003e\u003ccode\u003e8b3c7b2\u003c/code\u003e\u003c/a\u003e chore(javascript): Release 0.21.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/37ae176405667d53ea4702ce47ca943fba51ad72\"\u003e\u003ccode\u003e37ae176\u003c/code\u003e\u003c/a\u003e chore(java): Release 0.21.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/9b4b8a6ba59ded1144b0eaf91c26a1bb70b778ad\"\u003e\u003ccode\u003e9b4b8a6\u003c/code\u003e\u003c/a\u003e chore(java): Update \u003ccode\u003ejni\u003c/code\u003e to \u003ccode\u003e0.22\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Stranger6667/css-inline/compare/c-v0.21.2...ruby-v0.21.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.18.0 to 6.19.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.19.0, 2026-09-16\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit size of alphabetical page labels (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4096\"\u003e#4096\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\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplace PdfWriter method add_js (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3979\"\u003e#3979\u003c/a\u003e) by \u003ca href=\"https://github.com/j-t-1\"\u003e\u003ccode\u003e@​j-t-1\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\u003eMove static value out of loop body for appearance stream data (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4087\"\u003e#4087\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReduce number of full data lookups for attachment mapping API (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4081\"\u003e#4081\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\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not copy unrelated pages when appending pages with non-terminal fields (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4078\"\u003e#4078\u003c/a\u003e) by \u003ca href=\"https://github.com/anandghegde\"\u003e\u003ccode\u003e@​anandghegde\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse page reference for existing internal link targets (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4076\"\u003e#4076\u003c/a\u003e) by \u003ca href=\"https://github.com/r-kamei\"\u003e\u003ccode\u003e@​r-kamei\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eArabic-Indic digits are reversed during text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4077\"\u003e#4077\u003c/a\u003e) by \u003ca href=\"https://github.com/Syamjith-NK\"\u003e\u003ccode\u003e@​Syamjith-NK\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eParse a string rect for add_uri into a rectangle (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4074\"\u003e#4074\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\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.18.1...6.19.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.18.1, 2026-09-11\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFurther restrict FlateDecode recovery (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4073\"\u003e#4073\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit entry count for TrueType and Type1 font \u003ccode\u003e/Widths\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4072\"\u003e#4072\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit allowed length of tokens in parse_bfchar (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4071\"\u003e#4071\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\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse current text matrix for visitor_text (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4062\"\u003e#4062\u003c/a\u003e) by \u003ca href=\"https://github.com/r-kamei\"\u003e\u003ccode\u003e@​r-kamei\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRepeat the letter for /S /A and /S /a page labels past Z (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4065\"\u003e#4065\u003c/a\u003e) by \u003ca href=\"https://github.com/youdie006\"\u003e\u003ccode\u003e@​youdie006\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse font color for FreeText default appearance (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4051\"\u003e#4051\u003c/a\u003e) by \u003ca href=\"https://github.com/Yuki9814\"\u003e\u003ccode\u003e@​Yuki9814\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\u003eFix compatibility with fonttools \u0026lt; 4.58.0 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4050\"\u003e#4050\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4059\"\u003e#4059\u003c/a\u003e) by \u003ca href=\"https://github.com/MeggyCal\"\u003e\u003ccode\u003e@​MeggyCal\u003c/code\u003e\u003c/a\u003e and \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\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse combined matrix in visitor examples (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4066\"\u003e#4066\u003c/a\u003e) by \u003ca href=\"https://github.com/r-kamei\"\u003e\u003ccode\u003e@​r-kamei\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.18.0...6.18.1\"\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.19.0, 2026-09-16\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit size of alphabetical page labels (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplace PdfWriter method add_js (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3979\"\u003e#3979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove static value out of loop body for appearance stream data (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4087\"\u003e#4087\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce number of full data lookups for attachment mapping API (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4081\"\u003e#4081\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not copy unrelated pages when appending pages with non-terminal fields (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4078\"\u003e#4078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse page reference for existing internal link targets (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4076\"\u003e#4076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArabic-Indic digits are reversed during text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4077\"\u003e#4077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eParse a string rect for add_uri into a rectangle (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4074\"\u003e#4074\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.18.1...6.19.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.18.1, 2026-09-11\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFurther restrict FlateDecode recovery (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4073\"\u003e#4073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLimit entry count for TrueType and Type1 font \u003ccode\u003e/Widths\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4072\"\u003e#4072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLimit allowed length of tokens in parse_bfchar (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4071\"\u003e#4071\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse current text matrix for visitor_text (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4062\"\u003e#4062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRepeat the letter for /S /A and /S /a page labels past Z (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4065\"\u003e#4065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse font color for FreeText default appearance (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4051\"\u003e#4051\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with fonttools \u0026lt; 4.58.0 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4050\"\u003e#4050\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4059\"\u003e#4059\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse combined matrix in visitor examples (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4066\"\u003e#4066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.18.0...6.18.1\"\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/d62cb58d3988b291b0435eddfd118c4f8f6b6a46\"\u003e\u003ccode\u003ed62cb58\u003c/code\u003e\u003c/a\u003e REL: 6.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/0d8b5a8832cde1ba308b5c27567b879b7b7eed4a\"\u003e\u003ccode\u003e0d8b5a8\u003c/code\u003e\u003c/a\u003e SEC: Limit size of alphabetical page labels (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/959467a9b95be83e2dc5ae873ece5f371263ede7\"\u003e\u003ccode\u003e959467a\u003c/code\u003e\u003c/a\u003e PI: Move static value out of loop body for appearance stream data (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4087\"\u003e#4087\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/20822b263f063c96ad535405f5b8c4d81768950b\"\u003e\u003ccode\u003e20822b2\u003c/code\u003e\u003c/a\u003e DEV: Bump zizmorcore/zizmor-action from 0.6.3 to 0.6.4 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4093\"\u003e#4093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/25f230191b89cdcf2b4ba3d8051d52c7392831d0\"\u003e\u003ccode\u003e25f2301\u003c/code\u003e\u003c/a\u003e DEP: Replace PdfWriter method add_js (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3979\"\u003e#3979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/a92443848fda10cc2a65a7b6397fd8e1986c17d2\"\u003e\u003ccode\u003ea924438\u003c/code\u003e\u003c/a\u003e BUG: Do not copy unrelated pages when appending pages with non-terminal field...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/cf5cec2e49b9da8fae0d82a0f99f1bfe9eceb8ed\"\u003e\u003ccode\u003ecf5cec2\u003c/code\u003e\u003c/a\u003e BUG: Use page reference for existing internal link targets (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4076\"\u003e#4076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/96d81f05ba4b3ec9ff1b3c3e52bc71a3cdd702c7\"\u003e\u003ccode\u003e96d81f0\u003c/code\u003e\u003c/a\u003e BUG: Arabic-Indic digits are reversed during text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4077\"\u003e#4077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/2d219015b4cf92edcfd6d28c564295f0704fd204\"\u003e\u003ccode\u003e2d21901\u003c/code\u003e\u003c/a\u003e DEV: Fix Color class for latest mypy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4082\"\u003e#4082\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/893a01002aa8e23b3a61ae4b38ab74edbc904ab9\"\u003e\u003ccode\u003e893a010\u003c/code\u003e\u003c/a\u003e MAINT: Split PdfDocCommon._flatten (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4070\"\u003e#4070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.18.0...6.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.135.4 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.135.4...0.141.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.11.1 to 3.11.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.11.2\u003c/h2\u003e\n\u003cp\u003eThis is the second bugfix release of the 3.11.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up RGBA-stage image resampling\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehexbin\u003c/code\u003e clipping in PDF output\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e\\text\u003c/code\u003e with internal braces\u003c/li\u003e\n\u003cli\u003eFix some crashes and make some checks more robust to unlikely cases\u003c/li\u003e\n\u003cli\u003eFix frame skew when saving GIF animations with \u003ccode\u003ePillowWriter\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix HiDPI handling in Qt toolbar and WebAgg embeddings\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eResizeEvent\u003c/code\u003e handling for \u003ccode\u003eTextBox\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix bug with PGF hatch linewidth and color\u003c/li\u003e\n\u003cli\u003eFix a bug with drawing an empty Collection\u003c/li\u003e\n\u003cli\u003eFix incorrect glyphs in Cairo backends\u003c/li\u003e\n\u003cli\u003eImprove build system to prevent conflicts between wheels and system libraries\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d3ca9172e392048ec242b90e8423e88d1a3000b2\"\u003e\u003ccode\u003ed3ca917\u003c/code\u003e\u003c/a\u003e REL: v3.11.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b76fea990aa10afdba9225ee0f058d942cfcb770\"\u003e\u003ccode\u003eb76fea9\u003c/code\u003e\u003c/a\u003e DOC: Set current version to 3.11.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/39c7f0678af763abe850b41a71cd2724e326157c\"\u003e\u003ccode\u003e39c7f06\u003c/code\u003e\u003c/a\u003e DOC: Prepare GitHub stats for 3.11.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/5dd13e39ceadb89af6e17c64cb0c71a2c3ddc94e\"\u003e\u003ccode\u003e5dd13e3\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.11.1-doc' into release-3.11.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/aa484be97e65ffa1c7e2770864dc44a219625180\"\u003e\u003ccode\u003eaa484be\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.11.0-doc' into v3.11.1-doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/0e10f83000d7993160feb264f84150b5a4cacfff\"\u003e\u003ccode\u003e0e10f83\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32330\"\u003e#32330\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32324-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/ebe947bd694df95e189fb93b63060051a6b55f3d\"\u003e\u003ccode\u003eebe947b\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32324\"\u003e#32324\u003c/a\u003e: Don't force any diagnostics to be errors in bundled Harfbuzz\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/8f4b7c53b228dceded120488f569ff936d91844c\"\u003e\u003ccode\u003e8f4b7c5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32322\"\u003e#32322\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32321-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/93278ade075ca4b6483afac10f9a2d1e775a5f36\"\u003e\u003ccode\u003e93278ad\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32321\"\u003e#32321\u003c/a\u003e: DOC: correct note about PyOS_InputHook\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b0aee786396e59de7ea5a1cec646cbc889250b57\"\u003e\u003ccode\u003eb0aee78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32319\"\u003e#32319\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32305-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.11.1...v3.11.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-intl` from 2.3.2 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/sphinx-doc/sphinx-intl/releases\"\u003esphinx-intl's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch2\u003eEnvironments\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python-3.9 support and add Python-3.15 by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/142\"\u003esphinx-doc/sphinx-intl#142\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake stat exit status indicate translation health by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/143\"\u003esphinx-doc/sphinx-intl#143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the all-github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/129\"\u003esphinx-doc/sphinx-intl#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 in the all-github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/130\"\u003esphinx-doc/sphinx-intl#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the all-github-actions group with 5 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/sphinx-doc/sphinx-intl/pull/131\"\u003esphinx-doc/sphinx-intl#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the all-github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/132\"\u003esphinx-doc/sphinx-intl#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the all-github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/134\"\u003esphinx-doc/sphinx-intl#134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edevcontainers-contrib has been moved to devcontainers-extra, verup container by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/135\"\u003esphinx-doc/sphinx-intl#135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump sigstore/gh-action-sigstore-python from 3.2.0 to 3.3.0 in the all-github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/136\"\u003esphinx-doc/sphinx-intl#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump ghcr.io/devcontainers/features/docker-in-docker from 2.17.0 to 4.0.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/sphinx-doc/sphinx-intl/pull/138\"\u003esphinx-doc/sphinx-intl#138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the all-github-actions group across 1 directory with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/140\"\u003esphinx-doc/sphinx-intl#140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix for lint by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/141\"\u003esphinx-doc/sphinx-intl#141\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/compare/2.3.2...2.4.0\"\u003ehttps://github.com/sphinx-doc/sphinx-intl/compare/2.3.2...2.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/sphinx-doc/sphinx-intl/blob/master/CHANGES.rst\"\u003esphinx-intl's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.4.0 (2026/08/30)\u003c/h1\u003e\n\u003ch2\u003eEnvironments\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python-3.9 support and add Python-3.15 by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/142\"\u003esphinx-doc/sphinx-intl#142\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eIncompatibility\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003estat\u003c/code\u003e exit status indicate translation health by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/143\"\u003esphinx-doc/sphinx-intl#143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003ch2\u003eInternals\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/fe7d98efb98fb4bb2d323bb6ab33daef700daf95\"\u003e\u003ccode\u003efe7d98e\u003c/code\u003e\u003c/a\u003e Update changes for 2.4.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/4832679fe1981b3e86d46f50efba3c0fd4563ae4\"\u003e\u003ccode\u003e4832679\u003c/code\u003e\u003c/a\u003e Update changes for stat exit status\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/508e62334a754d11fa53199d6d9481de19f1b377\"\u003e\u003ccode\u003e508e623\u003c/code\u003e\u003c/a\u003e Make stat exit status indicate translation health (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/51d92846d82b823032119981c5d9ae3f327c2ed5\"\u003e\u003ccode\u003e51d9284\u003c/code\u003e\u003c/a\u003e Update changes for 2.4.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/2338a4351f8a228a375ca1d32a1c351bb89ff72e\"\u003e\u003ccode\u003e2338a43\u003c/code\u003e\u003c/a\u003e chore: ignore local worktrees\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/a0efa6ed0ecc053ec78fb7982b8970832edf7922\"\u003e\u003ccode\u003ea0efa6e\u003c/code\u003e\u003c/a\u003e Drop Python-3.9 support and add Python-3.15 (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/d2a6f1c813b53cb17d5c30eca67ab2454e917c4f\"\u003e\u003ccode\u003ed2a6f1c\u003c/code\u003e\u003c/a\u003e Bump the all-github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/140\"\u003e#140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/c412f2881b50c399f395034c8a77b800b9df9c4a\"\u003e\u003ccode\u003ec412f28\u003c/code\u003e\u003c/a\u003e fix for lint (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/468913f87195a3283440cf9c928b3fb89ccd646a\"\u003e\u003ccode\u003e468913f\u003c/code\u003e\u003c/a\u003e Bump ghcr.io/devcontainers/features/docker-in-docker (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/138\"\u003e#138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/e6b10483c89e25de9cd97badabfd127f5116e157\"\u003e\u003ccode\u003ee6b1048\u003c/code\u003e\u003c/a\u003e Bump sigstore/gh-action-sigstore-python in the all-github-actions group (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/compare/2.3.2...2.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-autoapi` from 3.8.0 to 3.8.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/releases\"\u003esphinx-autoapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.1\u003c/h2\u003e\n\u003ch1\u003eBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve ellipsis literals when rendering type annotations. (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eImproved Documentation\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDocument the autoapisummary directive. (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eMisc\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/564\"\u003e#564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to tox.toml and reorganise repo structure\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/readthedocs/sphinx-autoapi/blob/main/CHANGELOG.rst\"\u003esphinx-autoapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.1 (2026-08-23)\u003c/h2\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve ellipsis literals when rendering type annotations. (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation\n^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDocument the \u003ccode\u003eautoapisummary\u003c/code\u003e directive. (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/564\"\u003e#564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to tox.toml and reorganise repo structure\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/7018ce6ddb6cdc4e76d5e4605c966f11fdaf4da7\"\u003e\u003ccode\u003e7018ce6\u003c/code\u003e\u003c/a\u003e Version 3.8.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/9079d5bfda118613fee653390863c3ae46aa5e3e\"\u003e\u003ccode\u003e9079d5b\u003c/code\u003e\u003c/a\u003e Fix ellipsis rendering in type annotations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/f37bd4b519b5172ce4725061401ed1603013b3da\"\u003e\u003ccode\u003ef37bd4b\u003c/code\u003e\u003c/a\u003e Fix towncrier check failing in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/6df6d6183cea6e461e260e4f04786d6e4efe8634\"\u003e\u003ccode\u003e6df6d61\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/b76b462ecbde913a9c375e7e03cbc00c8efe43aa\"\u003e\u003ccode\u003eb76b462\u003c/code\u003e\u003c/a\u003e Fix linting errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/2b7d443790b36be7605a95dde3d79d808ca36ab8\"\u003e\u003ccode\u003e2b7d443\u003c/code\u003e\u003c/a\u003e Fix use of class-scoped fixture as instance method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/2b8bb52c68ffc5add480fdc0fa4f84d50ed14c2d\"\u003e\u003ccode\u003e2b8bb52\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/20880281089c771487d992ddfb6e3e658d20da96\"\u003e\u003ccode\u003e2088028\u003c/code\u003e\u003c/a\u003e Switch to tox.toml and reorganise repo structure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/eca0b11c6996021a0f9d12d3d79c0b09e881ba8b\"\u003e\u003ccode\u003eeca0b11\u003c/code\u003e\u003c/a\u003e Document autoapisummary directive\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/74ed53e685ce07dbf54fe60d0bc31c6ba49b7d57\"\u003e\u003ccode\u003e74ed53e\u003c/code\u003e\u003c/a\u003e Bump sigstore/gh-action-sigstore-python in the github-actions group\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/compare/v3.8.0...v3.8.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.9.0 to 1.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.9.1\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.9.1 release.\u003c/p\u003e\n\u003cp\u003eThis release contains a few bug fixes and is the first version supporting Python 3.15.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.9.html#version-1-9-1\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.9.html#version-1-9-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThanks to everyone who contributed to this release !\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/866c0f51e7560ef0303cbcc5f159df5382ea9e3f\"\u003e\u003ccode\u003e866c0f5\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/12f135fbffe3b3e7e294e4ef16f0b59f68e6a6b9\"\u003e\u003ccode\u003e12f135f\u003c/code\u003e\u003c/a\u003e update upper bounds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/43ff2f20bc5bfbe92b9cd3ec9d86214da8ee2c6e\"\u003e\u003ccode\u003e43ff2f2\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/b8515241202663142b65dbe92294e96a6dc5def2\"\u003e\u003ccode\u003eb851524\u003c/code\u003e\u003c/a\u003e DOC Mark dev index as orphan (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34916\"\u003e#34916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/01d56d48da18e7b365c4d2ebcd5d1fddaa24dd12\"\u003e\u003ccode\u003e01d56d4\u003c/code\u003e\u003c/a\u003e DOC Fix wikipedia principal eigenvector example references (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34915\"\u003e#34915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/b86a1e227c2c424b17f8872d4094bbbc061e32c9\"\u003e\u003ccode\u003eb86a1e2\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for array-api CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/d282698440cec541f2427794b8c205fb4b1420be\"\u003e\u003ccode\u003ed282698\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for main CI build(s) :lock: :robot: (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34897\"\u003e#34897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/eb34279083fe9297d141efddceaf38c596a49766\"\u003e\u003ccode\u003eeb34279\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/7581303c447a0daa07fa74ba8104e327c11f1dc5\"\u003e\u003ccode\u003e7581303\u003c/code\u003e\u003c/a\u003e FIX: Fix \u003ccode\u003eQuantileTransformer(ignore_implicit_zeros=True)\u003c/code\u003e sub-sampling behav...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ac47f4de75eacad880b77db09aa1f677f6038274\"\u003e\u003ccode\u003eac47f4d\u003c/code\u003e\u003c/a\u003e FIX: avoid EfficiencyWarning in OPTICS with metric='precomputed' (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34692\"\u003e#34692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.9.0...1.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `greenlet` from 3.5.5 to 3.5.6\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.6 (2026-09-14)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect a race condition that could lead to garbage collection\nunintentionally being disabled. See \u003ccode\u003ePR 529 \u0026lt;https://github.com/python-greenlet/greenlet/pull/529\u0026gt;\u003c/code\u003e_ by Yurii.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-greenlet/greenlet/commit/abfe740315a9926ff180c622cf02f122c07f9126\"\u003e\u003ccode\u003eabfe740\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/e23e3e47df21bbc7a83219621ce4966d349f7d2b\"\u003e\u003ccode\u003ee23e3e4\u003c/code\u003e\u003c/a\u003e Change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/529\"\u003e#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/8de830f6df6fefd533fedbe4bb0a2028bcf77372\"\u003e\u003ccode\u003e8de830f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/529\"\u003e#529\u003c/a\u003e from Georggi/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/72d7cacf4cf667f92786db306be095b6041bca5a\"\u003e\u003ccode\u003e72d7cac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/530\"\u003e#530\u003c/a\u003e from python-greenlet/dependabot/github_actions/github...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ac01b7d1a6b3a4d2477c17a1047af6d0056d69a7\"\u003e\u003ccode\u003eac01b7d\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action in the github-actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/e18f5a6d2696c031d34cf4933dcdd6a8e37f6f85\"\u003e\u003ccode\u003ee18f5a6\u003c/code\u003e\u003c/a\u003e Simplify GCDisabledGuard constructor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6aaf3af698aa7789075a904e5bbb70e24df06553\"\u003e\u003ccode\u003e6aaf3af\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.6\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.5.5...3.5.6\"\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/MTES-MCT/monitorfish/pull/5511","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MTES-MCT%2Fmonitorfish/issues/5511","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5511/packages"},{"uuid":"5621433775","node_id":"PR_kwDOKs_3k88AAAABFlKh8A","number":560,"state":"open","title":"chore(deps-dev): update flake8 requirement from 7.4.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-28T21:23:29.000Z","updated_at":"2026-09-28T21:31:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): update","packages":[{"name":"flake8","old_version":"7.4.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [flake8](https://github.com/pycqa/flake8) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.4.0...7.4.1\"\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/vil02/adv_2023/pull/560","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vil02%2Fadv_2023/issues/560","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/560/packages"},{"uuid":"5619782546","node_id":"PR_kwDOM3C7CM8AAAABFj1Xpg","number":722,"state":"open","title":"chore(deps): bump flake8 from 7.3.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["abhimehro"],"locked":false,"comments_count":10,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-28T19:06:25.000Z","updated_at":"2026-10-03T13:08:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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/abhimehro/Hydrograph_Versus_Seatek_Sensors_Project/pull/722","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhimehro%2FHydrograph_Versus_Seatek_Sensors_Project/issues/722","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/722/packages"},{"uuid":"5616561625","node_id":"PR_kwDOEXayic8AAAABFhPbYA","number":448,"state":"closed","title":"build(deps-dev): bump flake8 from 7.3.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies"],"assignees":["kawaja"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T09:14:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-28T14:52:34.000Z","updated_at":"2026-10-03T09:14:11.000Z","time_to_close":411695,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.3.0\u0026new-version=7.4.1)](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/kawaja/oaat-operator/pull/448","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kawaja%2Foaat-operator/issues/448","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/448/packages"},{"uuid":"5612859410","node_id":"PR_kwDOR3dt1s8AAAABFePghg","number":408,"state":"closed","title":"deps(pip)(deps): bump the python-minor-and-patch group across 2 directories with 3 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-01T03:15:18.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-28T10:09:11.000Z","updated_at":"2026-10-01T03:15:20.000Z","time_to_close":234367,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(pip)(deps): bump","group_name":"python-minor-and-patch","update_count":3,"packages":[{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.54","new_version":"2.1.0","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.54","new_version":"2.1.0","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group with 3 updates in the /src/StackAlchemist.Templates/V1-Python-React/backend directory: [uvicorn](https://github.com/Kludex/uvicorn), [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) and [flake8](https://github.com/pycqa/flake8).\nBumps the python-minor-and-patch group with 3 updates in the /src/StackAlchemist.Templates/V2-Python-React/backend directory: [uvicorn](https://github.com/Kludex/uvicorn), [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) and [flake8](https://github.com/pycqa/flake8).\n\nUpdates `uvicorn` from 0.53.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\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.53.0...0.54.0\"\u003e0.53.0...0.54.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/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.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\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/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.54 to 2.1.0\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.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\nalias of the mapped table instead, if that selectable were anything other\nthan a table or a plain subquery, leading to incorrect results and/or\nnon-working queries.\u003c/p\u003e\n\u003cp\u003eThis includes \u003ccode\u003e_orm.aliased()\u003c/code\u003e against a \u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e\nconstruct, which would previously produce an alias of the base mapped\nclass only, discarding the polymorphic selectable and additional mappers.\nThe new construct now retains these, so that criteria against subclass\nattributes and the \u003ccode\u003einnerjoin\u003c/code\u003e and \u003ccode\u003eselectable\u003c/code\u003e parameters of\n\u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e take effect, and subclass columns are loaded\nup front.  The SQL rendered for these constructs now includes the\npolymorphic selectable.\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/13583\"\u003e#13583\u003c/a\u003e, \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13584\"\u003e#13584\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\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 `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.53.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\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.53.0...0.54.0\"\u003e0.53.0...0.54.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/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.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\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/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.54 to 2.1.0\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.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\nalias of the mapped table instead, if that selectable were anything other\nthan a table or a plain subquery, leading to incorrect results and/or\nnon-working queries.\u003c/p\u003e\n\u003cp\u003eThis includes \u003ccode\u003e_orm.aliased()\u003c/code\u003e against a \u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e\nconstruct, which would previously produce an alias of the base mapped\nclass only, discarding the polymorphic selectable and additional mappers.\nThe new construct now retains these, so that criteria against subclass\nattributes and the \u003ccode\u003einnerjoin\u003c/code\u003e and \u003ccode\u003eselectable\u003c/code\u003e parameters of\n\u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e take effect, and subclass columns are loaded\nup front.  The SQL rendered for these constructs now includes the\npolymorphic selectable.\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/13583\"\u003e#13583\u003c/a\u003e, \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13584\"\u003e#13584\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\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 `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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/stevenfackley/StackAlchemist/pull/408","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevenfackley%2FStackAlchemist/issues/408","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/408/packages"},{"uuid":"5607440776","node_id":"PR_kwDOE7LElc8AAAABFZ7wbw","number":57,"state":"open","title":"Bump flake8 from 7.3.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-28T00:02:58.000Z","updated_at":"2026-09-28T00:03:13.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.3.0\u0026new-version=7.4.1)](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/chris48s/flipboard/pull/57","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris48s%2Fflipboard/issues/57","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/57/packages"},{"uuid":"5604803808","node_id":"PR_kwDOSBdbBs8AAAABFX53UQ","number":565,"state":"open","title":"chore(deps-dev): Bump flake8 from 7.3.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-27T17:34:06.000Z","updated_at":"2026-09-27T17:34:26.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): Bump","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.3.0\u0026new-version=7.4.1)](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/spidermila/MedCover/pull/565","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/spidermila%2FMedCover/issues/565","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/565/packages"},{"uuid":"5602859622","node_id":"PR_kwDOUgdeXs8AAAABFWaUZw","number":19,"state":"open","title":"deps(pip)(deps-dev): update flake8 requirement from \u003e=7.0.0 to \u003e=7.4.1","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-27T13:05:02.000Z","updated_at":"2026-09-27T13:05:03.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(pip)(deps-dev): update","packages":[{"name":"flake8","old_version":"\u003e=7.0.0","new_version":"\u003e=7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [flake8](https://github.com/pycqa/flake8) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.0.0...7.4.1\"\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/cosgroma/prompt-manager/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosgroma%2Fprompt-manager/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"},{"uuid":"5598541548","node_id":"PR_kwDOTExL2M8AAAABFTOeiw","number":81,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 123 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-04T00:18:16.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-27T00:26:51.000Z","updated_at":"2026-10-04T00:18:18.000Z","time_to_close":604285,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":123,"packages":[{"name":"altair","old_version":"6.0.0","new_version":"6.3.0","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":"anthropic","old_version":"0.112.0","new_version":"1.8.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"anyio","old_version":"4.13.0","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"argon2-cffi-bindings","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/hynek/argon2-cffi-bindings"},{"name":"asgiref","old_version":"3.11.1","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"ast-serialize","old_version":"0.5.0","new_version":"0.11.2","repository_url":"https://github.com/mypyc/ast_serialize"},{"name":"astroid","old_version":"4.0.4","new_version":"4.3.1","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"asttokens","old_version":"3.0.1","new_version":"3.0.2","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.4.0","new_version":"26.1.0","repository_url":"https://github.com/python-attrs/attrs"},{"name":"beautifulsoup4","old_version":"4.14.3","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":"cachetools","old_version":"6.2.6","new_version":"7.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"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":"configargparse","old_version":"1.7.5","new_version":"1.7.7","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"contourpy","old_version":"1.3.3","new_version":"1.4.0","repository_url":"https://github.com/contourpy/contourpy"},{"name":"coverage","old_version":"7.14.1","new_version":"7.16.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"debugpy","old_version":"1.8.20","new_version":"1.8.22","repository_url":"https://github.com/microsoft/debugpy"},{"name":"fastapi","old_version":"0.135.3","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastjsonschema","old_version":"2.21.2","new_version":"2.22.2","repository_url":"https://github.com/horejsek/python-fastjsonschema"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"fonttools","old_version":"4.61.1","new_version":"4.66.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"fpdf2","old_version":"2.8.7","new_version":"2.8.8","repository_url":"https://github.com/py-pdf/fpdf2"},{"name":"gevent","old_version":"25.9.1","new_version":"26.9.0","repository_url":"https://github.com/gevent/gevent"},{"name":"gitpython","old_version":"3.1.50","new_version":"3.1.62","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"googleapis-common-protos","old_version":"1.75.0","new_version":"1.75.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.5.2","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"groq","old_version":"0.37.1","new_version":"1.7.0","repository_url":"https://github.com/groq/groq-python"},{"name":"grpcio","old_version":"1.81.1","new_version":"1.84.0","repository_url":"https://github.com/grpc/grpc"},{"name":"idna","old_version":"3.15","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"imbalanced-learn","old_version":"0.14.1","new_version":"0.14.2","repository_url":"https://github.com/scikit-learn-contrib/imbalanced-learn"},{"name":"ipykernel","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"ipython","old_version":"9.13.0","new_version":"9.17.1","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.8","new_version":"8.1.9","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"isort","old_version":"8.0.1","new_version":"9.0.1","repository_url":"https://github.com/PyCQA/isort"},{"name":"jiter","old_version":"0.15.0","new_version":"0.17.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"json5","old_version":"0.14.0","new_version":"0.15.0","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"jupyter-client","old_version":"8.8.0","new_version":"8.10.0","repository_url":"https://github.com/jupyter/jupyter_client"},{"name":"jupyter-server","old_version":"2.20.0","new_version":"2.21.1","repository_url":"https://github.com/jupyter-server/jupyter_server"},{"name":"jupyterlab","old_version":"4.5.9","new_version":"4.6.4","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"jupyterlab-server","old_version":"2.28.0","new_version":"2.28.1","repository_url":"https://github.com/jupyterlab/jupyterlab_server"},{"name":"jupyterlab-widgets","old_version":"3.0.16","new_version":"3.0.17","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"kiwisolver","old_version":"1.4.9","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langchain-protocol","old_version":"0.0.15","new_version":"0.0.19","repository_url":"https://github.com/langchain-ai/agent-protocol"},{"name":"langsmith","old_version":"0.8.18","new_version":"0.14.0","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"levenshtein","old_version":"0.27.3","new_version":"0.27.5","repository_url":"https://github.com/rapidfuzz/Levenshtein"},{"name":"librt","old_version":"0.11.0","new_version":"0.15.0","repository_url":"https://github.com/mypyc/librt"},{"name":"locust","old_version":"2.44.4","new_version":"2.46.6","repository_url":"https://github.com/locustio/locust"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.11.2","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mistune","old_version":"3.3.0","new_version":"3.3.4","repository_url":"https://github.com/lepture/mistune"},{"name":"msgpack","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"narwhals","old_version":"2.16.0","new_version":"2.26.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"nbclient","old_version":"0.10.4","new_version":"0.11.0","repository_url":"https://github.com/jupyter/nbclient"},{"name":"nbformat","old_version":"5.10.4","new_version":"5.11.1","repository_url":"https://github.com/jupyter/nbformat"},{"name":"openai","old_version":"2.44.0","new_version":"3.19.2","repository_url":"https://github.com/openai/openai-python"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.0","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pandas","old_version":"2.3.3","new_version":"3.0.6","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"platformdirs","old_version":"4.10.0","new_version":"4.11.12","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.25.0","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"pure-eval","old_version":"0.2.3","new_version":"0.2.4","repository_url":"https://github.com/alexmojaki/pure_eval"},{"name":"pyarrow","old_version":"23.0.1","new_version":"25.0.1","repository_url":"https://github.com/apache/arrow"},{"name":"pycodestyle","old_version":"2.14.0","new_version":"2.15.0","repository_url":"https://github.com/PyCQA/pycodestyle"},{"name":"pydantic-settings","old_version":"2.14.2","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":"pyflakes","old_version":"3.4.0","new_version":"4.0.0","repository_url":"https://github.com/PyCQA/pyflakes"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.13.0","new_version":"2.15.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pylint","old_version":"4.0.6","new_version":"4.0.9","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pyparsing","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pytest-cov","old_version":"5.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-engineio","old_version":"4.13.3","new_version":"4.14.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-json-logger","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"python-levenshtein","old_version":"0.27.3","new_version":"0.27.5","repository_url":"https://github.com/rapidfuzz/python-Levenshtein"},{"name":"python-socketio","old_version":"5.16.3","new_version":"5.17.0","repository_url":"https://github.com/sponsors/miguelgrinberg"},{"name":"pytz","old_version":"2025.2","new_version":"2026.3.post1","repository_url":"https://github.com/stub42/pytz"},{"name":"pyzmq","old_version":"27.1.0","new_version":"27.2.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"rapidfuzz","old_version":"3.14.5","new_version":"3.14.6","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"redis","old_version":"4.6.0","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"rpds-py","old_version":"0.30.0","new_version":"2026.6.3","repository_url":"https://github.com/crate-py/rpds"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"setuptools","old_version":"83.0.0","new_version":"84.0.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"sklearn-compat","old_version":"0.1.5","new_version":"0.1.6","repository_url":"https://github.com/sklearn-compat/sklearn-compat"},{"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.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.51","new_version":"2.0.54","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"1.3.1","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.64.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"threadpoolctl","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tomlkit","old_version":"0.15.0","new_version":"0.15.1","repository_url":"https://github.com/python-poetry/tomlkit"},{"name":"tornado","old_version":"6.5.7","new_version":"6.5.10","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"tqdm","old_version":"4.68.3","new_version":"4.70.1","repository_url":"https://github.com/tqdm/tqdm"},{"name":"traitlets","old_version":"5.15.0","new_version":"5.16.1","repository_url":"https://github.com/ipython/traitlets"},{"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":"tzdata","old_version":"2025.3","new_version":"2026.4","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uuid-utils","old_version":"0.16.0","new_version":"1.0.0","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.44.0","new_version":"0.53.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.7.0","new_version":"0.9.1","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockets","old_version":"15.0","new_version":"17.1","repository_url":"https://github.com/python-websockets/websockets"},{"name":"widgetsnbextension","old_version":"4.0.15","new_version":"4.0.16"},{"name":"wrapt","old_version":"2.2.2","new_version":"2.4.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"xxhash","old_version":"3.7.0","new_version":"4.0.1","repository_url":"https://github.com/ifduyue/python-xxhash"},{"name":"zope-interface","old_version":"8.5","new_version":"8.6","repository_url":"https://github.com/zopefoundation/zope.interface"},{"name":"sse-starlette","old_version":"2.1.0","new_version":"3.4.11","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"arq","old_version":"0.26.0","new_version":"0.28.0","repository_url":"https://github.com/python-arq/arq"},{"name":"python-multipart","old_version":"0.0.31","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"tiktoken","old_version":"0.7.0","new_version":"0.14.0","repository_url":"https://github.com/openai/tiktoken"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 123 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [altair](https://github.com/vega/altair) | `6.0.0` | `6.3.0` |\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| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.112.0` | `1.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.15.1` |\n| [argon2-cffi-bindings](https://github.com/hynek/argon2-cffi-bindings) | `25.1.0` | `26.1.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.1` | `3.12.1` |\n| [ast-serialize](https://github.com/mypyc/ast_serialize) | `0.5.0` | `0.11.2` |\n| [astroid](https://github.com/pylint-dev/astroid) | `4.0.4` | `4.3.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.1` | `3.0.2` |\n| [attrs](https://github.com/python-attrs/attrs) | `25.4.0` | `26.1.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [bidict](https://github.com/jab/bidict) | `0.23.1` | `0.24.1` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.2.6` | `7.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.1.4` | `2026.7.22` |\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| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7.5` | `1.7.7` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.3` | `1.4.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.14.1` | `7.16.1` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.20` | `1.8.22` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.3` | `0.141.1` |\n| [fastjsonschema](https://github.com/horejsek/python-fastjsonschema) | `2.21.2` | `2.22.2` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.61.1` | `4.66.0` |\n| [fpdf2](https://github.com/py-pdf/fpdf2) | `2.8.7` | `2.8.8` |\n| [gevent](https://github.com/gevent/gevent) | `25.9.1` | `26.9.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.50` | `3.1.62` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.75.0` | `1.75.3` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.5.2` | `3.5.6` |\n| [groq](https://github.com/groq/groq-python) | `0.37.1` | `1.7.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.81.1` | `1.84.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.20` |\n| [imbalanced-learn](https://github.com/scikit-learn-contrib/imbalanced-learn) | `0.14.1` | `0.14.2` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `7.2.0` | `7.3.0` |\n| [ipython](https://github.com/ipython/ipython) | `9.13.0` | `9.17.1` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.8` | `8.1.9` |\n| [isort](https://github.com/PyCQA/isort) | `8.0.1` | `9.0.1` |\n| [jiter](https://github.com/pydantic/jiter) | `0.15.0` | `0.17.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.14.0` | `0.15.0` |\n| [jupyter-client](https://github.com/jupyter/jupyter_client) | `8.8.0` | `8.10.0` |\n| [jupyter-server](https://github.com/jupyter-server/jupyter_server) | `2.20.0` | `2.21.1` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.5.9` | `4.6.4` |\n| [jupyterlab-server](https://github.com/jupyterlab/jupyterlab_server) | `2.28.0` | `2.28.1` |\n| [jupyterlab-widgets](https://github.com/jupyter-widgets/ipywidgets) | `3.0.16` | `3.0.17` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.9` | `1.5.1` |\n| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.15` | `0.0.19` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.18` | `0.14.0` |\n| [levenshtein](https://github.com/rapidfuzz/Levenshtein) | `0.27.3` | `0.27.5` |\n| [librt](https://github.com/mypyc/librt) | `0.11.0` | `0.15.0` |\n| [locust](https://github.com/locustio/locust) | `2.44.4` | `2.46.6` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.11.2` |\n| [mistune](https://github.com/lepture/mistune) | `3.3.0` | `3.3.4` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.2` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.16.0` | `2.26.0` |\n| [nbclient](https://github.com/jupyter/nbclient) | `0.10.4` | `0.11.0` |\n| [nbformat](https://github.com/jupyter/nbformat) | `5.10.4` | `5.11.1` |\n| [openai](https://github.com/openai/openai-python) | `2.44.0` | `3.19.2` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.3` | `3.0.6` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.10.0` | `4.11.12` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.25.0` | `0.26.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [pure-eval](https://github.com/alexmojaki/pure_eval) | `0.2.3` | `0.2.4` |\n| [pyarrow](https://github.com/apache/arrow) | `23.0.1` | `25.0.1` |\n| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.14.0` | `2.15.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pyflakes](https://github.com/PyCQA/pyflakes) | `3.4.0` | `4.0.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.13.0` | `2.15.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `4.0.6` | `4.0.9` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.3.2` | `3.3.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `5.0.0` | `7.1.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.13.3` | `4.14.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.1.0` | `4.2.0` |\n| [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) | `0.27.3` | `0.27.5` |\n| [python-socketio](https://github.com/sponsors/miguelgrinberg) | `5.16.3` | `5.17.0` |\n| [pytz](https://github.com/stub42/pytz) | `2025.2` | `2026.3.post1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `27.1.0` | `27.2.0` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.5` | `3.14.6` |\n| [redis](https://github.com/redis/redis-py) | `4.6.0` | `8.1.0` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.30.0` | `2026.6.3` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `83.0.0` | `84.0.0` |\n| [sklearn-compat](https://github.com/sklearn-compat/sklearn-compat) | `0.1.5` | `0.1.6` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.2` | `5.0.3` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.51` | `2.0.54` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.7.0` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.64.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.6.0` | `3.7.0` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.15.0` | `0.15.1` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.7` | `6.5.10` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.68.3` | `4.70.1` |\n| [traitlets](https://github.com/ipython/traitlets) | `5.15.0` | `5.16.1` |\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| [tzdata](https://github.com/python/tzdata) | `2025.3` | `2026.4` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.7.0` | `2.8.0` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.16.0` | `1.0.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.44.0` | `0.53.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.2.0` | `1.3.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.7.0` | `0.9.1` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0` | `17.1` |\n| [widgetsnbextension](http://jupyter.org) | `4.0.15` | `4.0.16` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.2.2` | `2.4.1` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.7.0` | `4.0.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `8.5` | `8.6` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `2.1.0` | `3.4.11` |\n| [arq](https://github.com/python-arq/arq) | `0.26.0` | `0.28.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.31` | `0.0.32` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.7.0` | `0.14.0` |\n\n\nUpdates `altair` from 6.0.0 to 6.3.0\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.3.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee below for details on what is new in this release. A special compatibility note is that this release drops support for Python 3.10 (which is reaching end of life in Oct).\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Allow signals/params to be passed to alt.datum[...] 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/3990\"\u003evega/altair#3990\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eYou can now write \u003ccode\u003ealt.datum[xcol_param]\u003c/code\u003e in addition to \u003ccode\u003ef'datum[{xcol_param.name}]'\u003c/code\u003e as in \u003ca href=\"https://altair-viz.github.io/user_guide/interactions/bindings_widgets.html#encoding-channel-binding\"\u003ethis example in the docs\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: raise TypeError for invalid property setter arguments by \u003ca href=\"https://github.com/suzunn\"\u003e\u003ccode\u003e@​suzunn\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4068\"\u003evega/altair#4068\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003ePreviously, these would be silently discarded but now an error would be raised instead, e.g. the second argument in \u003ccode\u003ealt.X(\u0026quot;field:Q\u0026quot;).scale([\u0026quot;a\u0026quot;, \u0026quot;b\u0026quot;], [\u0026quot;#1FC3AA\u0026quot;, \u0026quot;#8624F5\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003efix: Expression objects not working in alt.value() by \u003ca href=\"https://github.com/genrichez\"\u003e\u003ccode\u003e@​genrichez\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4083\"\u003evega/altair#4083\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eYou can now write \u003ccode\u003ealt.value(alt.expr.scale(\u0026quot;x\u0026quot;, alt.datum.c1)\u003c/code\u003e in addition to \u003ccode\u003ealt.value(alt.expr(\u0026quot;scale('x', datum.c1)\u0026quot;))\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003efix: report missing anywidget for JupyterChart by \u003ca href=\"https://github.com/dk3yyyy\"\u003e\u003ccode\u003e@​dk3yyyy\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4089\"\u003evega/altair#4089\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: add date input gallery example by \u003ca href=\"https://github.com/Kato-MT\"\u003e\u003ccode\u003e@​Kato-MT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4088\"\u003evega/altair#4088\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add number input to date input example by \u003ca href=\"https://github.com/SR0725\"\u003e\u003ccode\u003e@​SR0725\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4091\"\u003evega/altair#4091\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove altair_data_server references by \u003ca href=\"https://github.com/youdie006\"\u003e\u003ccode\u003e@​youdie006\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4074\"\u003evega/altair#4074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Fix two typos in datasets module by \u003ca href=\"https://github.com/maxtaran2010\"\u003e\u003ccode\u003e@​maxtaran2010\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4081\"\u003evega/altair#4081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: document lookup key compatibility by \u003ca href=\"https://github.com/SR0725\"\u003e\u003ccode\u003e@​SR0725\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4094\"\u003evega/altair#4094\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Insert relevant \u0026quot;Learn more\u0026quot; links in gallery examples 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/4002\"\u003evega/altair#4002\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ebuild: Drop support for Python 3.10 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/4029\"\u003evega/altair#4029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Change timing to actually be only twice a month 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/4073\"\u003evega/altair#4073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Handle mistune expression signature tokens 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/4076\"\u003evega/altair#4076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Note that docs are now automatically built 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/4075\"\u003evega/altair#4075\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(typing): Remove PEP 728 type ignores by \u003ca href=\"https://github.com/MarcoGorelli\"\u003e\u003ccode\u003e@​MarcoGorelli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4080\"\u003evega/altair#4080\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: bump actions/checkout from 6 to 7 in the github-actions-version-updates 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/vega/altair/pull/4079\"\u003evega/altair#4079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Keep tagless forks compatible with sphinxext-altair's altair\u0026gt;=4 requirement 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/4097\"\u003evega/altair#4097\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Gate release tags on approval 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/4099\"\u003evega/altair#4099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Improve wording and format of release message 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/4101\"\u003evega/altair#4101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Update ty, ruff and mypy type-checker version by \u003ca href=\"https://github.com/alec-bike\"\u003e\u003ccode\u003e@​alec-bike\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4098\"\u003evega/altair#4098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Allow overriding the release bump type by \u003ca href=\"https://github.com/mattijn\"\u003e\u003ccode\u003e@​mattijn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4103\"\u003evega/altair#4103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Group security 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/4115\"\u003evega/altair#4115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Group all non-major updates together and clarify names 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/4123\"\u003evega/altair#4123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: bump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4124\"\u003evega/altair#4124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Group dependabot correctly 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/4130\"\u003evega/altair#4130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: bump the uv-minor-date group with 5 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/vega/altair/pull/4131\"\u003evega/altair#4131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: bump the uv-minor group across 1 directory with 19 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/vega/altair/pull/4132\"\u003evega/altair#4132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: bump the uv-security group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4133\"\u003evega/altair#4133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Fix generation script and ci check 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/4136\"\u003evega/altair#4136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Remove dead doc-build code and deprecated attribute access 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/4122\"\u003evega/altair#4122\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/youdie006\"\u003e\u003ccode\u003e@​youdie006\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4074\"\u003evega/altair#4074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/maxtaran2010\"\u003e\u003ccode\u003e@​maxtaran2010\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4081\"\u003evega/altair#4081\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/vega/altair/commit/78c66bf226b3bb36277fe0c261f469e5b6200a30\"\u003e\u003ccode\u003e78c66bf\u003c/code\u003e\u003c/a\u003e ci: Fix generation script and ci check (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4136\"\u003e#4136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/05c144f669dfc89f6655b54e25954521ee0daaa5\"\u003e\u003ccode\u003e05c144f\u003c/code\u003e\u003c/a\u003e feat: Allow signals/params to be passed to alt.datum[...] (\u003ca href=\"https://redirect.github.com/vega/altair/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/d119fd4dfbe459868c71209cd87f8446f9e34046\"\u003e\u003ccode\u003ed119fd4\u003c/code\u003e\u003c/a\u003e build: bump the uv-security group across 1 directory with 2 updates (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4133\"\u003e#4133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/b37a571b0e6a54f5b62ede5b14414007db1225c9\"\u003e\u003ccode\u003eb37a571\u003c/code\u003e\u003c/a\u003e build: bump the uv-minor group across 1 directory with 19 updates (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4132\"\u003e#4132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/d2ef223f81215794b6acb51b177ca8bf5e30cc1d\"\u003e\u003ccode\u003ed2ef223\u003c/code\u003e\u003c/a\u003e build: bump the uv-minor-date group with 5 updates (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4131\"\u003e#4131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/efaebb3cf2a1e53db0e76885374bca47a1b1dca8\"\u003e\u003ccode\u003eefaebb3\u003c/code\u003e\u003c/a\u003e ci: Group dependabot correctly (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4130\"\u003e#4130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/76d4de260ca6700ae442ccee68db297a29b1685a\"\u003e\u003ccode\u003e76d4de2\u003c/code\u003e\u003c/a\u003e ci: bump setup-python and gh-action-pypi-publish (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4124\"\u003e#4124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/fa42fef1937f2b0b624b2e526c660f2c48208bab\"\u003e\u003ccode\u003efa42fef\u003c/code\u003e\u003c/a\u003e ci: Group all non-major updates together and clarify names (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4123\"\u003e#4123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/2fd4707a3d0db83eb5919d37c110ab964f508d66\"\u003e\u003ccode\u003e2fd4707\u003c/code\u003e\u003c/a\u003e build: Remove dead code and deprecated attribute access (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/63ebce75c2d481871dfd911514c595004a120e4c\"\u003e\u003ccode\u003e63ebce7\u003c/code\u003e\u003c/a\u003e ci: Group security updates (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4115\"\u003e#4115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/vega/altair/compare/v6.0.0...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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 `anthropic` from 0.112.0 to 1.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.8.0\u003c/h2\u003e\n\u003ch2\u003e1.8.0 (2026-09-22)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.7.0...v1.8.0\"\u003ev1.7.0...v1.8.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for claude-opus-5-5, inline tool definitions and MCP tool-list pinning (beta) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b5cc70071a60def1d2e93f3634d1a595919007c8\"\u003eb5cc700\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e share one evaluated_permission enum across Managed Agents events (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f4f51c8d4c8d6d8ec8ed21775034ca3b3736d733\"\u003ef4f51c8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e avoid a Python 3.13 crash at exit when a stream is left open (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/af029bdfe4433ce209092b017834ff0eb4f44e79\"\u003eaf029bd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e add_tools() takes effect straight away (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/874\"\u003e#874\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/06d0a6b7edf440b8561e6ee60b84aecde27391e0\"\u003e06d0a6b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e leave reply-only params off the tool runner's compaction request (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/871\"\u003e#871\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4687310822f40691a30afcfdf20956747fb38f5e\"\u003e4687310\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add descriptions to the Dreams API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add descriptions to the User Profiles API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add memory store descriptions to the Managed Agents API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e improve descriptions in the Dreams API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1f5e477a25f5a873480486a939d7e39529c55130\"\u003e1f5e477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e simplify the session thread agent type description (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a45b7ec22441032c19be720f273af6313dd73f1e\"\u003ea45b7ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e update diagnostics field descriptions on beta messages (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/367750c99c5daae6e28ed10b71db0410ced7c0f9\"\u003e367750c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e fix tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/70c8cbd86c4095379bc6bca925126a151396efd2\"\u003e70c8cbd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e remove mypy (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/be01ed6d7cd6798fbf442286ddc4cccc64a7a3ac\"\u003ebe01ed6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e update fixtures (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/77f6df825350e37018e2439c1178179e98e0bf96\"\u003e77f6df8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd path and header parameter descriptions (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f429a301cb750f51002d2d18fb125aa43b7251c3\"\u003ef429a30\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e remove the request param transform in favour of the JSON encoder (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/539422cde127564a60d9bf1e700445f39e0cff33\"\u003e539422c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.7.0\u003c/h2\u003e\n\u003ch2\u003e1.7.0 (2026-09-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.6.0...v1.7.0\"\u003ev1.6.0...v1.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add group with display_name to rate limits, deprecate group_type (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/28f0a831355fa3d539fd3e1db1c63f92a39bb252\"\u003e28f0a83\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e add compact_before_next_turn() to the tool runner (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/641\"\u003e#641\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8b23fb33f326c7ffa52e8d925902af0fd94501ce\"\u003e8b23fb3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.8.0 (2026-09-22)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.7.0...v1.8.0\"\u003ev1.7.0...v1.8.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for claude-opus-5-5, inline tool definitions and MCP tool-list pinning (beta) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b5cc70071a60def1d2e93f3634d1a595919007c8\"\u003eb5cc700\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e share one evaluated_permission enum across Managed Agents events (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f4f51c8d4c8d6d8ec8ed21775034ca3b3736d733\"\u003ef4f51c8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e avoid a Python 3.13 crash at exit when a stream is left open (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/af029bdfe4433ce209092b017834ff0eb4f44e79\"\u003eaf029bd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e add_tools() takes effect straight away (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/874\"\u003e#874\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/06d0a6b7edf440b8561e6ee60b84aecde27391e0\"\u003e06d0a6b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e leave reply-only params off the tool runner's compaction request (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/871\"\u003e#871\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4687310822f40691a30afcfdf20956747fb38f5e\"\u003e4687310\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add descriptions to the Dreams API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add descriptions to the User Profiles API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add memory store descriptions to the Managed Agents API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e improve descriptions in the Dreams API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1f5e477a25f5a873480486a939d7e39529c55130\"\u003e1f5e477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e simplify the session thread agent type description (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a45b7ec22441032c19be720f273af6313dd73f1e\"\u003ea45b7ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e update diagnostics field descriptions on beta messages (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/367750c99c5daae6e28ed10b71db0410ced7c0f9\"\u003e367750c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e fix tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/70c8cbd86c4095379bc6bca925126a151396efd2\"\u003e70c8cbd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e remove mypy (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/be01ed6d7cd6798fbf442286ddc4cccc64a7a3ac\"\u003ebe01ed6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e update fixtures (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/77f6df825350e37018e2439c1178179e98e0bf96\"\u003e77f6df8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd path and header parameter descriptions (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f429a301cb750f51002d2d18fb125aa43b7251c3\"\u003ef429a30\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e remove the request param transform in favour of the JSON encoder (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/539422cde127564a60d9bf1e700445f39e0cff33\"\u003e539422c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.7.0 (2026-09-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.6.0...v1.7.0\"\u003ev1.6.0...v1.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add group with display_name to rate limits, deprecate group_type (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/28f0a831355fa3d539fd3e1db1c63f92a39bb252\"\u003e28f0a83\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e add compact_before_next_turn() to the tool runner (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/641\"\u003e#641\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8b23fb33f326c7ffa52e8d925902af0fd94501ce\"\u003e8b23fb3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4421d56a4dd23550c7097c9b7ab5668bd11e09c4\"\u003e\u003ccode\u003e4421d56\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1946\"\u003e#1946\u003c/a\u003e from anthropics/release-please--branches--main--chan...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/d0247c2d16edae0fb9a590a41c9c35802f38c61a\"\u003e\u003ccode\u003ed0247c2\u003c/code\u003e\u003c/a\u003e release: 1.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/be01ed6d7cd6798fbf442286ddc4cccc64a7a3ac\"\u003e\u003ccode\u003ebe01ed6\u003c/code\u003e\u003c/a\u003e chore(internal): remove mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/06d0a6b7edf440b8561e6ee60b84aecde27391e0\"\u003e\u003ccode\u003e06d0a6b\u003c/code\u003e\u003c/a\u003e fix(tools): add_tools() takes effect straight away (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/af029bdfe4433ce209092b017834ff0eb4f44e79\"\u003e\u003ccode\u003eaf029bd\u003c/code\u003e\u003c/a\u003e fix(streaming): avoid a Python 3.13 crash at exit when a stream is left open\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4687310822f40691a30afcfdf20956747fb38f5e\"\u003e\u003ccode\u003e4687310\u003c/code\u003e\u003c/a\u003e fix(tools): leave reply-only params off the tool runner's compaction request ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b5cc70071a60def1d2e93f3634d1a595919007c8\"\u003e\u003ccode\u003eb5cc700\u003c/code\u003e\u003c/a\u003e feat(api): add support for claude-opus-5-5, inline tool definitions and MCP t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/70c8cbd86c4095379bc6bca925126a151396efd2\"\u003e\u003ccode\u003e70c8cbd\u003c/code\u003e\u003c/a\u003e chore(internal): fix tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/539422cde127564a60d9bf1e700445f39e0cff33\"\u003e\u003ccode\u003e539422c\u003c/code\u003e\u003c/a\u003e refactor(client): remove the request param transform in favour of the JSON en...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/10a4c07e058f9cf7f00c5273f9304347194f0bb8\"\u003e\u003ccode\u003e10a4c07\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.112.0...v1.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.13.0 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 c...\n\n_Description has been truncated_","html_url":"https://github.com/naman2812/NeuroFlow-HiDevs/pull/81","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/naman2812%2FNeuroFlow-HiDevs/issues/81","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/81/packages"},{"uuid":"5589598918","node_id":"PR_kwDOLNaJIs8AAAABFMceWA","number":599,"state":"open","title":"Bump the code-style-depedencies group across 1 directory with 2 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["luisa-beerboom"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-25T23:22:55.000Z","updated_at":"2026-09-29T11:39:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"code-style-depedencies","update_count":2,"packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"debugpy","old_version":"1.8.21","new_version":"1.8.22","repository_url":"https://github.com/microsoft/debugpy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the code-style-depedencies group with 2 updates in the /dev directory: [flake8](https://github.com/pycqa/flake8) and [debugpy](https://github.com/microsoft/debugpy).\n\nUpdates `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `debugpy` from 1.8.21 to 1.8.22\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/debugpy/releases\"\u003edebugpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003edebugpy v1.8.22\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix invalid type annotation in test_pydev_monkey comprehension by \u003ca href=\"https://github.com/pdepetro\"\u003e\u003ccode\u003e@​pdepetro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2033\"\u003emicrosoft/debugpy#2033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PEP 768 code injection SyntaxError when temp path contains backslashes by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e with \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2038\"\u003emicrosoft/debugpy#2038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix race between adapter connection publication and session attachment by \u003ca href=\"https://github.com/aperez\"\u003e\u003ccode\u003e@​aperez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2049\"\u003emicrosoft/debugpy#2049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix debugger hang when expanding objects with blocking property getters (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2053\"\u003e#2053\u003c/a\u003e) by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2055\"\u003emicrosoft/debugpy#2055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix duplicate stopped event when two threads hit a breakpoint at once by \u003ca href=\"https://github.com/aperez\"\u003e\u003ccode\u003e@​aperez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2056\"\u003emicrosoft/debugpy#2056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid exceptions in environment diagnostics by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2059\"\u003emicrosoft/debugpy#2059\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix thread identity when the first traced call is another thread's is_alive() by \u003ca href=\"https://github.com/aperez\"\u003e\u003ccode\u003e@​aperez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2061\"\u003emicrosoft/debugpy#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect isolated mode when patching sys.path by \u003ca href=\"https://github.com/karandhaodiyal28-hash\"\u003e\u003ccode\u003e@​karandhaodiyal28-hash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2050\"\u003emicrosoft/debugpy#2050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd trigger_exception_handler() for post-mortem debugging of caught exceptions by \u003ca href=\"https://github.com/nshepperd\"\u003e\u003ccode\u003e@​nshepperd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1996\"\u003emicrosoft/debugpy#1996\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd lldb attach-to-PID option for debugpy on Linux by \u003ca href=\"https://github.com/pdepetro\"\u003e\u003ccode\u003e@​pdepetro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2052\"\u003emicrosoft/debugpy#2052\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePopulate hitBreakpointIds in the DAP stopped event by \u003ca href=\"https://github.com/aperez\"\u003e\u003ccode\u003e@​aperez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2060\"\u003emicrosoft/debugpy#2060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn the endpoint from listen() with the in-process adapter by \u003ca href=\"https://github.com/karandhaodiyal28-hash\"\u003e\u003ccode\u003e@​karandhaodiyal28-hash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2051\"\u003emicrosoft/debugpy#2051\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInfrastructure work\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Dependabot configuration for pip and GitHub Actions by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2041\"\u003emicrosoft/debugpy#2041\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate vendored pydevd 3.4.1 -\u0026gt; 3.5.0 (maintenance refresh) by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2044\"\u003emicrosoft/debugpy#2044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin secure test dependency floors and drop EOL Python 3.9/3.8 by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2045\"\u003emicrosoft/debugpy#2045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd more typing to debugpy and switch to 'standard' type checking mode by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1637\"\u003emicrosoft/debugpy#1637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd debugpy release agent by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2062\"\u003emicrosoft/debugpy#2062\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin GitHub Actions to full-length commit SHAs by \u003ca href=\"https://github.com/danfiedler-msft\"\u003e\u003ccode\u003e@​danfiedler-msft\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2063\"\u003emicrosoft/debugpy#2063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.15 to tests by \u003ca href=\"https://github.com/finnagin\"\u003e\u003ccode\u003e@​finnagin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2069\"\u003emicrosoft/debugpy#2069\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/pdepetro\"\u003e\u003ccode\u003e@​pdepetro\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nshepperd\"\u003e\u003ccode\u003e@​nshepperd\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/aperez\"\u003e\u003ccode\u003e@​aperez\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/karandhaodiyal28-hash\"\u003e\u003ccode\u003e@​karandhaodiyal28-hash\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/danfiedler-msft\"\u003e\u003ccode\u003e@​danfiedler-msft\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/finnagin\"\u003e\u003ccode\u003e@​finnagin\u003c/code\u003e\u003c/a\u003e for the commits.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/microsoft/debugpy/compare/v1.8.21...v1.8.22\"\u003ehttps://github.com/microsoft/debugpy/compare/v1.8.21...v1.8.22\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/microsoft/debugpy/commit/e2208059db34fa1055c809ff0b303ae1cf1868d7\"\u003e\u003ccode\u003ee220805\u003c/code\u003e\u003c/a\u003e Add python 3.15 to tests (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2069\"\u003e#2069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/e5743d3a00c6dee7d8140275c7df7e719ebb132f\"\u003e\u003ccode\u003ee5743d3\u003c/code\u003e\u003c/a\u003e Pin GitHub Actions to full-length commit SHAs (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2063\"\u003e#2063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/7959635126d23680e88e266b42ba7c1b91cf4b16\"\u003e\u003ccode\u003e7959635\u003c/code\u003e\u003c/a\u003e Respect isolated mode when patching sys.path (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2050\"\u003e#2050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/6dd019a6fb8e45bf84ce9c648234ebc703f35dd5\"\u003e\u003ccode\u003e6dd019a\u003c/code\u003e\u003c/a\u003e Add debugpy release agent (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2062\"\u003e#2062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/d98001c459bf01df0e285ecb5515dad483f776f8\"\u003e\u003ccode\u003ed98001c\u003c/code\u003e\u003c/a\u003e Fix thread identity when the first traced call is another thread's is_alive()...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/7ca4578da46cf172a00994f4f327f733695bb955\"\u003e\u003ccode\u003e7ca4578\u003c/code\u003e\u003c/a\u003e Return the endpoint from listen() with the in-process adapter (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2051\"\u003e#2051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/9832f3f99be7c5c12587ed0df122ce51b3fb735c\"\u003e\u003ccode\u003e9832f3f\u003c/code\u003e\u003c/a\u003e Add more typing to debugpy and switch to 'standard' type checking mode (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1637\"\u003e#1637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/2f73444688e6d617c2fafb629e42c92133361e62\"\u003e\u003ccode\u003e2f73444\u003c/code\u003e\u003c/a\u003e Populate hitBreakpointIds in the DAP stopped event (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2060\"\u003e#2060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/7d3f86119e5e9fc435983839ea732a58e86ceaeb\"\u003e\u003ccode\u003e7d3f861\u003c/code\u003e\u003c/a\u003e Avoid exceptions in environment diagnostics (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2059\"\u003e#2059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/f77d44824c13ca56f907155a940a5bafb1467d87\"\u003e\u003ccode\u003ef77d448\u003c/code\u003e\u003c/a\u003e Fix duplicate stopped event when two threads hit a breakpoint at once (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2056\"\u003e#2056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/debugpy/compare/v1.8.21...v1.8.22\"\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/OpenSlides/openslides-meta/pull/599","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenSlides%2Fopenslides-meta/issues/599","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/599/packages"}],"issue_packages":[{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-10-03T06:36:12.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5687275181","node_id":"PR_kwDOPyIw988AAAABGZx5gQ","number":1398,"state":"closed","title":"deps(deps): bump the python-minor-patch group across 1 directory with 42 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-10-03T19:26:03.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-03T06:36:12.000Z","updated_at":"2026-10-03T19:26:13.000Z","time_to_close":46191,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): bump","group_name":"python-minor-patch","update_count":42,"packages":[{"name":"readchar","old_version":"4.2.1","new_version":"4.2.2","repository_url":"https://github.com/magmax/python-readchar"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"docker","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/docker/docker-py"},{"name":"litellm","old_version":"1.88.6","new_version":"1.103.1","repository_url":"https://github.com/BerriAI/litellm"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.54.0"},{"name":"chardet","old_version":"7.4.0.post2","new_version":"7.6.0","repository_url":"https://github.com/chardet/chardet"},{"name":"numpy","old_version":"2.4.4","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"pandas","old_version":"3.0.1","new_version":"3.0.6","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"markdown","old_version":"3.10.2","new_version":"3.11","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"pdfplumber","old_version":"0.11.9","new_version":"0.11.10","repository_url":"https://github.com/jsvine/pdfplumber"},{"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":"pytest-mock","old_version":"3.15.1","new_version":"3.16.0","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"ruff","old_version":"0.14.14","new_version":"0.16.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"dopetask","old_version":"0.5.1","new_version":"0.5.7","repository_url":"https://github.com/DDD-Enterprises/dopeTask"},{"name":"tree-sitter","old_version":"0.25.2","new_version":"0.26.0","repository_url":"https://github.com/tree-sitter/py-tree-sitter"},{"name":"tree-sitter-python","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-python"},{"name":"tree-sitter-javascript","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-javascript"},{"name":"tree-sitter-typescript","old_version":"0.23.0","new_version":"0.23.2","repository_url":"https://github.com/tree-sitter/tree-sitter-typescript"},{"name":"tree-sitter-go","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-go"},{"name":"tree-sitter-rust","old_version":"0.23.0","new_version":"0.24.2","repository_url":"https://github.com/tree-sitter/tree-sitter-rust"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyjwt","old_version":"2.15.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"qdrant-client","old_version":"1.17.1","new_version":"1.19.1","repository_url":"https://github.com/qdrant/qdrant-client"},{"name":"pymupdf","old_version":"1.27.2.2","new_version":"1.28.2","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"beautifulsoup4","old_version":"4.14.3","new_version":"4.15.0"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"python-multipart","old_version":"0.0.31","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.13","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"alembic","old_version":"1.18.4","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pytz","old_version":"2026.1.post1","new_version":"2026.4","repository_url":"https://github.com/stub42/pytz"},{"name":"orjson","old_version":"3.11.7","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"msgpack","old_version":"1.2.1","new_version":"1.2.3","repository_url":"https://github.com/msgpack/msgpack-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 42 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [readchar](https://github.com/magmax/python-readchar) | `4.2.1` | `4.2.2` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [docker](https://github.com/docker/docker-py) | `7.1.0` | `7.2.0` |\n| [litellm](https://github.com/BerriAI/litellm) | `1.88.6` | `1.103.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.54.0` |\n| [chardet](https://github.com/chardet/chardet) | `7.4.0.post2` | `7.6.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.4` | `2.4.6` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `3.0.1` | `3.0.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.2` | `3.11` |\n| [pdfplumber](https://github.com/jsvine/pdfplumber) | `0.11.9` | `0.11.10` |\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| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.1` | `3.16.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.14` | `0.16.9` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.2` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n| [dopetask](https://github.com/DDD-Enterprises/dopeTask) | `0.5.1` | `0.5.7` |\n| [tree-sitter](https://github.com/tree-sitter/py-tree-sitter) | `0.25.2` | `0.26.0` |\n| [tree-sitter-python](https://github.com/tree-sitter/tree-sitter-python) | `0.23.0` | `0.25.0` |\n| [tree-sitter-javascript](https://github.com/tree-sitter/tree-sitter-javascript) | `0.23.0` | `0.25.0` |\n| [tree-sitter-typescript](https://github.com/tree-sitter/tree-sitter-typescript) | `0.23.0` | `0.23.2` |\n| [tree-sitter-go](https://github.com/tree-sitter/tree-sitter-go) | `0.23.0` | `0.25.0` |\n| [tree-sitter-rust](https://github.com/tree-sitter/tree-sitter-rust) | `0.23.0` | `0.24.2` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.26.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.15.0` | `2.15.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [qdrant-client](https://github.com/qdrant/qdrant-client) | `1.17.1` | `1.19.1` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.27.2.2` | `1.28.2` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.31` | `0.0.32` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.13` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.20.0` |\n| [pytz](https://github.com/stub42/pytz) | `2026.1.post1` | `2026.4` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.12.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.3` |\n\n\nUpdates `readchar` from 4.2.1 to 4.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/magmax/python-readchar/releases\"\u003ereadchar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix pytest 9 compatibility by \u003ca href=\"https://github.com/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd android as supported platform by \u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\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/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ehttps://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/05faadbfd883e80fe8e3ff1f8da97471a3b85262\"\u003e\u003ccode\u003e05faadb\u003c/code\u003e\u003c/a\u003e release v4.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/a9f2384ae26520a9456673b73c05944aae8fd2ca\"\u003e\u003ccode\u003ea9f2384\u003c/code\u003e\u003c/a\u003e Add android as supported platform (\u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/130\"\u003e#130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/753cb421b5a2cbe3601b1923992ac8b4985839a1\"\u003e\u003ccode\u003e753cb42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/129\"\u003e#129\u003c/a\u003e from mweinelt/pytest9-compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/5165992002f211fe85175bcbb4f9a60d5e90fdac\"\u003e\u003ccode\u003e5165992\u003c/code\u003e\u003c/a\u003e Fix pytest 9 compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/2204f05e47b7e5c6209a49dfde0ad64938e439a5\"\u003e\u003ccode\u003e2204f05\u003c/code\u003e\u003c/a\u003e increment version after release\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.0 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.33.0...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\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/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docker` from 7.1.0 to 7.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/docker/docker-py/releases\"\u003edocker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.2.0\u003c/h2\u003e\n\u003ch2\u003eUpgrade Notes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edocker.from_env()\u003c/code\u003e now honors the active Docker CLI context when \u003ccode\u003eDOCKER_HOST\u003c/code\u003e is not set.\n\u003cul\u003e\n\u003cli\u003eThis means the client may connect to the daemon selected by \u003ccode\u003eDOCKER_CONTEXT\u003c/code\u003e or the current context in \u003ccode\u003e~/.docker/config.json\u003c/code\u003e, matching Docker CLI behavior more closely.\u003c/li\u003e\n\u003cli\u003eIf your application relied on the previous default connection behavior, set \u003ccode\u003eDOCKER_HOST\u003c/code\u003e explicitly, set \u003ccode\u003eDOCKER_CONTEXT=default\u003c/code\u003e, or pass \u003ccode\u003euse_context=False\u003c/code\u003e to \u003ccode\u003eDockerClient.from_env()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003edocker.from_context()\u003c/code\u003e / \u003ccode\u003eDockerClient.from_context()\u003c/code\u003e for explicitly creating a client from a Docker CLI context.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Docker contexts when creating the default client\u003c/li\u003e\n\u003cli\u003eAdded subpath support for volumes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eexec_run\u003c/code\u003e documentation for the \u003ccode\u003estream\u003c/code\u003e parameter\u003c/li\u003e\n\u003cli\u003eFixed image loading to avoid depending on the deprecated \u003ccode\u003eJSONMessage.error\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003ePreserved the rotated unlock key in swarm integration tests\u003c/li\u003e\n\u003cli\u003eFixed SSL certificate generation in tests\u003c/li\u003e\n\u003cli\u003eFixed IPv6 integration tests by explicitly enabling IPv6 where required\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated tests for newer Docker Engine behavior\u003c/li\u003e\n\u003cli\u003eCI and build updates\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003etests/exec: expect 127 exit code for missing executable by \u003ca href=\"https://github.com/laurazard\"\u003e\u003ccode\u003e@​laurazard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3290\"\u003edocker/docker-py#3290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efixing doc for stream param in exec_run by \u003ca href=\"https://github.com/yasonk\"\u003e\u003ccode\u003e@​yasonk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3292\"\u003edocker/docker-py#3292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump default API version to 1.45 (Moby 26.0/26.1) by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3261\"\u003edocker/docker-py#3261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet a dummy-version if none set, and remove unused APT_MIRROR build-arg by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3267\"\u003edocker/docker-py#3267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_service_logs: stop testing experimental versions by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/2442\"\u003edocker/docker-py#2442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMakefile: fix circular reference for integration-dind by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3297\"\u003edocker/docker-py#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eimage load: don't depend on deprecated JSONMessage.error field by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3307\"\u003edocker/docker-py#3307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration: test_create_volume_invalid_driver allow either 400 or 404 by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3296\"\u003edocker/docker-py#3296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration: adjust tests for omitted \u0026quot;OnBuild\u0026quot; by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3336\"\u003edocker/docker-py#3336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement Subpath Support for Volumes in Docker-Py (\u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3243\"\u003e#3243\u003c/a\u003e) by \u003ca href=\"https://github.com/Khushiyant\"\u003e\u003ccode\u003e@​Khushiyant\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3270\"\u003edocker/docker-py#3270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix ssl generation by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3365\"\u003edocker/docker-py#3365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest/integration: don't check for deprecated Networks field by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3362\"\u003edocker/docker-py#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: Skip from_env_unix tests if DOCKER_HOST is network socket by \u003ca href=\"https://github.com/ricardobranco777\"\u003e\u003ccode\u003e@​ricardobranco777\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3366\"\u003edocker/docker-py#3366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_connect_with_ipv6_address: enable IPv6 by \u003ca href=\"https://github.com/robmry\"\u003e\u003ccode\u003e@​robmry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3372\"\u003edocker/docker-py#3372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_create_with_ipv6_address: enable IPv6 by \u003ca href=\"https://github.com/robmry\"\u003e\u003ccode\u003e@​robmry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3373\"\u003edocker/docker-py#3373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: Migrate off gpg2 and regenerate key ed25519 by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3399\"\u003edocker/docker-py#3399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003egha: Pin to digests by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3408\"\u003edocker/docker-py#3408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests on non-amd64 hosts and add ARM64 CI by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3407\"\u003edocker/docker-py#3407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration/swarm: Preserve rotated unlock key by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3410\"\u003edocker/docker-py#3410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DKP-2535] Honour context if present for default client, add contexts support by \u003ca href=\"https://github.com/ebriney\"\u003e\u003ccode\u003e@​ebriney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3401\"\u003edocker/docker-py#3401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: 7.2.0 changelog by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3415\"\u003edocker/docker-py#3415\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/laurazard\"\u003e\u003ccode\u003e@​laurazard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3290\"\u003edocker/docker-py#3290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yasonk\"\u003e\u003ccode\u003e@​yasonk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3292\"\u003edocker/docker-py#3292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ricardobranco777\"\u003e\u003ccode\u003e@​ricardobranco777\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3366\"\u003edocker/docker-py#3366\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/docker/docker-py/commit/5ad5327fba623897ee9a527d7eee1b01703e0726\"\u003e\u003ccode\u003e5ad5327\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3415\"\u003e#3415\u003c/a\u003e from vvoland/update-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/d2422303703cf33f604018d0601d8e4b71a2131e\"\u003e\u003ccode\u003ed242230\u003c/code\u003e\u003c/a\u003e docs: 7.2.0 changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/ba01cc7291a00a96260792c27046cfaedd9a61dc\"\u003e\u003ccode\u003eba01cc7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3401\"\u003e#3401\u003c/a\u003e from ebriney/client-from-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/ae5dfe9111b1f4e9fafd4107a8ac4a3fa52644dc\"\u003e\u003ccode\u003eae5dfe9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3410\"\u003e#3410\u003c/a\u003e from vvoland/fix-flaky\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/aa999998eded49919086be7fc4448f5dc9eac689\"\u003e\u003ccode\u003eaa99999\u003c/code\u003e\u003c/a\u003e integration/swarm: Preserve rotated unlock key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/059d371b576b9f324a16753e2a775b1f7731b6d0\"\u003e\u003ccode\u003e059d371\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3407\"\u003e#3407\u003c/a\u003e from vvoland/fix-arm64\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/9b4b9b8461966e5b54638490e66c91e45f25ea19\"\u003e\u003ccode\u003e9b4b9b8\u003c/code\u003e\u003c/a\u003e gha: Add arm64 integration CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/9e9f8ff315fe405d7f7e89b394d6269217c51dfe\"\u003e\u003ccode\u003e9e9f8ff\u003c/code\u003e\u003c/a\u003e Skip tests incompatible with host architecture\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/e0542d9ee4b564822722a3c49d9948484ffb37bc\"\u003e\u003ccode\u003ee0542d9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3408\"\u003e#3408\u003c/a\u003e from vvoland/gha-pin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/578a11dd65e167b0421b9f9af143635ce93abe83\"\u003e\u003ccode\u003e578a11d\u003c/code\u003e\u003c/a\u003e gha: Pin to digests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/docker/docker-py/compare/7.1.0...7.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `litellm` from 1.88.6 to 1.103.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/BerriAI/litellm/releases\"\u003elitellm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.103.1\u003c/h2\u003e\n\u003ch2\u003eVerify Docker Image Signature\u003c/h2\u003e\n\u003cp\u003eAll LiteLLM Docker images are signed with \u003ca href=\"https://docs.sigstore.dev/cosign/overview/\"\u003ecosign\u003c/a\u003e. Every release is signed with the same key introduced in \u003ca href=\"https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0\"\u003ecommit \u003ccode\u003e0112e53\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the pinned commit hash (recommended):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eA commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the release tag (convenience):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eTags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.103.1/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eExpected output:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eThe following checks were performed on each of these signatures:\n  - The cosign claims were validated\n  - The signatures were verified against the specified public key\n\u003c/code\u003e\u003c/pre\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/BerriAI/litellm/compare/v1.103.0...v1.103.1\"\u003ehttps://github.com/BerriAI/litellm/compare/v1.103.0...v1.103.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.103.0\u003c/h2\u003e\n\u003ch2\u003eVerify Docker Image Signature\u003c/h2\u003e\n\u003cp\u003eAll LiteLLM Docker images are signed with \u003ca href=\"https://docs.sigstore.dev/cosign/overview/\"\u003ecosign\u003c/a\u003e. Every release is signed with the same key introduced in \u003ca href=\"https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0\"\u003ecommit \u003ccode\u003e0112e53\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the pinned commit hash (recommended):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eA commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.0\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/580bde9a2d148714889ec1c04a9872819e78a778\"\u003e\u003ccode\u003e580bde9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/13\"\u003e#13\u003c/a\u003e from BerriAI/litellm_session_token_1_103_x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/d3bf0066132899ca86fce126a11f4c133d9a74c8\"\u003e\u003ccode\u003ed3bf006\u003c/code\u003e\u003c/a\u003e chore(lint): scope a TRY004 suppression to the bearer-token salt key check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/a80eacacee118fbed54e3d98f239d17a63fac818\"\u003e\u003ccode\u003ea80eaca\u003c/code\u003e\u003c/a\u003e refactor(auth): bind UI/CLI session tokens to their own AES-GCM context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/e7d8bbc5deb36c960162d4ce3922985fe56db835\"\u003e\u003ccode\u003ee7d8bbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/6\"\u003e#6\u003c/a\u003e from BerriAI/litellm_bump_1_103_1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/bf02f06913c06fe41459f529f3511a32305f16d4\"\u003e\u003ccode\u003ebf02f06\u003c/code\u003e\u003c/a\u003e bump: litellm 1.103.0 -\u0026gt; 1.103.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/c991f4b01f5799eb0b0cab0fb63988e15c3a8a9d\"\u003e\u003ccode\u003ec991f4b\u003c/code\u003e\u003c/a\u003e fix(proxy): unregister logging callbacks removed from the stored config (\u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43429\"\u003e#43429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/cc111d1ae57fbd4d6c0c2fbd4772fe00460da215\"\u003e\u003ccode\u003ecc111d1\u003c/code\u003e\u003c/a\u003e fix(streaming): backport text-completion usage fix and e2e provider-flake tol...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/4dbbe6eddd1820fdf9f6a2914fb3f03633777988\"\u003e\u003ccode\u003e4dbbe6e\u003c/code\u003e\u003c/a\u003e test(ci): fix the e2e and integration reds left on rc/1.103.0 after \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43382\"\u003e#43382\u003c/a\u003e an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/8aca86a571bd67edcfb34180106a2636b3a4dbfc\"\u003e\u003ccode\u003e8aca86a\u003c/code\u003e\u003c/a\u003e test(e2e): clear the two rc/1.103.0 e2e reds owned by upstream providers (\u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43\"\u003e#43\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/e640c0eb4155f40a1bcecb3dc6a8ddc81b030080\"\u003e\u003ccode\u003ee640c0e\u003c/code\u003e\u003c/a\u003e test(integration): make rc/1.103.0 integration groups collect and pass again ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/BerriAI/litellm/compare/v1.88.6...v1.103.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn[standard]` from 0.38.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\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.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\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.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.38.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 7.4.0.post2 to 7.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.6.0\u003c/h2\u003e\n\u003cp\u003eBig release: a Cython scoring kernel joins mypyc in compiled wheels, every model retrained on a deduplicated corpus, UTF-7 fixed in both directions, and a guarantee that \u003ccode\u003edetect()\u003c/code\u003e never returns an encoding that can't decode your complete input.\u003c/p\u003e\n\u003ch2\u003ePerformance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCompiled wheels now score bigram profiles through a small Cython kernel alongside mypyc, and the pair is 4.7x faster than the pure wheel on CPython 3.14. \u003ccode\u003e_kernel.py\u003c/code\u003e stays plain Python (PyPy and pure wheels run it interpreted, unchanged), and detection output is bit-identical. The kernel declares itself safe without the GIL, so free-threaded CPython scales instead of silently re-enabling the GIL on import: 3.14t runs the whole suite in ~340ms across 8 threads, the fastest configuration measured. Compiled builds now need both hooks: \u003ccode\u003eHATCH_BUILD_HOOK_ENABLE_MYPYC=true HATCH_BUILD_HOOK_ENABLE_CUSTOM=true\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdded support for CPython 3.15, including the free-threaded build. No code changes were needed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edetect()\u003c/code\u003e no longer returns an encoding that cannot decode the input it was given (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/380\"\u003e#380\u003c/a\u003e, thanks \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e). When the whole input has been examined and the winner's only multi-byte evidence is an incomplete trailing sequence, the best candidate that decodes the input completely wins instead. Genuinely truncated data keeps its answer.\u003c/li\u003e\n\u003cli\u003eFixed delimited ASCII data like \u003ccode\u003e|NAME,+LAY|\u003c/code\u003e misdetecting as UTF-7 (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/371\"\u003e#371\u003c/a\u003e follow-up, thanks \u003ca href=\"https://github.com/agreenburg\"\u003e\u003ccode\u003e@​agreenburg\u003c/code\u003e\u003c/a\u003e). The whole buffer must now actually decode as UTF-7, and a lone shifted character must land in a plausible script range.\u003c/li\u003e\n\u003cli\u003eSigned UTF-7 no longer reads as ASCII: the BOM stage recognizes the four UTF-7 signature prefixes when the rest of the buffer decodes as UTF-7.\u003c/li\u003e\n\u003cli\u003eFixed short apostrophe-heavy English being labeled Scottish Gaelic or Breton: a rare-language label on an input under 128 bytes now needs a 0.03 lead over the best mainstream language (ADR-0005).\u003c/li\u003e\n\u003cli\u003eFixed Hungarian text losing to a Czech reading in confusion rescoring; tied pairs are compared only under language models both encodings have.\u003c/li\u003e\n\u003cli\u003eFixed space-padded text matching a degenerate Serbian model at high confidence; statistical scoring now skips repeated-whitespace bigrams. This also fixes windows-1251 logs misdetecting as windows-1250 (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/379\"\u003e#379\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed EBCDIC text being invisible to the early pipeline stages, and the last two EBCDIC sibling misdetections.\u003c/li\u003e\n\u003cli\u003eFixed training normalization gaps that starved ISO-8859-16 and the 26 pre-euro encodings at exactly their distinguishing bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRetrained every bigram model on a refreshed, deduplicated corpus with training provenance now recorded per model.\u003c/li\u003e\n\u003cli\u003eNew ANSI-art model for cp437, trained on 16,621 text-mode art files from \u003ca href=\"https://16colo.rs/\"\u003e16colo.rs\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRare-language arbitration (ADR-0005): low-confidence statistical winners from languages with no documented legacy-encoding population yield to near-tied mainstream candidates.\u003c/li\u003e\n\u003cli\u003eConfusion-group resolution is context-aware: per-occurrence votes, word-shape demotions, art-model exemption.\u003c/li\u003e\n\u003cli\u003eStatistical dead heats no longer resolve by candidate enumeration order.\u003c/li\u003e\n\u003cli\u003eTraining pipeline hardening after a cache-loss post-mortem.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chardet/chardet/compare/7.5.1...7.6.0\"\u003ehttps://github.com/chardet/chardet/compare/7.5.1...7.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.5.1\u003c/h2\u003e\n\u003cp\u003ePatch release: three detection fixes found while benchmarking against charset-normalizer's char-dataset.\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed markup-declared encodings being reported under a name that can't decode the input. A page declaring \u003ccode\u003eShift_JIS\u003c/code\u003e but using CP932 extension characters (like ①) came back as \u003ccode\u003eSHIFT_JIS\u003c/code\u003e, which fails \u003ccode\u003e.decode()\u003c/code\u003e on those same bytes. Superset promotion (\u003ccode\u003eCP932\u003c/code\u003e, \u003ccode\u003eCP949\u003c/code\u003e) now always fires when the reported name can't decode the data but the superset can.\u003c/li\u003e\n\u003cli\u003eFixed a lying charset declaration beating genuine UTF-8 content. A UTF-8 page declaring \u003ccode\u003e\u0026lt;meta charset=\u0026quot;iso-8859-1\u0026quot;\u0026gt;\u003c/code\u003e came back as ISO-8859-1, which decodes to mojibake. Valid multi-byte UTF-8 now wins over a conflicting declaration.\u003c/li\u003e\n\u003cli\u003eFixed BOM-less UTF-16 byte-order detection for pure-CJK text: short Chinese UTF-16 samples came back with reversed endianness at full confidence. Byte order is now chosen by decoding both ways and comparing text quality.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chardet/chardet/compare/7.5.0...7.5.1\"\u003ehttps://github.com/chardet/chardet/compare/7.5.0...7.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.5.0\u003c/h2\u003e\n\u003cp\u003eAccuracy and speed release: truncation-proof byte validity, statistical pruning worth ~2.9x, and half the peak memory.\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed multi-byte encodings being eliminated when the input ends in an incomplete character. Byte-validity filtering used a one-shot strict decode, which cannot tell a truncated tail from corrupt data, so a single dangling lead byte dropped every CJK candidate and the result came down to input-length parity. Also reachable on complete files through chardet's own \u003ccode\u003emax_bytes\u003c/code\u003e and \u003ccode\u003e_SCAN_LIMIT\u003c/code\u003e slicing. Validity checks now decode incrementally with \u003ccode\u003efinal=False\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/376\"\u003e#376\u003c/a\u003e, thanks \u003ca href=\"https://github.com/aadsm\"\u003e\u003ccode\u003e@​aadsm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ecompat_names\u003c/code\u003e (the default) leaking internal Python codec names for seven encodings (\u003ccode\u003eISO-8859-2\u003c/code\u003e, \u003ccode\u003eISO-8859-6\u003c/code\u003e, \u003ccode\u003eISO-8859-13\u003c/code\u003e, \u003ccode\u003eWindows-1250\u003c/code\u003e, \u003ccode\u003eWindows-1256\u003c/code\u003e, \u003ccode\u003eWindows-1257\u003c/code\u003e, \u003ccode\u003eCP874\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/374\"\u003e#374\u003c/a\u003e, thanks \u003ca href=\"https://github.com/aadsm\"\u003e\u003ccode\u003e@​aadsm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ecompat_names\u003c/code\u003e leaking the internal \u003ccode\u003ecp932\u003c/code\u003e codec name; \u003ccode\u003edetect()\u003c/code\u003e now returns \u003ccode\u003eCP932\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/375\"\u003e#375\u003c/a\u003e, thanks \u003ca href=\"https://github.com/uttam12331\"\u003e\u003ccode\u003e@​uttam12331\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/chardet/chardet/blob/main/docs/changelog.rst\"\u003echardet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.6.0 (2026-08-14)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003ePerformance:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCompiled wheels now score bigram profiles through a small Cython\nkernel alongside mypyc, and the pair is 4.7x faster than the pure\nwheel on CPython 3.14.  \u003ccode\u003e_kernel.py\u003c/code\u003e stays plain Python (PyPy and\npure wheels run it interpreted, unchanged), \u003ccode\u003e_kernel.pxd\u003c/code\u003e adds C\ntypes at build time and ships nothing, and detection output is\nbit-identical.  The kernel declares itself safe without the GIL, so\nfree-threaded CPython scales instead of silently re-enabling the GIL\non import: 3.14t runs the whole suite in ~340ms across 8 threads,\nthe fastest configuration measured.  Compiled builds now need both\nhooks::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eHATCH_BUILD_HOOK_ENABLE_MYPYC=true HATCH_BUILD_HOOK_ENABLE_CUSTOM=true uv build\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for CPython 3.15, including the free-threaded build.\nNo code changes were needed.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug Fixes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed delimited ASCII data like \u003ccode\u003e|NAME,+LAY|\u003c/code\u003e misdetecting as\nUTF-7, a follow-up to \u003ccode\u003e[#371](https://github.com/chardet/chardet/issues/371) \u0026lt;https://github.com/chardet/chardet/issues/371\u0026gt;\u003c/code\u003e\u003cem\u003e.  Two new checks:\nthe whole buffer must actually decode as UTF-7 (\u003ccode\u003e+|\u003c/code\u003e is an illegal\nshift, so tabular data fails immediately), and a block encoding a\nsingle code unit must land in a script range where a lone shifted\ncharacter plausibly occurs.  \u003ccode\u003e+LAY\u003c/code\u003e decodes to U+2C06, Glagolitic;\nno genuine lone block in the corpus lands anywhere like it, while em\ndashes, ellipses, kanji, and accented letters all pass.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003c/em\u003e via Claude)\u003c/li\u003e\n\u003cli\u003eSigned UTF-7 no longer reads as ASCII.  The BOM stage recognizes the\nfour UTF-7 signature prefixes (\u003ccode\u003e+/v8-\u003c/code\u003e and friends) when the rest\nof the buffer decodes as UTF-7 --- the prefix alone is ordinary ASCII\n(a diff of V8 source paths starts with \u003ccode\u003e+/v8\u003c/code\u003e).  This is a\ndeliberate divergence from WHATWG's browser-security exclusion of\nUTF-7: chardet already detects the unsigned form, so refusing only\nthe signed one made no sense.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edetect()\u003c/code\u003e no longer returns an encoding that cannot decode the\ninput it was given\n(\u003ccode\u003e[#380](https://github.com/chardet/chardet/issues/380) \u0026lt;https://github.com/chardet/chardet/issues/380\u0026gt;\u003c/code\u003e_).  When the\nwhole input has been examined and the winner's only multi-byte\nevidence is an incomplete trailing sequence, the best candidate that\ndecodes the input completely wins instead.  Genuinely truncated data\nkeeps its answer: CJK cut mid-character, or input sliced at\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/...\n\n_Description has been truncated_","html_url":"https://github.com/DDD-Enterprises/dopemux-mvp/pull/1398","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DDD-Enterprises%2Fdopemux-mvp/issues/1398","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1398/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-10-03T05:01:42.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5686723489","node_id":"PR_kwDOPyIw988AAAABGZWeSA","number":1396,"state":"closed","title":"deps(deps): bump the python-minor-patch group across 1 directory with 43 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T06:34:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-03T05:01:42.000Z","updated_at":"2026-10-03T06:34:15.000Z","time_to_close":5551,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(deps): bump","group_name":"python-minor-patch","update_count":43,"packages":[{"name":"readchar","old_version":"4.2.1","new_version":"4.2.2","repository_url":"https://github.com/magmax/python-readchar"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"docker","old_version":"7.1.0","new_version":"7.2.0","repository_url":"https://github.com/docker/docker-py"},{"name":"litellm","old_version":"1.85.1","new_version":"1.103.1","repository_url":"https://github.com/BerriAI/litellm"},{"name":"uvicorn","old_version":"0.38.0","new_version":"0.54.0"},{"name":"chardet","old_version":"7.4.0.post2","new_version":"7.6.0","repository_url":"https://github.com/chardet/chardet"},{"name":"numpy","old_version":"2.4.4","new_version":"2.4.6","repository_url":"https://github.com/numpy/numpy"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"pandas","old_version":"3.0.1","new_version":"3.0.6","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"markdown","old_version":"3.10.2","new_version":"3.11","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"pdfplumber","old_version":"0.11.9","new_version":"0.11.10","repository_url":"https://github.com/jsvine/pdfplumber"},{"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":"pytest-mock","old_version":"3.15.1","new_version":"3.16.0","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"ruff","old_version":"0.14.14","new_version":"0.16.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"black","old_version":"26.3.1","new_version":"26.5.1","repository_url":"https://github.com/psf/black"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pip-audit","old_version":"2.9.0","new_version":"2.10.1","repository_url":"https://github.com/pypa/pip-audit"},{"name":"semgrep","old_version":"1.166.0","new_version":"1.179.0","repository_url":"https://github.com/semgrep/semgrep"},{"name":"dopetask","old_version":"0.5.1","new_version":"0.5.7","repository_url":"https://github.com/DDD-Enterprises/dopeTask"},{"name":"tree-sitter","old_version":"0.25.2","new_version":"0.26.0","repository_url":"https://github.com/tree-sitter/py-tree-sitter"},{"name":"tree-sitter-python","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-python"},{"name":"tree-sitter-javascript","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-javascript"},{"name":"tree-sitter-typescript","old_version":"0.23.0","new_version":"0.23.2","repository_url":"https://github.com/tree-sitter/tree-sitter-typescript"},{"name":"tree-sitter-go","old_version":"0.23.0","new_version":"0.25.0","repository_url":"https://github.com/tree-sitter/tree-sitter-go"},{"name":"tree-sitter-rust","old_version":"0.23.0","new_version":"0.24.2","repository_url":"https://github.com/tree-sitter/tree-sitter-rust"},{"name":"pydantic-settings","old_version":"2.14.2","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyjwt","old_version":"2.15.0","new_version":"2.15.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"cryptography","old_version":"50.0.0","new_version":"50.0.1","repository_url":"https://github.com/pyca/cryptography"},{"name":"qdrant-client","old_version":"1.17.1","new_version":"1.19.1","repository_url":"https://github.com/qdrant/qdrant-client"},{"name":"pymupdf","old_version":"1.27.2.2","new_version":"1.28.2","repository_url":"https://github.com/pymupdf/pymupdf"},{"name":"beautifulsoup4","old_version":"4.14.3","new_version":"4.15.0"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"python-multipart","old_version":"0.0.31","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.13","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"alembic","old_version":"1.18.4","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"pytz","old_version":"2026.1.post1","new_version":"2026.4","repository_url":"https://github.com/stub42/pytz"},{"name":"orjson","old_version":"3.11.7","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"msgpack","old_version":"1.2.1","new_version":"1.2.3","repository_url":"https://github.com/msgpack/msgpack-python"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 43 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [readchar](https://github.com/magmax/python-readchar) | `4.2.1` | `4.2.2` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [docker](https://github.com/docker/docker-py) | `7.1.0` | `7.2.0` |\n| [litellm](https://github.com/BerriAI/litellm) | `1.85.1` | `1.103.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.38.0` | `0.54.0` |\n| [chardet](https://github.com/chardet/chardet) | `7.4.0.post2` | `7.6.0` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.4` | `2.4.6` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.1` |\n| [pandas](https://github.com/pandas-dev/pandas) | `3.0.1` | `3.0.6` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.2` | `3.11` |\n| [pdfplumber](https://github.com/jsvine/pdfplumber) | `0.11.9` | `0.11.10` |\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| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.1` | `3.16.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.14.14` | `0.16.9` |\n| [black](https://github.com/psf/black) | `26.3.1` | `26.5.1` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.2` |\n| [pip-audit](https://github.com/pypa/pip-audit) | `2.9.0` | `2.10.1` |\n| [semgrep](https://github.com/semgrep/semgrep) | `1.166.0` | `1.179.0` |\n| [dopetask](https://github.com/DDD-Enterprises/dopeTask) | `0.5.1` | `0.5.7` |\n| [tree-sitter](https://github.com/tree-sitter/py-tree-sitter) | `0.25.2` | `0.26.0` |\n| [tree-sitter-python](https://github.com/tree-sitter/tree-sitter-python) | `0.23.0` | `0.25.0` |\n| [tree-sitter-javascript](https://github.com/tree-sitter/tree-sitter-javascript) | `0.23.0` | `0.25.0` |\n| [tree-sitter-typescript](https://github.com/tree-sitter/tree-sitter-typescript) | `0.23.0` | `0.23.2` |\n| [tree-sitter-go](https://github.com/tree-sitter/tree-sitter-go) | `0.23.0` | `0.25.0` |\n| [tree-sitter-rust](https://github.com/tree-sitter/tree-sitter-rust) | `0.23.0` | `0.24.2` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.26.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.15.0` | `2.15.1` |\n| [cryptography](https://github.com/pyca/cryptography) | `50.0.0` | `50.0.1` |\n| [qdrant-client](https://github.com/qdrant/qdrant-client) | `1.17.1` | `1.19.1` |\n| [pymupdf](https://github.com/pymupdf/pymupdf) | `1.27.2.2` | `1.28.2` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.3` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.31` | `0.0.32` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.13` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.4` | `1.20.0` |\n| [pytz](https://github.com/stub42/pytz) | `2026.1.post1` | `2026.4` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.7` | `3.12.0` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.3` |\n\n\nUpdates `readchar` from 4.2.1 to 4.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/magmax/python-readchar/releases\"\u003ereadchar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix pytest 9 compatibility by \u003ca href=\"https://github.com/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd android as supported platform by \u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\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/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ehttps://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/05faadbfd883e80fe8e3ff1f8da97471a3b85262\"\u003e\u003ccode\u003e05faadb\u003c/code\u003e\u003c/a\u003e release v4.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/a9f2384ae26520a9456673b73c05944aae8fd2ca\"\u003e\u003ccode\u003ea9f2384\u003c/code\u003e\u003c/a\u003e Add android as supported platform (\u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/130\"\u003e#130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/753cb421b5a2cbe3601b1923992ac8b4985839a1\"\u003e\u003ccode\u003e753cb42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/129\"\u003e#129\u003c/a\u003e from mweinelt/pytest9-compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/5165992002f211fe85175bcbb4f9a60d5e90fdac\"\u003e\u003ccode\u003e5165992\u003c/code\u003e\u003c/a\u003e Fix pytest 9 compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/2204f05e47b7e5c6209a49dfde0ad64938e439a5\"\u003e\u003ccode\u003e2204f05\u003c/code\u003e\u003c/a\u003e increment version after release\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.0 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.33.0...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\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/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.3] - 2026-08-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStrip a leading UTF-8 BOM from \u003ccode\u003e.env\u003c/code\u003e file contents so the first variable is no longer silently lost when the file is saved with BOM (e.g. by some JetBrains IDEs on Windows) by [\u003ca href=\"https://github.com/h1whelan\"\u003e\u003ccode\u003e@​h1whelan\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/640\"\u003e#640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eset_key\u003c/code\u003e now escapes backslashes, so values containing them (Windows paths, regular expressions) survive a write/read round-trip. Quoted values ending in an escaped backslash are no longer mis-parsed as an escaped quote, which used to swallow the following lines by [\u003ca href=\"https://github.com/dchaudhari7177\"\u003e\u003ccode\u003e@​dchaudhari7177\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edotenv run\u003c/code\u003e now prints a friendly error instead of a traceback when no command is given by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache the parsed result for empty \u003ccode\u003e.env\u003c/code\u003e files so repeated \u003ccode\u003edotenv_values\u003c/code\u003e/\u003ccode\u003eload_dotenv\u003c/code\u003e calls no longer re-read the file by [\u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/49515afee2d50c33cad9419b3800b3a0dc93fc59\"\u003e\u003ccode\u003e49515af\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.2 → 1.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ac846ff2760b65470e769d7eed33e540f0934e1\"\u003e\u003ccode\u003e8ac846f\u003c/code\u003e\u003c/a\u003e chore: add release runbook (RELEASING.md) and make release target\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/bb31c944fb4b40e8dea59587f525840c38326166\"\u003e\u003ccode\u003ebb31c94\u003c/code\u003e\u003c/a\u003e docs: add 1.2.3 release notes (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/606\"\u003e#606\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/638\"\u003e#638\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f7b18d9c72d1abcc2ad4023424b84f5bee30d266\"\u003e\u003ccode\u003ef7b18d9\u003c/code\u003e\u003c/a\u003e fix: round-trip backslashes through set_key (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/680\"\u003e#680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/751f8c148222e58aa173c83c4e5e6cfccb2cc124\"\u003e\u003ccode\u003e751f8c1\u003c/code\u003e\u003c/a\u003e ci(deps): bump actions/checkout from 6.0.2 to 6.0.3 in the github-actions gro...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/f1937b68f338d7ebd7754da377ca08b2f0df8dbb\"\u003e\u003ccode\u003ef1937b6\u003c/code\u003e\u003c/a\u003e chore(deps): update mkdocs-include-markdown-plugin requirement from \u0026gt;=6.0.0 t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/45b93720dd5e9e127d0be3971a04855d34e464d8\"\u003e\u003ccode\u003e45b9372\u003c/code\u003e\u003c/a\u003e chore(deps): update pytest requirement from \u0026gt;=3.9 to \u0026gt;=9.0.3 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/653\"\u003e#653\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72896e9244d2a1ff8d5e1934d3df8a35c813799a\"\u003e\u003ccode\u003e72896e9\u003c/code\u003e\u003c/a\u003e docs: fix broken mkdocs link in CONTRIBUTING.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/636\"\u003e#636\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/72754a16a4743e4c92edf87ce59ba0e4ff78758d\"\u003e\u003ccode\u003e72754a1\u003c/code\u003e\u003c/a\u003e ci(deps): bump peaceiris/actions-gh-pages from 4.0.0 to 4.1.0 in the github-a...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/078325e92558330e9addc661b789c7b6123fa73c\"\u003e\u003ccode\u003e078325e\u003c/code\u003e\u003c/a\u003e ci(security): harden CI/CD supply chain with SHA pinning and least-privilege ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 2026-05-06\u003c/h2\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.3...v2.13.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.3 2026-04-20\u003c/h2\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.2...v2.13.3\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.2 2026-04-17\u003c/h2\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\"\u003ehttps://github.com/pydantic/pydantic/compare/v2.13.1...v2.13.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.13.1 2026-04-15\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/v2.13.5/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.5 (2026-08-28)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.5\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAllow reuse of validators when plugins are set by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13535\"\u003e#13535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal on some \u003ccode\u003epydantic-core\u003c/code\u003e struct fields by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13624\"\u003e#13624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13629\"\u003e#13629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCount validated model fields once in smart unions by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13731\"\u003e#13731\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.4 (2026-05-06)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.4\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump libc from 0.2.155 to 0.2.185 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13109\"\u003e#13109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdapt \u003ccode\u003epydantic-core\u003c/code\u003e linker flags on macOS by \u003ca href=\"https://github.com/washingtoneg\"\u003e\u003ccode\u003e@​washingtoneg\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13147\"\u003e#13147\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003eRootModel\u003c/code\u003e core metadata by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13129\"\u003e#13129\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.3 (2026-04-20)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.3\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eHandle \u003ccode\u003eAttributeError\u003c/code\u003e subclasses with \u003ccode\u003efrom_attributes\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13096\"\u003e#13096\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.2 (2026-04-17)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eValidationInfo.field_name\u003c/code\u003e missing with \u003ccode\u003emodel_validate_json()\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/13084\"\u003e#13084\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.1 (2026-04-15)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/001dea020e0809844e5b17666432c9135a976f46\"\u003e\u003ccode\u003e001dea0\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epypa/gh-action-pypi-publish\u003c/code\u003e action to v1.14.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/558379fee957fad25858e33596146c72d5674843\"\u003e\u003ccode\u003e558379f\u003c/code\u003e\u003c/a\u003e Bump twine to v7.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/2cfd5d3d2ae721ea882c045f83b7f7a4003aab01\"\u003e\u003ccode\u003e2cfd5d3\u003c/code\u003e\u003c/a\u003e Do not check for docs build\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a735bee5c64e1fe50785c376adaf1275e752b8ac\"\u003e\u003ccode\u003ea735bee\u003c/code\u003e\u003c/a\u003e Fix more Clippy lints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/7eed4a16b87afaced4d0eafae230453de3410d64\"\u003e\u003ccode\u003e7eed4a1\u003c/code\u003e\u003c/a\u003e Fix Clippy 0.1.95 warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/b353bbb20a4989b4c033e2be2b4a40d36178b16a\"\u003e\u003ccode\u003eb353bbb\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/63d2cccd6e760da6bbc7fe81a53cb2bde3768f5e\"\u003e\u003ccode\u003e63d2ccc\u003c/code\u003e\u003c/a\u003e Count validated model fields once in smart unions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/a53ec2ed342fda4e6aa3684399d04ea57be9a6e4\"\u003e\u003ccode\u003ea53ec2e\u003c/code\u003e\u003c/a\u003e Speed up PyPy CI tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/d65e0f96e890ca82f4b66a15d5b3bd65af2c661c\"\u003e\u003ccode\u003ed65e0f9\u003c/code\u003e\u003c/a\u003e Workaround circular import error in Mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/47a6dbf8ad6216211bd0df6ec5c2c6c6ed905b72\"\u003e\u003ccode\u003e47a6dbf\u003c/code\u003e\u003c/a\u003e Fix missing GC traversal in \u003ccode\u003epydantic-core\u003c/code\u003e for \u003ccode\u003eGeneralFieldsSerializer\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docker` from 7.1.0 to 7.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/docker/docker-py/releases\"\u003edocker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.2.0\u003c/h2\u003e\n\u003ch2\u003eUpgrade Notes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edocker.from_env()\u003c/code\u003e now honors the active Docker CLI context when \u003ccode\u003eDOCKER_HOST\u003c/code\u003e is not set.\n\u003cul\u003e\n\u003cli\u003eThis means the client may connect to the daemon selected by \u003ccode\u003eDOCKER_CONTEXT\u003c/code\u003e or the current context in \u003ccode\u003e~/.docker/config.json\u003c/code\u003e, matching Docker CLI behavior more closely.\u003c/li\u003e\n\u003cli\u003eIf your application relied on the previous default connection behavior, set \u003ccode\u003eDOCKER_HOST\u003c/code\u003e explicitly, set \u003ccode\u003eDOCKER_CONTEXT=default\u003c/code\u003e, or pass \u003ccode\u003euse_context=False\u003c/code\u003e to \u003ccode\u003eDockerClient.from_env()\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003edocker.from_context()\u003c/code\u003e / \u003ccode\u003eDockerClient.from_context()\u003c/code\u003e for explicitly creating a client from a Docker CLI context.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for Docker contexts when creating the default client\u003c/li\u003e\n\u003cli\u003eAdded subpath support for volumes\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBugfixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eexec_run\u003c/code\u003e documentation for the \u003ccode\u003estream\u003c/code\u003e parameter\u003c/li\u003e\n\u003cli\u003eFixed image loading to avoid depending on the deprecated \u003ccode\u003eJSONMessage.error\u003c/code\u003e field\u003c/li\u003e\n\u003cli\u003ePreserved the rotated unlock key in swarm integration tests\u003c/li\u003e\n\u003cli\u003eFixed SSL certificate generation in tests\u003c/li\u003e\n\u003cli\u003eFixed IPv6 integration tests by explicitly enabling IPv6 where required\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMiscellaneous\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated tests for newer Docker Engine behavior\u003c/li\u003e\n\u003cli\u003eCI and build updates\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003etests/exec: expect 127 exit code for missing executable by \u003ca href=\"https://github.com/laurazard\"\u003e\u003ccode\u003e@​laurazard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3290\"\u003edocker/docker-py#3290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efixing doc for stream param in exec_run by \u003ca href=\"https://github.com/yasonk\"\u003e\u003ccode\u003e@​yasonk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3292\"\u003edocker/docker-py#3292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump default API version to 1.45 (Moby 26.0/26.1) by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3261\"\u003edocker/docker-py#3261\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet a dummy-version if none set, and remove unused APT_MIRROR build-arg by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3267\"\u003edocker/docker-py#3267\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_service_logs: stop testing experimental versions by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/2442\"\u003edocker/docker-py#2442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMakefile: fix circular reference for integration-dind by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3297\"\u003edocker/docker-py#3297\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eimage load: don't depend on deprecated JSONMessage.error field by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3307\"\u003edocker/docker-py#3307\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration: test_create_volume_invalid_driver allow either 400 or 404 by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3296\"\u003edocker/docker-py#3296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration: adjust tests for omitted \u0026quot;OnBuild\u0026quot; by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3336\"\u003edocker/docker-py#3336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement Subpath Support for Volumes in Docker-Py (\u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3243\"\u003e#3243\u003c/a\u003e) by \u003ca href=\"https://github.com/Khushiyant\"\u003e\u003ccode\u003e@​Khushiyant\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3270\"\u003edocker/docker-py#3270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: fix ssl generation by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3365\"\u003edocker/docker-py#3365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest/integration: don't check for deprecated Networks field by \u003ca href=\"https://github.com/thaJeztah\"\u003e\u003ccode\u003e@​thaJeztah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3362\"\u003edocker/docker-py#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest: Skip from_env_unix tests if DOCKER_HOST is network socket by \u003ca href=\"https://github.com/ricardobranco777\"\u003e\u003ccode\u003e@​ricardobranco777\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3366\"\u003edocker/docker-py#3366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_connect_with_ipv6_address: enable IPv6 by \u003ca href=\"https://github.com/robmry\"\u003e\u003ccode\u003e@​robmry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3372\"\u003edocker/docker-py#3372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest_create_with_ipv6_address: enable IPv6 by \u003ca href=\"https://github.com/robmry\"\u003e\u003ccode\u003e@​robmry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3373\"\u003edocker/docker-py#3373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etests: Migrate off gpg2 and regenerate key ed25519 by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3399\"\u003edocker/docker-py#3399\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003egha: Pin to digests by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3408\"\u003edocker/docker-py#3408\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests on non-amd64 hosts and add ARM64 CI by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3407\"\u003edocker/docker-py#3407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eintegration/swarm: Preserve rotated unlock key by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3410\"\u003edocker/docker-py#3410\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[DKP-2535] Honour context if present for default client, add contexts support by \u003ca href=\"https://github.com/ebriney\"\u003e\u003ccode\u003e@​ebriney\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3401\"\u003edocker/docker-py#3401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: 7.2.0 changelog by \u003ca href=\"https://github.com/vvoland\"\u003e\u003ccode\u003e@​vvoland\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3415\"\u003edocker/docker-py#3415\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/laurazard\"\u003e\u003ccode\u003e@​laurazard\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3290\"\u003edocker/docker-py#3290\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yasonk\"\u003e\u003ccode\u003e@​yasonk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3292\"\u003edocker/docker-py#3292\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ricardobranco777\"\u003e\u003ccode\u003e@​ricardobranco777\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/docker/docker-py/pull/3366\"\u003edocker/docker-py#3366\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/docker/docker-py/commit/5ad5327fba623897ee9a527d7eee1b01703e0726\"\u003e\u003ccode\u003e5ad5327\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3415\"\u003e#3415\u003c/a\u003e from vvoland/update-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/d2422303703cf33f604018d0601d8e4b71a2131e\"\u003e\u003ccode\u003ed242230\u003c/code\u003e\u003c/a\u003e docs: 7.2.0 changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/ba01cc7291a00a96260792c27046cfaedd9a61dc\"\u003e\u003ccode\u003eba01cc7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3401\"\u003e#3401\u003c/a\u003e from ebriney/client-from-context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/ae5dfe9111b1f4e9fafd4107a8ac4a3fa52644dc\"\u003e\u003ccode\u003eae5dfe9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3410\"\u003e#3410\u003c/a\u003e from vvoland/fix-flaky\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/aa999998eded49919086be7fc4448f5dc9eac689\"\u003e\u003ccode\u003eaa99999\u003c/code\u003e\u003c/a\u003e integration/swarm: Preserve rotated unlock key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/059d371b576b9f324a16753e2a775b1f7731b6d0\"\u003e\u003ccode\u003e059d371\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3407\"\u003e#3407\u003c/a\u003e from vvoland/fix-arm64\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/9b4b9b8461966e5b54638490e66c91e45f25ea19\"\u003e\u003ccode\u003e9b4b9b8\u003c/code\u003e\u003c/a\u003e gha: Add arm64 integration CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/9e9f8ff315fe405d7f7e89b394d6269217c51dfe\"\u003e\u003ccode\u003e9e9f8ff\u003c/code\u003e\u003c/a\u003e Skip tests incompatible with host architecture\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/e0542d9ee4b564822722a3c49d9948484ffb37bc\"\u003e\u003ccode\u003ee0542d9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/docker/docker-py/issues/3408\"\u003e#3408\u003c/a\u003e from vvoland/gha-pin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/docker/docker-py/commit/578a11dd65e167b0421b9f9af143635ce93abe83\"\u003e\u003ccode\u003e578a11d\u003c/code\u003e\u003c/a\u003e gha: Pin to digests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/docker/docker-py/compare/7.1.0...7.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `litellm` from 1.85.1 to 1.103.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/BerriAI/litellm/releases\"\u003elitellm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.103.1\u003c/h2\u003e\n\u003ch2\u003eVerify Docker Image Signature\u003c/h2\u003e\n\u003cp\u003eAll LiteLLM Docker images are signed with \u003ca href=\"https://docs.sigstore.dev/cosign/overview/\"\u003ecosign\u003c/a\u003e. Every release is signed with the same key introduced in \u003ca href=\"https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0\"\u003ecommit \u003ccode\u003e0112e53\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the pinned commit hash (recommended):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eA commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the release tag (convenience):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eTags are protected in this repository and resolve to the same key. This option is easier to read but relies on tag protection rules:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/v1.103.1/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.1\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eExpected output:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eThe following checks were performed on each of these signatures:\n  - The cosign claims were validated\n  - The signatures were verified against the specified public key\n\u003c/code\u003e\u003c/pre\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/BerriAI/litellm/compare/v1.103.0...v1.103.1\"\u003ehttps://github.com/BerriAI/litellm/compare/v1.103.0...v1.103.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.103.0\u003c/h2\u003e\n\u003ch2\u003eVerify Docker Image Signature\u003c/h2\u003e\n\u003cp\u003eAll LiteLLM Docker images are signed with \u003ca href=\"https://docs.sigstore.dev/cosign/overview/\"\u003ecosign\u003c/a\u003e. Every release is signed with the same key introduced in \u003ca href=\"https://github.com/BerriAI/litellm/commit/0112e53046018d726492c814b3644b7d376029d0\"\u003ecommit \u003ccode\u003e0112e53\u003c/code\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eVerify using the pinned commit hash (recommended):\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eA commit hash is cryptographically immutable, so this is the strongest way to ensure you are using the original signing key:\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003ecosign verify \\\n  --key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.103.0\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/580bde9a2d148714889ec1c04a9872819e78a778\"\u003e\u003ccode\u003e580bde9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/13\"\u003e#13\u003c/a\u003e from BerriAI/litellm_session_token_1_103_x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/d3bf0066132899ca86fce126a11f4c133d9a74c8\"\u003e\u003ccode\u003ed3bf006\u003c/code\u003e\u003c/a\u003e chore(lint): scope a TRY004 suppression to the bearer-token salt key check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/a80eacacee118fbed54e3d98f239d17a63fac818\"\u003e\u003ccode\u003ea80eaca\u003c/code\u003e\u003c/a\u003e refactor(auth): bind UI/CLI session tokens to their own AES-GCM context\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/e7d8bbc5deb36c960162d4ce3922985fe56db835\"\u003e\u003ccode\u003ee7d8bbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/6\"\u003e#6\u003c/a\u003e from BerriAI/litellm_bump_1_103_1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/bf02f06913c06fe41459f529f3511a32305f16d4\"\u003e\u003ccode\u003ebf02f06\u003c/code\u003e\u003c/a\u003e bump: litellm 1.103.0 -\u0026gt; 1.103.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/c991f4b01f5799eb0b0cab0fb63988e15c3a8a9d\"\u003e\u003ccode\u003ec991f4b\u003c/code\u003e\u003c/a\u003e fix(proxy): unregister logging callbacks removed from the stored config (\u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43429\"\u003e#43429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/cc111d1ae57fbd4d6c0c2fbd4772fe00460da215\"\u003e\u003ccode\u003ecc111d1\u003c/code\u003e\u003c/a\u003e fix(streaming): backport text-completion usage fix and e2e provider-flake tol...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/4dbbe6eddd1820fdf9f6a2914fb3f03633777988\"\u003e\u003ccode\u003e4dbbe6e\u003c/code\u003e\u003c/a\u003e test(ci): fix the e2e and integration reds left on rc/1.103.0 after \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43382\"\u003e#43382\u003c/a\u003e an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/8aca86a571bd67edcfb34180106a2636b3a4dbfc\"\u003e\u003ccode\u003e8aca86a\u003c/code\u003e\u003c/a\u003e test(e2e): clear the two rc/1.103.0 e2e reds owned by upstream providers (\u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/43\"\u003e#43\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/e640c0eb4155f40a1bcecb3dc6a8ddc81b030080\"\u003e\u003ccode\u003ee640c0e\u003c/code\u003e\u003c/a\u003e test(integration): make rc/1.103.0 integration groups collect and pass again ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/BerriAI/litellm/compare/v1.85.1...v1.103.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn[standard]` from 0.38.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\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.53.0...0.54.0\"\u003e0.53.0...0.54.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.53.0\u003c/h2\u003e\n\u003ch2\u003e🌐 Opt-in HTTP/2 support\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.53.0 adds experimental HTTP/2 through \u003ccode\u003ezttp\u003c/code\u003e, alongside a new \u003ccode\u003ezuvloop\u003c/code\u003e integration and connection-handling improvements.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.53.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eServe HTTP/1.1 and HTTP/2 with \u003ccode\u003ezttp\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e). Install \u003ccode\u003ezttp\u003c/code\u003e, then enable HTTP/2 with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Uvicorn negotiates HTTP/2 over TLS with ALPN and supports cleartext prior knowledge.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental.\u003c/strong\u003e Upgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚙️ More event loop choice\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eRun Uvicorn with \u003ccode\u003ezuvloop\u003c/code\u003e\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e). Install \u003ccode\u003ezuvloop\u003c/code\u003e separately and select it explicitly with \u003ccode\u003e--loop zuvloop\u003c/code\u003e on CPython 3.14 or newer.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🛡️ More reliable connections and proxies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHonor \u003ccode\u003eConnection: close\u003c/code\u003e token lists\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e). Uvicorn now parses comma-separated tokens case-insensitively across HTTP implementations.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTrust IPv6 loopback proxies by default\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e). The default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value now includes \u003ccode\u003e::1\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eKeep upgraded WebSockets alive\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e). Uvicorn cancels the HTTP keep-alive timer when the connection becomes a WebSocket.\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.4...0.53.0\"\u003e0.52.4...0.53.0\u003c/a\u003e\u003c/p\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\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.53.0 (September 14, 2026)\u003c/h2\u003e\n\u003cp\u003eThis release adds experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e. Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\nUpgrade-based h2c and WebSockets over HTTP/2 are not supported.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental HTTP/2 support through \u003ccode\u003ezttp\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2982\"\u003e#2982\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3101\"\u003e#3101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003ezuvloop\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3104\"\u003e#3104\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHandle comma-separated, case-insensitive \u003ccode\u003eConnection: close\u003c/code\u003e tokens across HTTP implementations (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3103\"\u003e#3103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTrust IPv6 loopback in the default \u003ccode\u003eFORWARDED_ALLOW_IPS\u003c/code\u003e value (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCancel the HTTP keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/421708fbc1a704dac8bd4053a7c4c0bf4d3704ee\"\u003e\u003ccode\u003e421708f\u003c/code\u003e\u003c/a\u003e Version 0.53.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3136\"\u003e#3136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f1a1bff7be819f5724d6fdf86dfd448a97c62e23\"\u003e\u003ccode\u003ef1a1bff\u003c/code\u003e\u003c/a\u003e Unset the keep-alive timer when upgrading to WebSocket (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3107\"\u003e#3107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/63971ed952090438896e6eba7d07178b616d97cc\"\u003e\u003ccode\u003e63971ed\u003c/code\u003e\u003c/a\u003e Document HTTP/2 support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3130\"\u003e#3130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/7d1a0055aee5e281accc646b559ddd147486bf8a\"\u003e\u003ccode\u003e7d1a005\u003c/code\u003e\u003c/a\u003e Remove race from multiprocess health check test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3128\"\u003e#3128\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5ac6265a01ff6dcadb0e4250152c3deaf8a168a9\"\u003e\u003ccode\u003e5ac6265\u003c/code\u003e\u003c/a\u003e Add ::1 to FORWARDED_ALLOW_IPS (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3119\"\u003e#3119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.38.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 7.4.0.post2 to 7.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.6.0\u003c/h2\u003e\n\u003cp\u003eBig release: a Cython scoring kernel joins mypyc in compiled wheels, every model retrained on a deduplicated corpus, UTF-7 fixed in both directions, and a guarantee that \u003ccode\u003edetect()\u003c/code\u003e never returns an encoding that can't decode your complete input.\u003c/p\u003e\n\u003ch2\u003ePerformance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eCompiled wheels now score bigram profiles through a small Cython kernel alongside mypyc, and the pair is 4.7x faster than the pure wheel on CPython 3.14. \u003ccode\u003e_kernel.py\u003c/code\u003e stays plain Python (PyPy and pure wheels run it interpreted, unchanged), and detection output is bit-identical. The kernel declares itself safe without the GIL, so free-threaded CPython scales instead of silently re-enabling the GIL on import: 3.14t runs the whole suite in ~340ms across 8 threads, the fastest configuration measured. Compiled builds now need both hooks: \u003ccode\u003eHATCH_BUILD_HOOK_ENABLE_MYPYC=true HATCH_BUILD_HOOK_ENABLE_CUSTOM=true\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAdded support for CPython 3.15, including the free-threaded build. No code changes were needed.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003edetect()\u003c/code\u003e no longer returns an encoding that cannot decode the input it was given (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/380\"\u003e#380\u003c/a\u003e, thanks \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e). When the whole input has been examined and the winner's only multi-byte evidence is an incomplete trailing sequence, the best candidate that decodes the input completely wins instead. Genuinely truncated data keeps its answer.\u003c/li\u003e\n\u003cli\u003eFixed delimited ASCII data like \u003ccode\u003e|NAME,+LAY|\u003c/code\u003e misdetecting as UTF-7 (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/371\"\u003e#371\u003c/a\u003e follow-up, thanks \u003ca href=\"https://github.com/agreenburg\"\u003e\u003ccode\u003e@​agreenburg\u003c/code\u003e\u003c/a\u003e). The whole buffer must now actually decode as UTF-7, and a lone shifted character must land in a plausible script range.\u003c/li\u003e\n\u003cli\u003eSigned UTF-7 no longer reads as ASCII: the BOM stage recognizes the four UTF-7 signature prefixes when the rest of the buffer decodes as UTF-7.\u003c/li\u003e\n\u003cli\u003eFixed short apostrophe-heavy English being labeled Scottish Gaelic or Breton: a rare-language label on an input under 128 bytes now needs a 0.03 lead over the best mainstream language (ADR-0005).\u003c/li\u003e\n\u003cli\u003eFixed Hungarian text losing to a Czech reading in confusion rescoring; tied pairs are compared only under language models both encodings have.\u003c/li\u003e\n\u003cli\u003eFixed space-padded text matching a degenerate Serbian model at high confidence; statistical scoring now skips repeated-whitespace bigrams. This also fixes windows-1251 logs misdetecting as windows-1250 (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/379\"\u003e#379\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed EBCDIC text being invisible to the early pipeline stages, and the last two EBCDIC sibling misdetections.\u003c/li\u003e\n\u003cli\u003eFixed training normalization gaps that starved ISO-8859-16 and the 26 pre-euro encodings at exactly their distinguishing bytes.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRetrained every bigram model on a refreshed, deduplicated corpus with training provenance now recorded per model.\u003c/li\u003e\n\u003cli\u003eNew ANSI-art model for cp437, trained on 16,621 text-mode art files from \u003ca href=\"https://16colo.rs/\"\u003e16colo.rs\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eRare-language arbitration (ADR-0005): low-confidence statistical winners from languages with no documented legacy-encoding population yield to near-tied mainstream candidates.\u003c/li\u003e\n\u003cli\u003eConfusion-group resolution is context-aware: per-occurrence votes, word-shape demotions, art-model exemption.\u003c/li\u003e\n\u003cli\u003eStatistical dead heats no longer resolve by candidate enumeration order.\u003c/li\u003e\n\u003cli\u003eTraining pipeline hardening after a cache-loss post-mortem.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chardet/chardet/compare/7.5.1...7.6.0\"\u003ehttps://github.com/chardet/chardet/compare/7.5.1...7.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.5.1\u003c/h2\u003e\n\u003cp\u003ePatch release: three detection fixes found while benchmarking against charset-normalizer's char-dataset.\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed markup-declared encodings being reported under a name that can't decode the input. A page declaring \u003ccode\u003eShift_JIS\u003c/code\u003e but using CP932 extension characters (like ①) came back as \u003ccode\u003eSHIFT_JIS\u003c/code\u003e, which fails \u003ccode\u003e.decode()\u003c/code\u003e on those same bytes. Superset promotion (\u003ccode\u003eCP932\u003c/code\u003e, \u003ccode\u003eCP949\u003c/code\u003e) now always fires when the reported name can't decode the data but the superset can.\u003c/li\u003e\n\u003cli\u003eFixed a lying charset declaration beating genuine UTF-8 content. A UTF-8 page declaring \u003ccode\u003e\u0026lt;meta charset=\u0026quot;iso-8859-1\u0026quot;\u0026gt;\u003c/code\u003e came back as ISO-8859-1, which decodes to mojibake. Valid multi-byte UTF-8 now wins over a conflicting declaration.\u003c/li\u003e\n\u003cli\u003eFixed BOM-less UTF-16 byte-order detection for pure-CJK text: short Chinese UTF-16 samples came back with reversed endianness at full confidence. Byte order is now chosen by decoding both ways and comparing text quality.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/chardet/chardet/compare/7.5.0...7.5.1\"\u003ehttps://github.com/chardet/chardet/compare/7.5.0...7.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.5.0\u003c/h2\u003e\n\u003cp\u003eAccuracy and speed release: truncation-proof byte validity, statistical pruning worth ~2.9x, and half the peak memory.\u003c/p\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed multi-byte encodings being eliminated when the input ends in an incomplete character. Byte-validity filtering used a one-shot strict decode, which cannot tell a truncated tail from corrupt data, so a single dangling lead byte dropped every CJK candidate and the result came down to input-length parity. Also reachable on complete files through chardet's own \u003ccode\u003emax_bytes\u003c/code\u003e and \u003ccode\u003e_SCAN_LIMIT\u003c/code\u003e slicing. Validity checks now decode incrementally with \u003ccode\u003efinal=False\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/376\"\u003e#376\u003c/a\u003e, thanks \u003ca href=\"https://github.com/aadsm\"\u003e\u003ccode\u003e@​aadsm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ecompat_names\u003c/code\u003e (the default) leaking internal Python codec names for seven encodings (\u003ccode\u003eISO-8859-2\u003c/code\u003e, \u003ccode\u003eISO-8859-6\u003c/code\u003e, \u003ccode\u003eISO-8859-13\u003c/code\u003e, \u003ccode\u003eWindows-1250\u003c/code\u003e, \u003ccode\u003eWindows-1256\u003c/code\u003e, \u003ccode\u003eWindows-1257\u003c/code\u003e, \u003ccode\u003eCP874\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/374\"\u003e#374\u003c/a\u003e, thanks \u003ca href=\"https://github.com/aadsm\"\u003e\u003ccode\u003e@​aadsm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ecompat_names\u003c/code\u003e leaking the internal \u003ccode\u003ecp932\u003c/code\u003e codec name; \u003ccode\u003edetect()\u003c/code\u003e now returns \u003ccode\u003eCP932\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/375\"\u003e#375\u003c/a\u003e, thanks \u003ca href=\"https://github.com/uttam12331\"\u003e\u003ccode\u003e@​uttam12331\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/chardet/chardet/blob/main/docs/changelog.rst\"\u003echardet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.6.0 (2026-08-14)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003ePerformance:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eCompiled wheels now score bigram profiles through a small Cython\nkernel alongside mypyc, and the pair is 4.7x faster than the pure\nwheel on CPython 3.14.  \u003ccode\u003e_kernel.py\u003c/code\u003e stays plain Python (PyPy and\npure wheels run it interpreted, unchanged), \u003ccode\u003e_kernel.pxd\u003c/code\u003e adds C\ntypes at build time and ships nothing, and detection output is\nbit-identical.  The kernel declares itself safe without the GIL, so\nfree-threaded CPython scales instead of silently re-enabling the GIL\non import: 3.14t runs the whole suite in ~340ms across 8 threads,\nthe fastest configuration measured.  Compiled builds now need both\nhooks::\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eHATCH_BUILD_HOOK_ENABLE_MYPYC=true HATCH_BUILD_HOOK_ENABLE_CUSTOM=true uv build\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for CPython 3.15, including the free-threaded build.\nNo code changes were needed.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBug Fixes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed delimited ASCII data like \u003ccode\u003e|NAME,+LAY|\u003c/code\u003e misdetecting as\nUTF-7, a follow-up to \u003ccode\u003e[#371](https://github.com/chardet/chardet/issues/371) \u0026lt;https://github.com/chardet/chardet/issues/371\u0026gt;\u003c/code\u003e\u003cem\u003e.  Two new checks:\nthe whole buffer must actually decode as UTF-7 (\u003ccode\u003e+|\u003c/code\u003e is an illegal\nshift, so tabular data fails immediately), and a block encoding a\nsingle code unit must land in a script range where a lone shifted\ncharacter plausibly occurs.  \u003ccode\u003e+LAY\u003c/code\u003e decodes to U+2C06, Glagolitic;\nno genuine lone block in the corpus lands anywhere like it, while em\ndashes, ellipses, kanji, and accented letters all pass.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003c/em\u003e via Claude)\u003c/li\u003e\n\u003cli\u003eSigned UTF-7 no longer reads as ASCII.  The BOM stage recognizes the\nfour UTF-7 signature prefixes (\u003ccode\u003e+/v8-\u003c/code\u003e and friends) when the rest\nof the buffer decodes as UTF-7 --- the prefix alone is ordinary ASCII\n(a diff of V8 source paths starts with \u003ccode\u003e+/v8\u003c/code\u003e).  This is a\ndeliberate divergence from WHATWG's browser-security exclusion of\nUTF-7: chardet already detects the unsigned form, so refusing only\nthe signed one made no sense.\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_ via Claude)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edetect()\u003c/code\u003e no longer returns an encoding that cannot decode the\ninput it was given\n(\u003ccode\u003e[#380](https://github.com/chardet/chardet/issues/380) \u0026lt;https://github.com/chardet/chardet/issues/380\u0026gt;\u003c/code\u003e_).  When the\nwhole input has been examined and the winner's only multi-byte\nevidence is an incomplete trailing sequence, the best candidate that\ndecodes the input completely wins instead.  Genuinely truncated data\nkeeps its answer: CJK cut mid-character, or input sliced at\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csumma...\n\n_Description has been truncated_","html_url":"https://github.com/DDD-Enterprises/dopemux-mvp/pull/1396","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DDD-Enterprises%2Fdopemux-mvp/issues/1396","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1396/packages"}},{"old_version":"7.4.0","new_version":"7.4.1","update_type":"patch","path":null,"pr_created_at":"2026-10-03T04:02:58.000Z","version_change":"7.4.0 → 7.4.1","issue":{"uuid":"5686382697","node_id":"PR_kwDOK5PfP88AAAABGZFfLw","number":188,"state":"open","title":"chore(deps-dev): bump flake8 from 7.4.0 to 7.4.1","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-10-03T04:02:58.000Z","updated_at":"2026-10-03T04:03:05.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"flake8","old_version":"7.4.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.4.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.4.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.4.0\u0026new-version=7.4.1)](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/BrianLusina/pymaze/pull/188","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianLusina%2Fpymaze/issues/188","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/188/packages"}},{"old_version":"~=7.4.0","new_version":"~=7.4.1","update_type":"patch","path":null,"pr_created_at":"2026-10-03T00:03:49.000Z","version_change":"~=7.4.0 → ~=7.4.1","issue":{"uuid":"5684929251","node_id":"PR_kwDOP0QzTs8AAAABGX9GVw","number":245,"state":"closed","title":"chore(deps)(deps): update flake8 requirement from ~=7.4.0 to ~=7.4.1","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T00:04:02.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-03T00:03:49.000Z","updated_at":"2026-10-03T00:04:04.000Z","time_to_close":13,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): update","packages":[{"name":"flake8","old_version":"~=7.4.0","new_version":"~=7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [flake8](https://github.com/pycqa/flake8) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.4.0...7.4.1\"\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/Kento-E/stock-report/pull/245","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kento-E%2Fstock-report/issues/245","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/245/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-10-02T11:00:38.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5676462049","node_id":"PR_kwDOFzracs8AAAABGRMW-w","number":2177,"state":"open","title":"chore(deps-dev): bump flake8 from 7.3.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-02T11:00:38.000Z","updated_at":"2026-10-02T11:03:50.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.3.0\u0026new-version=7.4.1)](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/paruff/fawkes/pull/2177","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paruff%2Ffawkes/issues/2177","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2177/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-10-02T03:23:16.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5672422420","node_id":"PR_kwDOQeUekM8AAAABGOAo8A","number":202,"state":"open","title":"chore(deps-dev): bump flake8 from 7.3.0 to 7.4.1","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-10-02T03:23:16.000Z","updated_at":"2026-10-02T03:25:23.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.3.0\u0026new-version=7.4.1)](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/vil02/adv_2025/pull/202","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vil02%2Fadv_2025/issues/202","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/202/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-10-01T22:14:29.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5669938434","node_id":"PR_kwDOHpcma88AAAABGMDxDw","number":303,"state":"open","title":"chore(deps): Bump the python-development group across 1 directory with 6 updates","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-10-01T22:14:29.000Z","updated_at":"2026-10-01T22:15:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): Bump","group_name":"python-development","update_count":6,"packages":[{"name":"coverage","old_version":"7.14.3","new_version":"7.16.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"isort","old_version":"8.0.1","new_version":"9.0.1","repository_url":"https://github.com/PyCQA/isort"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"tox","old_version":"4.56.0","new_version":"4.64.2","repository_url":"https://github.com/tox-dev/tox"},{"name":"twine","old_version":"6.2.0","new_version":"7.0.0","repository_url":"https://github.com/pypa/twine"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-development group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.14.3` | `7.16.1` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [isort](https://github.com/PyCQA/isort) | `8.0.1` | `9.0.1` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |\n| [tox](https://github.com/tox-dev/tox) | `4.56.0` | `4.64.2` |\n| [twine](https://github.com/pypa/twine) | `6.2.0` | `7.0.0` |\n\n\nUpdates `coverage` from 7.14.3 to 7.16.1\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.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\u003cli\u003ePerformance improvement in HTML reporting by reducing the number of times files have to be parsed, thanks to \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2240\"\u003eKevin Turcios\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.15.3\"\u003ecoverage 7.15.3\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.15.3\u003c/code\u003e\u003c/p\u003e\n\u003ch2\u003e7.15.2\u003c/h2\u003e\n\u003ch2\u003eVersion 7.15.2 — 2026-07-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix: one of the performance improvements in 7.15.1 (pull 2215) dramatically increased memory use during reporting for large projects. Now we use a different approach that is both faster and slimmer than 7.15.0. Fixes \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2229\"\u003eissue 2229\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.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\npath when it was only meant to be replaced once, in the leading portion of\nthe path. This is now fixed, in \u003ccode\u003epull 2268\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes to validation of options and configuration settings:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNegative precision settings now always cause useful error messages (\u003ccode\u003epull 2261\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\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 \u0026quot;Couldn't use data file ...:\nuser-defined function raised exception\u0026quot; error. Now it raises a proper\nconfiguration error naming the bad regex, like other regex settings do\n(\u003ccode\u003epull 2262\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eNon-string values in TOML configuration settings now produce a helpful\nerror message instead of a traceback.  This affects list settings whose\nelements aren't strings (like \u003ccode\u003eomit\u003c/code\u003e, \u003ccode\u003eexclude_lines\u003c/code\u003e, or a \u003ccode\u003e[paths]\u003c/code\u003e\nentry), file settings like \u003ccode\u003edata_file\u003c/code\u003e, and any wrong-typed value in the\n\u003ccode\u003e[paths]\u003c/code\u003e section (\u003ccode\u003epull 2263\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003ecoverage run\u003c/code\u003e refuses run-affecting command-line options like\n\u003ccode\u003e--branch\u003c/code\u003e alongside \u003ccode\u003e--concurrency=multiprocessing\u003c/code\u003e, since they can't\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ccbb99245dcb4e51a35087285499cdb22b164ccc\"\u003e\u003ccode\u003eccbb992\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/0697ccc9360cea85676076b935b076b020e3bcb1\"\u003e\u003ccode\u003e0697ccc\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/12f35958932173737ac451bdc33cdea2f3678917\"\u003e\u003ccode\u003e12f3595\u003c/code\u003e\u003c/a\u003e chore: bump docker/setup-qemu-action in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2280\"\u003e#2280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/35b58d3e83b2298dcb453e9356eb3f40e91a8db9\"\u003e\u003ccode\u003e35b58d3\u003c/code\u003e\u003c/a\u003e fix: CoverageData.update() can be called twice on an in-memory database. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2279\"\u003e#2279\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/92e1ce9b7bbcf69c3eccd2669e8c5edf0a4eba45\"\u003e\u003ccode\u003e92e1ce9\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2278\"\u003e#2278\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bf0731046b4d8865ef61ccf3be0c573930468342\"\u003e\u003ccode\u003ebf07310\u003c/code\u003e\u003c/a\u003e build: quote var expansion (actionlint SC2086)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3c434f506ee01e14297802b704c4db87904914b3\"\u003e\u003ccode\u003e3c434f5\u003c/code\u003e\u003c/a\u003e quality: use shellcheck-py to get shellcheck in GitHub CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/632f39725595a765c8dbd6327fec867c06d8bec3\"\u003e\u003ccode\u003e632f397\u003c/code\u003e\u003c/a\u003e build: use .txt instead of .pip, even though it's a stupid extension\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ffc6a4ad4447dfb52fe47d5110440cd6776431ab\"\u003e\u003ccode\u003effc6a4a\u003c/code\u003e\u003c/a\u003e test: only run diff-cover on pull requests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/33553b33cfbbc5c6afa5f49a033520b803d034d2\"\u003e\u003ccode\u003e33553b3\u003c/code\u003e\u003c/a\u003e fix: exclude the \u003ccode\u003ecase\u003c/code\u003e line when an irrefutable case body is excluded (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2269\"\u003e#2269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.14.3...7.16.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `isort` from 8.0.1 to 9.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eisort's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.1\u003c/h2\u003e\n\u003ch2\u003e:beetle: Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRestore \u003ccode\u003epython -m isort\u003c/code\u003e by excluding \u003ccode\u003e__main__\u003c/code\u003e from mypyc compilation by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e with \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2643\"\u003ePyCQA/isort#2643\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eOther changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd changelog entries for last releases by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2641\"\u003ePyCQA/isort#2641\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/isort/compare/9.0.0...9.0.1\"\u003ehttps://github.com/PyCQA/isort/compare/9.0.0...9.0.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e9.0.0\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eisort\u003c/code\u003e \u003ccode\u003e9.0.0\u003c/code\u003e is the result of several alpha and beta releases, as well as a small number of fixes added after the last beta. For release notes for the individual alphas and betas we would like to refer to:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/releases/tag/9.0.0a2\"\u003e9.0.0a2\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/releases/tag/9.0.0a3\"\u003e9.0.0a3\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/releases/tag/9.0.0b1\"\u003e9.0.0b1\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/releases/tag/9.0.0b2\"\u003e9.0.0b2\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/releases/tag/9.0.0b5\"\u003e9.0.0b5\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cem\u003eSkipped version numbers are the result of changes to our release infrastructure that broke while creating the actual releases.\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePlease find below the full release notes for version \u003ccode\u003e9.0.0\u003c/code\u003e, the newest release of \u003ccode\u003eisort\u003c/code\u003e after version \u003ccode\u003e8.0.1\u003c/code\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003ccode\u003eisort\u003c/code\u003e \u003ccode\u003e9.0.0\u003c/code\u003e contains some significant changes and improvements. Most notably there is now support for Python 3.15 and its \u003ccode\u003elazy\u003c/code\u003e imports and we have included several performance improvements as well as providing \u003ccode\u003emypyc\u003c/code\u003e compiled wheels for all major platforms and supported versions of Python. In our own tests we saw speeds ups of more than 2x and 3x times, but this is highly dependent on the codebase \u003ccode\u003eisort\u003c/code\u003e needs to inspect.\u003c/p\u003e\n\u003cp\u003eThe full list of changes is as follows:\u003c/p\u003e\n\u003ch2\u003e:boom: Breaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove logic for deprecated options (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2498\"\u003e#2498\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:rocket: Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSort lazy import statements (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2503\"\u003e#2503\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd initial support for Python 3.15 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2466\"\u003e#2466\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCompile with \u003ccode\u003emypyc\u003c/code\u003e by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2586\"\u003ePyCQA/isort#2586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache calls to \u003ccode\u003eposixpath.abspath\u003c/code\u003e by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2606\"\u003ePyCQA/isort#2606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsider private \u003ccode\u003estdlib\u003c/code\u003e modules to be \u003ccode\u003estdlib\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2295\"\u003e#2295\u003c/a\u003e) \u003ca href=\"https://github.com/devdanzin\"\u003e\u003ccode\u003e@​devdanzin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd CLI Flag for --forced-separate (\u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2367\"\u003ePyCQA/isort#2367\u003c/a\u003e) \u003ca href=\"https://github.com/hirak99\"\u003e\u003ccode\u003e@​hirak99\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd separate_packages option (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2313\"\u003e#2313\u003c/a\u003e) \u003ca href=\"https://github.com/alex-liang3\"\u003e\u003ccode\u003e@​alex-liang3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e:beetle: Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix inline comment duplication across merged \u003ccode\u003efrom X import\u003c/code\u003e lines (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2499\"\u003e#2499\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix src glob patterns passed via CLI (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2497\"\u003e#2497\u003c/a\u003e) \u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix opening-line comment moving to alias attribute line on wrapped imports (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2491\"\u003e#2491\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix multi_line_output=3/5 ignored when wrapping single imports with inline comments (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2474\"\u003e#2474\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix false positive in \u003ccode\u003echeck_code\u003c/code\u003e when using \u003ccode\u003efloat_to_top\u003c/code\u003e + \u003ccode\u003eadd_imports\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2492\"\u003e#2492\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: preserve bare \u003ccode\u003e#\u003c/code\u003e inline comments on imports (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2488\"\u003e#2488\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\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/PyCQA/isort/blob/main/CHANGELOG.md\"\u003eisort's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003cp\u003eNOTE: isort follows the \u003ca href=\"https://semver.org/\"\u003esemver\u003c/a\u003e versioning standard.\nFind out more about isort's release policy \u003ca href=\"https://github.com/PyCQA/isort/blob/main/docs/major_releases/release_policy.md\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003ePlease find a complete overview of all releases\non \u003ca href=\"https://github.com/PyCQA/isort/releases\"\u003eGithub\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eReleases\u003c/h2\u003e\n\u003ch3\u003eUnreleased\u003c/h3\u003e\n\u003ch3\u003e9.0.0 August 26 2026\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove logic for deprecated options (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2498\"\u003e#2498\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSort lazy import statements (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2503\"\u003e#2503\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd initial support for Python 3.15 (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2466\"\u003e#2466\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCompile with \u003ccode\u003emypyc\u003c/code\u003e by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2586\"\u003ePyCQA/isort#2586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCache calls to \u003ccode\u003eposixpath.abspath\u003c/code\u003e by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2606\"\u003ePyCQA/isort#2606\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eConsider private \u003ccode\u003estdlib\u003c/code\u003e modules to be \u003ccode\u003estdlib\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2295\"\u003e#2295\u003c/a\u003e) \u003ca href=\"https://github.com/devdanzin\"\u003e\u003ccode\u003e@​devdanzin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd CLI Flag for --forced-separate (\u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2367\"\u003ePyCQA/isort#2367\u003c/a\u003e) \u003ca href=\"https://github.com/hirak99\"\u003e\u003ccode\u003e@​hirak99\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd separate_packages option (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2313\"\u003e#2313\u003c/a\u003e) \u003ca href=\"https://github.com/alex-liang3\"\u003e\u003ccode\u003e@​alex-liang3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix inline comment duplication across merged \u003ccode\u003efrom X import\u003c/code\u003e lines (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2499\"\u003e#2499\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix src glob patterns passed via CLI (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2497\"\u003e#2497\u003c/a\u003e) \u003ca href=\"https://github.com/ReinerBRO\"\u003e\u003ccode\u003e@​ReinerBRO\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix opening-line comment moving to alias attribute line on wrapped imports (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2491\"\u003e#2491\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix multi_line_output=3/5 ignored when wrapping single imports with inline comments (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2474\"\u003e#2474\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix false positive in \u003ccode\u003echeck_code\u003c/code\u003e when using \u003ccode\u003efloat_to_top\u003c/code\u003e + \u003ccode\u003eadd_imports\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2492\"\u003e#2492\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: preserve bare \u003ccode\u003e#\u003c/code\u003e inline comments on imports (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2488\"\u003e#2488\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix grouping of non-aliased imports when mixed with aliased imports from the same module (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2470\"\u003e#2470\u003c/a\u003e) \u003ca href=\"https://github.com/copilot-swe-agent\"\u003e\u003ccode\u003e@​copilot-swe-agent\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2500\"\u003ePyCQA/isort#2500\u003c/a\u003e: trusted publishing by \u003ca href=\"https://github.com/staticdev\"\u003e\u003ccode\u003e@​staticdev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2521\"\u003ePyCQA/isort#2521\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix git_hook lazy=True option by \u003ca href=\"https://github.com/sparrowt\"\u003e\u003ccode\u003e@​sparrowt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2542\"\u003ePyCQA/isort#2542\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHonor \u003ccode\u003e# isort: off/on/split\u003c/code\u003e during \u003ccode\u003efloat_to_top\u003c/code\u003e preprocessing with CRLF input by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e with \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2553\"\u003ePyCQA/isort#2553\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix --sort-reexports crash with non-seekable streams (e.g. stdin) by \u003ca href=\"https://github.com/Abdu-Ahmed\"\u003e\u003ccode\u003e@​Abdu-Ahmed\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2547\"\u003ePyCQA/isort#2547\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix non-idempotent output with split_on_trailing_comma and a non-default wrap mode by \u003ca href=\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2554\"\u003ePyCQA/isort#2554\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix non-idempotent NOQA wrap mode with imports that carry their own comment by \u003ca href=\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2556\"\u003ePyCQA/isort#2556\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NOQA wrap mode accumulating spaces before the comment on each run by \u003ca href=\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2558\"\u003ePyCQA/isort#2558\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NOQA not added to long imports in several output paths by \u003ca href=\"https://github.com/urayoru113\"\u003e\u003ccode\u003e@​urayoru113\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2568\"\u003ePyCQA/isort#2568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHonor \u003ccode\u003e# isort: skip\u003c/code\u003e when a \u003ccode\u003e__future__\u003c/code\u003e import is present (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2092\"\u003e#2092\u003c/a\u003e) by \u003ca href=\"https://github.com/apoorvdarshan\"\u003e\u003ccode\u003e@​apoorvdarshan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2574\"\u003ePyCQA/isort#2574\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: make sorted \u003ccode\u003e__all__\u003c/code\u003e and literals black-compatible (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2280\"\u003e#2280\u003c/a\u003e) by \u003ca href=\"https://github.com/lord-haffi\"\u003e\u003ccode\u003e@​lord-haffi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2576\"\u003ePyCQA/isort#2576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHonor skip comments when sorting reexports by \u003ca href=\"https://github.com/sakshichitnis27\"\u003e\u003ccode\u003e@​sakshichitnis27\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2581\"\u003ePyCQA/isort#2581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep aliased import when the plain name carries a comment by \u003ca href=\"https://github.com/sarathfrancis90\"\u003e\u003ccode\u003e@​sarathfrancis90\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2567\"\u003ePyCQA/isort#2567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: don't crash on --config-root without --resolve-all-configs by \u003ca href=\"https://github.com/Gooh456\"\u003e\u003ccode\u003e@​Gooh456\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2597\"\u003ePyCQA/isort#2597\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: check_code misses lines_before_imports-only changes (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2242\"\u003e#2242\u003c/a\u003e) by \u003ca href=\"https://github.com/gaoflow\"\u003e\u003ccode\u003e@​gaoflow\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2563\"\u003ePyCQA/isort#2563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix preservation of form-feed blank lines by \u003ca href=\"https://github.com/utkarshalpha\"\u003e\u003ccode\u003e@​utkarshalpha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2599\"\u003ePyCQA/isort#2599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSmall clean up and fix inconsistency in handling of \u003ccode\u003e*\u003c/code\u003e imports by \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2619\"\u003ePyCQA/isort#2619\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix word-wrapping of 'from ... import *' into invalid Python (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2267\"\u003e#2267\u003c/a\u003e) by \u003ca href=\"https://github.com/sudorm-rf0\"\u003e\u003ccode\u003e@​sudorm-rf0\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2624\"\u003ePyCQA/isort#2624\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix pylint disable-next comments at the start of imports by \u003ca href=\"https://github.com/Neallin-917\"\u003e\u003ccode\u003e@​Neallin-917\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2628\"\u003ePyCQA/isort#2628\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep add_imports below a prefixed module docstring by \u003ca href=\"https://github.com/Eljees\"\u003e\u003ccode\u003e@​Eljees\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/isort/pull/2626\"\u003ePyCQA/isort#2626\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd read the docs configuration (\u003ca href=\"https://redirect.github.com/PyCQA/isort/issues/2504\"\u003e#2504\u003c/a\u003e) \u003ca href=\"https://github.com/DanielNoord\"\u003e\u003ccode\u003e@​DanielNoord\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/131f4adcd5582bfc53928ab0d740eceb8b506b6c\"\u003e\u003ccode\u003e131f4ad\u003c/code\u003e\u003c/a\u003e Fix review typing and import order in CLI invocation test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/9491900490be659d5e600dfe403de6793eddfb8e\"\u003e\u003ccode\u003e9491900\u003c/code\u003e\u003c/a\u003e Test python -m isort invocation directly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/f0a2dca32371ba8f04af81939746cf3b03adb65a\"\u003e\u003ccode\u003ef0a2dca\u003c/code\u003e\u003c/a\u003e Fix python -m isort by excluding \u003cstrong\u003emain\u003c/strong\u003e from mypyc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/037c2b210d65e1702cdaff872ab5ca2db44fc12c\"\u003e\u003ccode\u003e037c2b2\u003c/code\u003e\u003c/a\u003e Add changelog entries for last releases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/727d119442a3cc9c4184e45e14c74759b811cdb8\"\u003e\u003ccode\u003e727d119\u003c/code\u003e\u003c/a\u003e Name the predicate and drive the prefix test off STRING_PREFIXES\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/dec76bce8e1075cb1263fe7fafeb0c512c38126d\"\u003e\u003ccode\u003edec76bc\u003c/code\u003e\u003c/a\u003e Fix multiline docstring style\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/cb179db220f169e0fe8b73ec977b7d4a06566969\"\u003e\u003ccode\u003ecb179db\u003c/code\u003e\u003c/a\u003e Keep add_imports below a prefixed module docstring\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/7542f761c021e5737a171cf50780a7fe4c9116f3\"\u003e\u003ccode\u003e7542f76\u003c/code\u003e\u003c/a\u003e test: distinguish pylint disable-next comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/9f567676d3c67d4a17db90dbf65ccf317f886983\"\u003e\u003ccode\u003e9f56767\u003c/code\u003e\u003c/a\u003e Fix pylint disable-next comments at top of imports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/isort/commit/0cba6f6111a07cc05b167008dda0727ecca907c5\"\u003e\u003ccode\u003e0cba6f6\u003c/code\u003e\u003c/a\u003e Delete .cruft.json\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyCQA/isort/compare/8.0.1...9.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 2.1.0 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/v2.1.0...v2.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tox` from 4.56.0 to 4.64.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/tox/releases\"\u003etox's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.64.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(run): keep .venv redirect off for a .venv env by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4091\"\u003etox-dev/tox#4091\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(run): point .venv at a deliberate dev env by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4092\"\u003etox-dev/tox#4092\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.64.1...4.64.2\"\u003ehttps://github.com/tox-dev/tox/compare/4.64.1...4.64.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.64.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(config): apply overrides to sections the file lacks by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4089\"\u003etox-dev/tox#4089\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.64.0...4.64.1\"\u003ehttps://github.com/tox-dev/tox/compare/4.64.0...4.64.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.64.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003edocs: fix the TOML string substitution example by \u003ca href=\"https://github.com/agammann\"\u003e\u003ccode\u003e@​agammann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4081\"\u003etox-dev/tox#4081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: ignore broken sphinx-llm release by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4083\"\u003etox-dev/tox#4083\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(type): narrow _emit_conf keys for ty 0.0.83 by \u003ca href=\"https://github.com/MohammedAlkindi\"\u003e\u003ccode\u003e@​MohammedAlkindi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4084\"\u003etox-dev/tox#4084\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(config): read the user config file as UTF-8 by \u003ca href=\"https://github.com/MohammedAlkindi\"\u003e\u003ccode\u003e@​MohammedAlkindi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4086\"\u003etox-dev/tox#4086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(ci): diff coverage against the PR base by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4088\"\u003etox-dev/tox#4088\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(config): write a PEP 832 .venv redirect file by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4013\"\u003etox-dev/tox#4013\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/agammann\"\u003e\u003ccode\u003e@​agammann\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4081\"\u003etox-dev/tox#4081\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.63.0...4.64.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.63.0...4.64.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.63.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(run): keep package env interrupt logs in parallel by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4079\"\u003etox-dev/tox#4079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(extras): dedupe static extras resolution and other copies by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4080\"\u003etox-dev/tox#4080\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/tox/compare/4.62.1...4.63.0\"\u003ehttps://github.com/tox-dev/tox/compare/4.62.1...4.63.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev4.62.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003etest: skip POSIX-venv wheel-build tests on Windows by \u003ca href=\"https://github.com/iam-kira\"\u003e\u003ccode\u003e@​iam-kira\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/tox/pull/4078\"\u003etox-dev/tox#4078\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/tox-dev/tox/blob/main/docs/changelog.rst\"\u003etox's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBug fixes - 4.64.2\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eA tox environment with \u003ccode\u003eenv_dir = \u0026quot;{tox_root}/.venv\u0026quot;\u003c/code\u003e no longer crashes with \u003ccode\u003eFileExistsError\u003c/code\u003e after another\nenvironment ran (:issue:\u003ccode\u003e4090\u003c/code\u003e) - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWith :ref:\u003ccode\u003evenv_redirect\u003c/code\u003e unset, the new default, tox writes the redirect file unless a tox environment lives at\n\u003ccode\u003e.venv\u003c/code\u003e; with \u003ccode\u003etrue\u003c/code\u003e, tox fails the run with an error naming that environment.\u003c/li\u003e\n\u003cli\u003etox deletes a redirect file it wrote where an environment should live, and fails the environment with an error\nnaming any other file there. (:issue:\u003ccode\u003e4091\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe :PEP:\u003ccode\u003e832\u003c/code\u003e \u003ccode\u003e.venv\u003c/code\u003e redirect file now names a deliberate development environment - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003etox picks :ref:\u003ccode\u003evenv_redirect_env\u003c/code\u003e, else an environment named \u003ccode\u003edev\u003c/code\u003e, else the first that installs the project in\ndevelopment mode, and writes nothing without one, so a project that uses tox for tests alone gets no file.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etox devenv\u003c/code\u003e points the redirect at the environment it creates, and later runs leave it in place.\u003c/li\u003e\n\u003cli\u003etox tells virtualenv to write no redirect file of its own beside the environments it builds. (:issue:\u003ccode\u003e4092\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.64.1 (2026-09-24)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eBug fixes - 4.64.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eApply \u003ccode\u003e-x\u003c/code\u003e/\u003ccode\u003e--override\u003c/code\u003e and \u003ccode\u003eTOX_OVERRIDE\u003c/code\u003e values that target a section the configuration file does not define,\nsuch as \u003ccode\u003etox.skip_missing_interpreters\u003c/code\u003e on a \u003ccode\u003etox.ini\u003c/code\u003e without a \u003ccode\u003e[tox]\u003c/code\u003e section, instead of dropping them - by\n:user:\u003ccode\u003egaborbernat\u003c/code\u003e. (:issue:\u003ccode\u003e4089\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003ev4.64.0 (2026-09-24)\u003c/p\u003e\n\u003chr /\u003e\n\u003ch1\u003eFeatures - 4.64.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003ePoint a :PEP:\u003ccode\u003e832\u003c/code\u003e \u003ccode\u003e.venv\u003c/code\u003e redirect file at a tox environment after each run, so editors such as VS Code or PyCharm\npick it as the project interpreter instead of asking you for a path under \u003ccode\u003e.tox\u003c/code\u003e - by :user:\u003ccode\u003egaborbernat\u003c/code\u003e.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003etox picks an environment named \u003ccode\u003edev\u003c/code\u003e, then one installing the project in development mode, then the first of\n:ref:\u003ccode\u003eenv_list\u003c/code\u003e; set :ref:\u003ccode\u003evenv_redirect_env\u003c/code\u003e to choose another.\u003c/li\u003e\n\u003cli\u003etox leaves a \u003ccode\u003e.venv\u003c/code\u003e directory alone, and a redirect file pointing outside its environments.\u003c/li\u003e\n\u003cli\u003etox removes the redirect while it recreates the target and writes it back once the run ends.\u003c/li\u003e\n\u003cli\u003eSet :ref:\u003ccode\u003evenv_redirect\u003c/code\u003e to \u003ccode\u003efalse\u003c/code\u003e to opt out.\u003c/li\u003e\n\u003cli\u003eThe feature is provisional while :PEP:\u003ccode\u003e832\u003c/code\u003e is a draft: a minor or patch release may change it in backward\nincompatible ways to follow the PEP. (:issue:\u003ccode\u003e4013\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug fixes - 4.64.0\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/9cd0f4e7527e39c30955e31c4307b0630cd37aaa\"\u003e\u003ccode\u003e9cd0f4e\u003c/code\u003e\u003c/a\u003e release 4.64.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/c2b87d2ff342f23afaee218bc28aa5f96e89453b\"\u003e\u003ccode\u003ec2b87d2\u003c/code\u003e\u003c/a\u003e 🐛 fix(run): point .venv at a deliberate dev env (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4092\"\u003e#4092\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/a8fa8cc0db19360dbd57ae0a726c5d34f247ae74\"\u003e\u003ccode\u003ea8fa8cc\u003c/code\u003e\u003c/a\u003e 🐛 fix(run): keep .venv redirect off for a .venv env (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4091\"\u003e#4091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/e40e8e666838ddb4e3ae4936a9f8b162119d9190\"\u003e\u003ccode\u003ee40e8e6\u003c/code\u003e\u003c/a\u003e release 4.64.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/eacd4e9374a65f9e2c0c199b8ecf035fe8769fc3\"\u003e\u003ccode\u003eeacd4e9\u003c/code\u003e\u003c/a\u003e 🐛 fix(config): apply overrides to sections the file lacks (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4089\"\u003e#4089\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/fff62f65ed4bab06a31a73a32c361afc054a7b9b\"\u003e\u003ccode\u003efff62f6\u003c/code\u003e\u003c/a\u003e release 4.64.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/5c56ce0855e69d264b95b9e307bf3a33351fdd56\"\u003e\u003ccode\u003e5c56ce0\u003c/code\u003e\u003c/a\u003e ✨ feat(config): write a PEP 832 .venv redirect file (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4013\"\u003e#4013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/551ad34007aa656f79edef82f873a93119acb1c3\"\u003e\u003ccode\u003e551ad34\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): diff coverage against the PR base (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4088\"\u003e#4088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/8e1967e98f6480b0d99847c6a058463b7cce5416\"\u003e\u003ccode\u003e8e1967e\u003c/code\u003e\u003c/a\u003e fix(config): read the user config file as UTF-8 (\u003ca href=\"https://redirect.github.com/tox-dev/tox/issues/4086\"\u003e#4086\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/tox/commit/12bf3a68f1200945e6da2d7576ee1cfd695038ed\"\u003e\u003ccode\u003e12bf3a6\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 10.0.1 to 10.1.0 in the github-acti...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/tox/compare/4.56.0...4.64.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `twine` from 6.2.0 to 7.0.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/twine/blob/main/docs/changelog.rst\"\u003etwine's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003etwine 7.0.0 (2026-07-27)\u003c/h2\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSpecify UTF-8 encoding when reading \u003ccode\u003e.pypirc\u003c/code\u003e files. (\u003ccode\u003e[#1268](https://github.com/pypa/twine/issues/1268) \u0026lt;https://github.com/pypa/twine/issues/1268\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdd missing subdependencies to \u003ccode\u003e--version\u003c/code\u003e output. (\u003ccode\u003e[#1275](https://github.com/pypa/twine/issues/1275) \u0026lt;https://github.com/pypa/twine/issues/1275\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eThe dependency on \u003ccode\u003erich\u003c/code\u003e has been bumped to avoid a hang in some environments. (\u003ccode\u003e[#1308](https://github.com/pypa/twine/issues/1308) \u0026lt;https://github.com/pypa/twine/issues/1308\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eIndices that respond with non-standard HTTP codes are now handled more gracefully. (\u003ccode\u003e[#1309](https://github.com/pypa/twine/issues/1309) \u0026lt;https://github.com/pypa/twine/issues/1309\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations and Removals\n^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix uploading packages with metadata version 2.5. The fix no longer allows metadata version 2.0, which was never officially standardised. (\u003ccode\u003e[#1317](https://github.com/pypa/twine/issues/1317) \u0026lt;https://github.com/pypa/twine/issues/1317\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#1298](https://github.com/pypa/twine/issues/1298) \u0026lt;https://github.com/pypa/twine/issues/1298\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/fdb86cb45de11faeece9b274be6da7d275cdd4f9\"\u003e\u003ccode\u003efdb86cb\u003c/code\u003e\u003c/a\u003e Update changelog for 7.0.0 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1344\"\u003e#1344\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/bfa7f7f037c6ba39e93813c6ad2537d13cf4b1e6\"\u003e\u003ccode\u003ebfa7f7f\u003c/code\u003e\u003c/a\u003e changelog: backfill entries from PRs (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1330\"\u003e#1330\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/4f20c0dc374bbd54fe7cddc341e3c5ba7479917b\"\u003e\u003ccode\u003e4f20c0d\u003c/code\u003e\u003c/a\u003e Remove monkeypatch allowing Metadata 2.0 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1317\"\u003e#1317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/1df249ecb442f5420d44c7782be11337daf83651\"\u003e\u003ccode\u003e1df249e\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action from 4.35.2 to 4.35.3 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/bea960757875c4e2800f82f95519aa0b4d9c3c04\"\u003e\u003ccode\u003ebea9607\u003c/code\u003e\u003c/a\u003e fix: bump minimum rich dependency to 14.3.3 to prevent verbose hang (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1308\"\u003e#1308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/ac17a17a9c01c5a2ba10f6ee142cef5aec6f56b0\"\u003e\u003ccode\u003eac17a17\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1311\"\u003e#1311\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/039cedfd9082b520dc37563dc0cf8a2d453a36e2\"\u003e\u003ccode\u003e039cedf\u003c/code\u003e\u003c/a\u003e build(deps): bump github/codeql-action from 4.35.1 to 4.35.2 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1313\"\u003e#1313\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/d465cb0930d3c6446d240902f6f782f8d5793288\"\u003e\u003ccode\u003ed465cb0\u003c/code\u003e\u003c/a\u003e Handle non-standard HTTP status codes (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/cab618fb122bb2d1e6c042f5bf0c5a8b8e2573bc\"\u003e\u003ccode\u003ecab618f\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epackaging \u0026gt;= 26.1\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/twine/commit/2d06e1177b1dcf94ae302e48f6fe6a4992fc89ae\"\u003e\u003ccode\u003e2d06e11\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/pypa/twine/issues/1307\"\u003e#1307\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/twine/compare/6.2.0...7.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/cordada/lib-pe-sunat-python/pull/303","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cordada%2Flib-pe-sunat-python/issues/303","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/303/packages"}},{"old_version":"\u003e=3.9.0","new_version":"\u003e=7.4.1","update_type":"patch","path":"/hdfm-framework","pr_created_at":"2026-10-01T02:34:35.000Z","version_change":"\u003e=3.9.0 → \u003e=7.4.1","issue":{"uuid":"5655970978","node_id":"PR_kwDOQR0O9s8AAAABGA0Luw","number":32,"state":"closed","title":"Update flake8 requirement from \u003e=3.9.0 to \u003e=7.4.1 in /hdfm-framework","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-02T00:36:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-10-01T02:34:35.000Z","updated_at":"2026-10-02T00:36:55.000Z","time_to_close":79331,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"flake8","old_version":"\u003e=3.9.0","new_version":"\u003e=7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":"/hdfm-framework","ecosystem":"pip"},"body":"Updates the requirements on [flake8](https://github.com/pycqa/flake8) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/3.9.0...7.4.1\"\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/jdhart81/hdfm-framework/pull/32","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jdhart81%2Fhdfm-framework/issues/32","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/32/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-30T19:37:03.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5651997924","node_id":"PR_kwDOPJzn-c8AAAABF9pNuA","number":82,"state":"open","title":"Bump the minor group across 1 directory with 7 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-30T19:37:03.000Z","updated_at":"2026-10-02T13:44:07.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"minor","update_count":7,"packages":[{"name":"bitarray","old_version":"3.10.1","new_version":"3.11.0","repository_url":"https://github.com/ilanschnell/bitarray"},{"name":"lxml","old_version":"6.1.2","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"onnxruntime","old_version":"1.24.4","new_version":"1.30.0","repository_url":"https://github.com/microsoft/onnxruntime"},{"name":"cachetools","old_version":"7.1.7","new_version":"7.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"pytest-mock","old_version":"3.15.1","new_version":"3.16.0","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"ruff","old_version":"0.16.5","new_version":"0.16.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"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 group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [bitarray](https://github.com/ilanschnell/bitarray) | `3.10.1` | `3.11.0` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.2` | `6.1.3` |\n| [onnxruntime](https://github.com/microsoft/onnxruntime) | `1.24.4` | `1.30.0` |\n| [cachetools](https://github.com/tkem/cachetools) | `7.1.7` | `7.2.0` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.15.1` | `3.16.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.5` | `0.16.9` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n\n\nUpdates `bitarray` from 3.10.1 to 3.11.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ilanschnell/bitarray/blob/master/doc/changelog.rst\"\u003ebitarray's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChange log\u003c/h1\u003e\n\u003cp\u003e\u003cstrong\u003e3.11.0\u003c/strong\u003e (2026-09-01):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd run-length codec: \u003ccode\u003eutil.rl_encode()\u003c/code\u003e and \u003ccode\u003eutil.rl_decode()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eutil.sc_stat()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003eComparison of bitarray codecs \u0026lt;codecs.rst\u0026gt;\u003c/code\u003e__ documentation\u003c/li\u003e\n\u003cli\u003eoptimize sparse block selection for trailing zeros\u003c/li\u003e\n\u003cli\u003epreserve bitarrays when buffer reallocation fails\u003c/li\u003e\n\u003cli\u003econsistent input validation for large \u003ccode\u003eutil.sum_indices()\u003c/code\u003e inputs\u003c/li\u003e\n\u003cli\u003eimprove sparse-compression and debug-mode tests, including new tests\nfor slice adjustment \u003ccode\u003eadjust_slice()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003emove private \u003ccode\u003esysinfo()\u003c/code\u003e and \u003ccode\u003essqi()\u003c/code\u003e out of the top-level namespace\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.10.1\u003c/strong\u003e (2026-08-07):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003emove internal tests for \u003ccode\u003eutil._Random\u003c/code\u003e class into \u003ccode\u003edevel/test_random.py\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd debug-mode introspection and tests for \u003ccode\u003edecodetree\u003c/code\u003e structure\u003c/li\u003e\n\u003cli\u003efix \u003ccode\u003eutil.pprint()\u003c/code\u003e for very narrow output widths\u003c/li\u003e\n\u003cli\u003esubstantially simplify \u003ccode\u003eutil.ba2int()\u003c/code\u003e and \u003ccode\u003eutil.int2ba()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.10.0\u003c/strong\u003e (2026-07-31):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd \u003ccode\u003efree threading support \u0026lt;free_threading.rst\u0026gt;\u003c/code\u003e__\u003c/li\u003e\n\u003cli\u003eadd \u003ccode\u003ebitarray/test_free_threading.py\u003c/code\u003e - these free-threading tests are\nimported when Python was compiled using \u003ccode\u003e--disable-gil\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eadd official support for \u003ccode\u003edecodetree\u003c/code\u003e methods \u003ccode\u003e.nodes()\u003c/code\u003e and \u003ccode\u003e.todict()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eutil.huffman_code()\u003c/code\u003e and \u003ccode\u003eutil.canonical_huffman()\u003c/code\u003e return codedicts\nmapping symbols to frozenbitarrays\u003c/li\u003e\n\u003cli\u003efix free-threading bug in \u003ccode\u003ebinode_make_tree()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003euse a private capsule to safely share the \u003ccode\u003ebitarray\u003c/code\u003e type between\nthe \u003ccode\u003e_bitarray\u003c/code\u003e and \u003ccode\u003e_util\u003c/code\u003e extension modules\u003c/li\u003e\n\u003cli\u003ebitarrays in prefix codes passed to \u003ccode\u003e.decode()\u003c/code\u003e or \u003ccode\u003edecodetree()\u003c/code\u003e cannot\nexceed 256 bits\u003c/li\u003e\n\u003cli\u003ethe following methods/functions also accept a \u003ccode\u003efrozendict\u003c/code\u003e (added in\nPython 3.15): \u003ccode\u003e.decode()\u003c/code\u003e, \u003ccode\u003edecodetree()\u003c/code\u003e, \u003ccode\u003e.encode()\u003c/code\u003e,\n\u003ccode\u003eutil.huffman_code()\u003c/code\u003e and \u003ccode\u003eutil.canonical_huffman()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003emake C code more cohesive\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e3.9.2\u003c/strong\u003e (2026-07-25):\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eadd more critical sections in Python-facing operations\u003c/li\u003e\n\u003cli\u003eoptimize mask indexing operations for sparse and dense masks\u003c/li\u003e\n\u003cli\u003emove tests for internal \u003ccode\u003essqi()\u003c/code\u003e to \u003ccode\u003edevel/test_sum_indices.py\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eremove all occurrences of \u003ccode\u003ePySlice_GetIndicesEx\u003c/code\u003e (deprecated since\nPython 3.6.1)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/ec1ea4ac828cb9f1530a94f58cc497e48a593aa8\"\u003e\u003ccode\u003eec1ea4a\u003c/code\u003e\u003c/a\u003e add release date - update docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/492b5530b47e095435d09b8664d6d2754987fae0\"\u003e\u003ccode\u003e492b553\u003c/code\u003e\u003c/a\u003e avoid MSVC warning about possible loas of data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/b54a84c52031f858937834119ab3648f1c12e0d5\"\u003e\u003ccode\u003eb54a84c\u003c/code\u003e\u003c/a\u003e validate large sum_indices() inputs consistently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/0921579e0e72b8e5357a173f72aa77e5c30904b5\"\u003e\u003ccode\u003e0921579\u003c/code\u003e\u003c/a\u003e clarify sc_encode_lock_held() output invariant\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/3fda1fd0bf7abdaff52c3e1aca6ffee5095c2351\"\u003e\u003ccode\u003e3fda1fd\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/9610fe69fc42caa53706de23fe733e479f3a413f\"\u003e\u003ccode\u003e9610fe6\u003c/code\u003e\u003c/a\u003e naming\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/970c2cc4c9a8e5d1422437ec99741b720a02da89\"\u003e\u003ccode\u003e970c2cc\u003c/code\u003e\u003c/a\u003e simplify update_doc.py - update readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/f53a9fb3ce3f53251474f3ea8ac715d88dcd1e59\"\u003e\u003ccode\u003ef53a9fb\u003c/code\u003e\u003c/a\u003e link codec functions to codec comparison\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/702508587cf2bd7cd38a83552bfba7b291d2117c\"\u003e\u003ccode\u003e7025085\u003c/code\u003e\u003c/a\u003e add new codecs document\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilanschnell/bitarray/commit/a0e2114cc5db207c1b932b6f03e7f2d3a2655714\"\u003e\u003ccode\u003ea0e2114\u003c/code\u003e\u003c/a\u003e update README key features\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ilanschnell/bitarray/compare/3.10.1...3.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `lxml` from 6.1.2 to 6.1.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/lxml/lxml/blob/master/CHANGES.txt\"\u003elxml's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e6.1.3 (2026-09-02)\u003c/h1\u003e\n\u003ch2\u003eBugs fixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLP#2165901: External parameter entity parsing was allowed by default\n(with \u003ccode\u003eresolve_entities=\u0026quot;internal\u0026quot;\u003c/code\u003e).\nIssue found by Tomer Fichman.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/3c1a4c7f2d5a3c19efe01adfd3c33ac3c8fe52c1\"\u003e\u003ccode\u003e3c1a4c7\u003c/code\u003e\u003c/a\u003e Prepare release of 6.1.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/c1191fc55b8d574544203d07e7a02ba3378ced8d\"\u003e\u003ccode\u003ec1191fc\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/03ec3123b9683e7f02ce659f34322667683d3eef\"\u003e\u003ccode\u003e03ec312\u003c/code\u003e\u003c/a\u003e Disable parameter entity parsing when internal-only entity parsing is requested.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/11d03e922e0a7845131df3ab2fb5e894c0ced0ab\"\u003e\u003ccode\u003e11d03e9\u003c/code\u003e\u003c/a\u003e Build: Prevent duplicate Py3.8 wheel builds.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/9efc586ed3555be22548a3188f7f435826834961\"\u003e\u003ccode\u003e9efc586\u003c/code\u003e\u003c/a\u003e Build: Exclude musllinux-ARM from Py3.8 wheel building to prevent slow emulat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/9716fb1e1a80db4ba5e36bf99947dfccd8730471\"\u003e\u003ccode\u003e9716fb1\u003c/code\u003e\u003c/a\u003e Build: Include older PyPy versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/0f3327d3c8fc1ba01c90a866770ad8c4889e537f\"\u003e\u003ccode\u003e0f3327d\u003c/code\u003e\u003c/a\u003e Build: Exclude Win-Aarch64 from wheel build.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/6967c960976541979570099de9866af398fb292f\"\u003e\u003ccode\u003e6967c96\u003c/code\u003e\u003c/a\u003e Build: Make all built wheels downloadable even if they don't pass the release...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/061218d210747a1181dea76fb6b6d0eebe946b2d\"\u003e\u003ccode\u003e061218d\u003c/code\u003e\u003c/a\u003e Build: Exclude Py3.15 i686 wheels from validation (because they are intention...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxml/lxml/commit/ce9fe0dd26bd5b64fe03b6bcdf68a997ee5a2596\"\u003e\u003ccode\u003ece9fe0d\u003c/code\u003e\u003c/a\u003e Build: Fix Py3.8 windows build.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/lxml/lxml/compare/lxml-6.1.2...lxml-6.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `onnxruntime` from 1.24.4 to 1.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/onnxruntime/releases\"\u003eonnxruntime's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eONNX Runtime v1.30.0\u003c/h2\u003e\n\u003cp\u003eONNX Runtime 1.30.0 expands generative AI inference, improves CPU and GPU performance, adds Go bindings, and strengthens runtime reliability. These notes cover changes since ONNX Runtime 1.29.1.\u003c/p\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eExpanded CUDA inference support with variable-length causal convolution for continuous batching, speculative decoding in paged XQA, and INT4 paged KV caches with per-channel scales (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32168\"\u003e#32168\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32340\"\u003e#32340\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32515\"\u003e#32515\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eImproved WebGPU PagedAttention, added GPT-OSS support and INT8 KV-cache block quantization, and extended convolution optimizations (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31727\"\u003e#31727\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32277\"\u003e#32277\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32284\"\u003e#32284\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32420\"\u003e#32420\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded fused CPU LinearAttention kernels for AVX-512, Arm64 NEON, and SVE, plus AVX2 LayerNorm/RMSNorm acceleration (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31674\"\u003e#31674\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31973\"\u003e#31973\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32178\"\u003e#32178\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32356\"\u003e#32356\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded Go bindings for the ONNX Runtime C API and DeepSeek Engram contrib operators (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29615\"\u003e#29615\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32268\"\u003e#32268\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAnnouncements \u0026amp; Compatibility\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFP4 QMoE kernels are now enabled by default in CUDA builds, with Windows build support added in this release. Source builds can opt out with \u003ccode\u003e-Donnxruntime_USE_FP4_QMOE=OFF\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32096\"\u003e#32096\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32163\"\u003e#32163\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eCUDA fpA-intB builds now default to a compact kernel set for FP16 activations, INT4/INT8 weights, scale-only quantization, and \u003ccode\u003eblock_size=32\u003c/code\u003e. Set \u003ccode\u003e-Donnxruntime_USE_FPA_INTB_GEMM_FULL=ON\u003c/code\u003e when building from source to retain the full kernel set, including BF16, zero-point, bias, larger-block-size, and native Hopper variants (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32324\"\u003e#32324\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eCPU FP16 \u003ccode\u003eGemm\u003c/code\u003e and \u003ccode\u003eMatMul\u003c/code\u003e execution is gated on hardware acceleration. CPU-assigned FP16 nodes without a matching kernel now fall back to FP32 (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32301\"\u003e#32301\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32197\"\u003e#32197\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eWebGPU plugin EP packaging now supports Linux AArch64. Plugin versions were advanced to WebGPU 0.4.0 and CUDA 0.2 (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32287\"\u003e#32287\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31960\"\u003e#31960\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31970\"\u003e#31970\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSecurity \u0026amp; Reliability\u003c/h2\u003e\n\u003ch3\u003eModel Loading, Memory, and Input Validation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimited nested model-graph depth and canonicalized external-data locations to harden model loading (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32344\"\u003e#32344\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32135\"\u003e#32135\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded checked rounding for BFC arena allocations and fixed prepacked-weight reference lifetimes (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32010\"\u003e#32010\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32040\"\u003e#32040\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eStrengthened shape, rank, and parameter validation for \u003ccode\u003eSplit\u003c/code\u003e, \u003ccode\u003eScan\u003c/code\u003e, \u003ccode\u003eGatherND\u003c/code\u003e, \u003ccode\u003eScatterND\u003c/code\u003e, \u003ccode\u003eSpaceToDepth\u003c/code\u003e/\u003ccode\u003eDepthToSpace\u003c/code\u003e, \u003ccode\u003eCrop\u003c/code\u003e, \u003ccode\u003eConv\u003c/code\u003e, \u003ccode\u003eNormalizer\u003c/code\u003e, and pooling (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29461\"\u003e#29461\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31668\"\u003e#31668\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32034\"\u003e#32034\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32039\"\u003e#32039\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32076\"\u003e#32076\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32157\"\u003e#32157\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32160\"\u003e#32160\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32161\"\u003e#32161\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32345\"\u003e#32345\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32349\"\u003e#32349\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eHardened generation and attention input handling, including attention-attribute narrowing, \u003ccode\u003eBifurcationDetector\u003c/code\u003e inputs, generation subgraph shapes, and QEmbed segment inputs. BeamSearch buffer expansion now uses dynamic shape storage (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31648\"\u003e#31648\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31701\"\u003e#31701\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32009\"\u003e#32009\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32078\"\u003e#32078\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32144\"\u003e#32144\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eValidated \u003ccode\u003eTreeEnsemble\u003c/code\u003e node references and bounded subtree comparison, rejected non-finite CPU \u003ccode\u003eRoiAlign\u003c/code\u003e coordinates, and required \u003ccode\u003eImageScaler\u003c/code\u003e bias to match the channel count (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32031\"\u003e#32031\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32043\"\u003e#32043\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32011\"\u003e#32011\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32002\"\u003e#32002\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded an allowlist of safe LoRA adapter parameter data types, validated \u003ccode\u003eMatMulFpQ4\u003c/code\u003e shape inputs, and checked MLAS blockwise quantization/dequantization index ranges (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31682\"\u003e#31682\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32032\"\u003e#32032\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32007\"\u003e#32007\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eGPU Bounds and Resource Lifetimes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eHardened CUDA indexing and buffer-size arithmetic in \u003ccode\u003eMatMulNBits\u003c/code\u003e, \u003ccode\u003eRemovePadding\u003c/code\u003e, \u003ccode\u003eRotaryEmbedding\u003c/code\u003e, \u003ccode\u003eSparseAttention\u003c/code\u003e, Whisper beam search, NMS, QDQ, and \u003ccode\u003eGatherElements\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31643\"\u003e#31643\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31994\"\u003e#31994\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31995\"\u003e#31995\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31996\"\u003e#31996\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31998\"\u003e#31998\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32014\"\u003e#32014\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32029\"\u003e#32029\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32030\"\u003e#32030\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed overflow in CUDA reduction scans and Softmax offset arithmetic, and handled zero-sized outputs in CUDA random-generator kernels (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32137\"\u003e#32137\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32330\"\u003e#32330\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31997\"\u003e#31997\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed CUDA MultiHeadAttention shared-cache scratch lifetimes and kept \u003ccode\u003eCudaAsyncBuffer\u003c/code\u003e staging storage alive across CUDA graph replay (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/31968\"\u003e#31968\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32121\"\u003e#32121\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eFixed WebGPU out-of-bounds subgroup-matrix loads for partial tiles, zero-initialized writable device-allocator buffers, and rejected foreign GPU handles in built-in data transfers (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32364\"\u003e#32364\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32063\"\u003e#32063\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32317\"\u003e#32317\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDependencies and Tooling\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpgraded Protobuf to 33.6 and refreshed Python documentation dependencies, including an ONNX security-related update (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29906\"\u003e#29906\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32190\"\u003e#32190\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32424\"\u003e#32424\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eUpdated JavaScript dependencies including \u003ccode\u003ejs-yaml\u003c/code\u003e, \u003ccode\u003ejoi\u003c/code\u003e, \u003ccode\u003efast-uri\u003c/code\u003e, and the Next.js end-to-end fixture (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32397\"\u003e#32397\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32486\"\u003e#32486\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32488\"\u003e#32488\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32505\"\u003e#32505\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32508\"\u003e#32508\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003ePinned GitHub Actions to full-length commit SHAs and strengthened packaging infrastructure with authenticated package feeds and NPM network isolation (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32176\"\u003e#32176\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32005\"\u003e#32005\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32440\"\u003e#32440\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003ch3\u003eCore APIs \u0026amp; Runtime\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded Go bindings for the ONNX Runtime C API (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29615\"\u003e#29615\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eExtended memory importing with host-pointer support and added access to preallocated outputs through \u003ccode\u003eKernelContext::GetPreallocatedOutput\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/29726\"\u003e#29726\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32089\"\u003e#32089\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded packed-attention workspace recipes and estimates, and made workspace input-shape handling aware of optional inputs (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32283\"\u003e#32283\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32321\"\u003e#32321\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32312\"\u003e#32312\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eAdded DeepSeek Engram contrib operators, \u003ccode\u003eEngramGate\u003c/code\u003e and \u003ccode\u003eNGramHashMapping\u003c/code\u003e, and expanded kernel coverage for Qwen-3.5 operators (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32268\"\u003e#32268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/pull/32106\"\u003e#32106\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/microsoft/onnxruntime/commit/f2c39fe2f838cf35ce7da92824f5a5e3ee6e88a7\"\u003e\u003ccode\u003ef2c39fe\u003c/code\u003e\u003c/a\u003e [CUDA] Add INT4 paged KV cache with per-channel scales (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32515\"\u003e#32515\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/5894ba8a53526b3aeb702bd86e6b117c9df8fa4f\"\u003e\u003ccode\u003e5894ba8\u003c/code\u003e\u003c/a\u003e Add portable random-access file reads to Env (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32503\"\u003e#32503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/a2ee3eb43052de307003e6256fc9258ce19d9c34\"\u003e\u003ccode\u003ea2ee3eb\u003c/code\u003e\u003c/a\u003e Fix CUDA plugin device discovery on WSL (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32517\"\u003e#32517\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/b652e595b04d202b7f71af1d9105a183fac2b100\"\u003e\u003ccode\u003eb652e59\u003c/code\u003e\u003c/a\u003e [WebGPU] Prepack Conv weights for the im2col-matmul path (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32420\"\u003e#32420\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/0f0f29f5015f16926912ae47061e6a3eedcfbe04\"\u003e\u003ccode\u003e0f0f29f\u003c/code\u003e\u003c/a\u003e Get rid of spurious warning about not being able to find spectre mitigation (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/23dd6510fd395b4556f474c1c0079be2a8b7a8c8\"\u003e\u003ccode\u003e23dd651\u003c/code\u003e\u003c/a\u003e Register ONNX schemas only when static registration is disabled (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32353\"\u003e#32353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/33af5d32801b2e631ebece4f382f4ba775f17d8c\"\u003e\u003ccode\u003e33af5d3\u003c/code\u003e\u003c/a\u003e Release external data loaders after graph initialization (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32502\"\u003e#32502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/2e3c24d5963d62d0bd7c9d306433b19b7304d5d2\"\u003e\u003ccode\u003e2e3c24d\u003c/code\u003e\u003c/a\u003e Clarify external initializer and EP context path interaction (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32442\"\u003e#32442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/e76036b8e49515ee7dd2dd0ac39c9d8b7533d38a\"\u003e\u003ccode\u003ee76036b\u003c/code\u003e\u003c/a\u003e [CUDA] Pin FP8 GEMV residency for grids just past two blocks per SM (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32433\"\u003e#32433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/onnxruntime/commit/82583c5b6398a9c37815f91e9cd1d7c165a132a7\"\u003e\u003ccode\u003e82583c5\u003c/code\u003e\u003c/a\u003e Add session option for a BNHS GroupQueryAttention Value cache layout (\u003ca href=\"https://redirect.github.com/microsoft/onnxruntime/issues/32139\"\u003e#32139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/onnxruntime/compare/v1.24.4...v1.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cachetools` from 7.1.7 to 7.2.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tkem/cachetools/blob/master/CHANGELOG.rst\"\u003ecachetools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev7.2.0 (2026-09-16)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eDeprecate use of \u003ccode\u003ecache=None\u003c/code\u003e to suppress caching with the\n\u003ccode\u003e@cached\u003c/code\u003e decorator.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd support for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor test improvements.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMinor documentation updates.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003ev7.1.8 (2026-08-31)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eReject negative \u003ccode\u003emaxsize\u003c/code\u003e in \u003ccode\u003eCache.__init__\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/3c082c654c2804b9354e4b62dbd2994f1aac464d\"\u003e\u003ccode\u003e3c082c6\u003c/code\u003e\u003c/a\u003e Release v7.2.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/ff9a394f437eafcf2f6c079578638a326da6d0a7\"\u003e\u003ccode\u003eff9a394\u003c/code\u003e\u003c/a\u003e Minor documentation updates.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/9b7fe6ca659382158897723205882f0b4126241e\"\u003e\u003ccode\u003e9b7fe6c\u003c/code\u003e\u003c/a\u003e Deprecate \u003ca href=\"https://github.com/cached\"\u003e\u003ccode\u003e@​cached\u003c/code\u003e\u003c/a\u003e(cache=None).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/72adda62f911ff3fb635c4817635bf9c92b87289\"\u003e\u003ccode\u003e72adda6\u003c/code\u003e\u003c/a\u003e Minor test improvements.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/8275879f071bc1a9c117d68f33b92aae7aacab0a\"\u003e\u003ccode\u003e8275879\u003c/code\u003e\u003c/a\u003e Update copilot instructions and review.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/290c50b37e464ca5733131d86a7e521beeb386e8\"\u003e\u003ccode\u003e290c50b\u003c/code\u003e\u003c/a\u003e Add support for Python 3.15.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/4500e3d04288738d25acbb4973eb3c3e1bf41db9\"\u003e\u003ccode\u003e4500e3d\u003c/code\u003e\u003c/a\u003e Release v7.1.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/6e49bef559f20995d603830202afda0ea890bd1a\"\u003e\u003ccode\u003e6e49bef\u003c/code\u003e\u003c/a\u003e Update copilot instructions and review.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/defc58b02543ca0189fb37505827db4cc4e0565c\"\u003e\u003ccode\u003edefc58b\u003c/code\u003e\u003c/a\u003e Prepare v7.1.8.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tkem/cachetools/commit/a39180bfced6e162614e23eaa9c3dc79d8ec74d6\"\u003e\u003ccode\u003ea39180b\u003c/code\u003e\u003c/a\u003e Remove somewhat superfluous and slightly incorrect documentation note regardi...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tkem/cachetools/compare/v7.1.7...v7.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-mock` from 3.15.1 to 3.16.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/releases\"\u003epytest-mock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.16.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-09-27\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/604\"\u003e#604\u003c/a\u003e: Fixed \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e for async functions spied with \u003ccode\u003emocker.spy\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/611\"\u003e#611\u003c/a\u003e: Fixed async mock assertion introspection to use awaited arguments instead of the latest call's arguments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/606\"\u003e#606\u003c/a\u003e: \u003ccode\u003emocker.resetall(return_value=True, side_effect=True)\u003c/code\u003e now also applies to non-callable mocks, such as those returned by \u003ccode\u003emocker.create_autospec(SomeClass, instance=True)\u003c/code\u003e. Previously both arguments were silently ignored for them.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/547\"\u003e#547\u003c/a\u003e: Added \u003ccode\u003eSpyType\u003c/code\u003e for annotating \u003ccode\u003emocker.spy\u003c/code\u003e results.\u003c/li\u003e\n\u003cli\u003eDropped support for EOL Python 3.9.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/147\"\u003e#147\u003c/a\u003e: Removed handling of \u003ccode\u003eRuntimeError: stop called on unstarted patcher\u003c/code\u003e, which can no longer occur in the supported Python versions.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst\"\u003epytest-mock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.16.0\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-09-27\u003c/em\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#604](https://github.com/pytest-dev/pytest-mock/issues/604) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/604\u0026gt;\u003c/code\u003e_: Fixed \u003ccode\u003eduplicate_iterators=True\u003c/code\u003e for async functions spied with \u003ccode\u003emocker.spy\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#611](https://github.com/pytest-dev/pytest-mock/issues/611) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/611\u0026gt;\u003c/code\u003e_: Fixed async mock assertion introspection to use awaited arguments instead of the latest call's arguments.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#606](https://github.com/pytest-dev/pytest-mock/issues/606) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/606\u0026gt;\u003c/code\u003e_: \u003ccode\u003emocker.resetall(return_value=True, side_effect=True)\u003c/code\u003e now also applies to non-callable mocks, such as those returned by \u003ccode\u003emocker.create_autospec(SomeClass, instance=True)\u003c/code\u003e. Previously both arguments were silently ignored for them.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#547](https://github.com/pytest-dev/pytest-mock/issues/547) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/547\u0026gt;\u003c/code\u003e_: Added \u003ccode\u003eSpyType\u003c/code\u003e for annotating \u003ccode\u003emocker.spy\u003c/code\u003e results.\u003c/li\u003e\n\u003cli\u003eDropped support for EOL Python 3.9.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#147](https://github.com/pytest-dev/pytest-mock/issues/147) \u0026lt;https://github.com/pytest-dev/pytest-mock/issues/147\u0026gt;\u003c/code\u003e_: Removed handling of \u003ccode\u003eRuntimeError: stop called on unstarted patcher\u003c/code\u003e, which can no longer occur in the supported Python versions.\u003c/li\u003e\n\u003cli\u003eAdded support for Python 3.15.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/f3b531f93c6d9837edc87ea1a6f4324dc9a2cdf3\"\u003e\u003ccode\u003ef3b531f\u003c/code\u003e\u003c/a\u003e Release 3.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/71ed67309520be160f3e100368705b58758d237a\"\u003e\u003ccode\u003e71ed673\u003c/code\u003e\u003c/a\u003e Fix duplicate_iterators for async spies (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/0797e3d303cc5bbe0a3514b0625f7aeb3fa350b0\"\u003e\u003ccode\u003e0797e3d\u003c/code\u003e\u003c/a\u003e Fix async assertion argument introspection (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/611\"\u003e#611\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/e24c334d573cfbf6989a31f4e3346676d9d31598\"\u003e\u003ccode\u003ee24c334\u003c/code\u003e\u003c/a\u003e docs: import os in the opening usage example (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/9e7eb7b59cde362c1c8ace2d18ca00fe2d7a1cd1\"\u003e\u003ccode\u003e9e7eb7b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/613\"\u003e#613\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/445fd4d3daa8ed4c6d5428a77880da2e03d2f721\"\u003e\u003ccode\u003e445fd4d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/a8bd0b147afdf6b4bb1a1a3c3c088f32b0240091\"\u003e\u003ccode\u003ea8bd0b1\u003c/code\u003e\u003c/a\u003e Honour resetall() arguments for non-callable mocks (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/606\"\u003e#606\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/6559fdfd5b67f096423e604a3a5a7045db2486a0\"\u003e\u003ccode\u003e6559fdf\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/466d026254c949a8fbba8626b894308827be81cf\"\u003e\u003ccode\u003e466d026\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/605\"\u003e#605\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/164defebde25bc31d53a2a64943c5c9aac43b57e\"\u003e\u003ccode\u003e164defe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/603\"\u003e#603\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-mock/compare/v3.15.1...v3.16.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.9\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.9\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid false positives for overloaded division (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28309\"\u003e#28309\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-bugbear\u003c/code\u003e] Avoid false positives for calls with keyword arguments (\u003ccode\u003eB009\u003c/code\u003e, \u003ccode\u003eB010\u003c/code\u003e, \u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28776\"\u003e#28776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Allow lazy imports to be used in deferred annotations (\u003ccode\u003eTID255\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28767\"\u003e#28767\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate LibCST-based fixes for Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28616\"\u003e#28616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Mention stubs in the diagnostic message (\u003ccode\u003ePYI002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28542\"\u003e#28542\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix horizontal overflow on the rules documentation page (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28699\"\u003e#28699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rules table with category information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28651\"\u003e#28651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-annotations\u003c/code\u003e] Clarify that \u003ccode\u003eANN401\u003c/code\u003e checks return types in addition to arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28334\"\u003e#28334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Document type-checker interaction (\u003ccode\u003eB010\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28509\"\u003e#28509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Document \u003ccode\u003emap\u003c/code\u003e/generator exception behavior (\u003ccode\u003eC417\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27794\"\u003e#27794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Mention related isort settings (\u003ccode\u003eRUF022\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28719\"\u003e#28719\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/qinpei-dev\"\u003e\u003ccode\u003e@​qinpei-dev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sanjayrohith\"\u003e\u003ccode\u003e@​sanjayrohith\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/webdevsamran\"\u003e\u003ccode\u003e@​webdevsamran\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zaniebot\"\u003e\u003ccode\u003e@​zaniebot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewdurbin\"\u003e\u003ccode\u003e@​ewdurbin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/spaceone\"\u003e\u003ccode\u003e@​spaceone\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/IbrahimKhan12\"\u003e\u003ccode\u003e@​IbrahimKhan12\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/devtechedge\"\u003e\u003ccode\u003e@​devtechedge\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GruffElixir\"\u003e\u003ccode\u003e@​GruffElixir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.9\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.9/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.9\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-24.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid false positives for overloaded division (\u003ccode\u003eRUF069\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28309\"\u003e#28309\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-bugbear\u003c/code\u003e] Avoid false positives for calls with keyword arguments (\u003ccode\u003eB009\u003c/code\u003e, \u003ccode\u003eB010\u003c/code\u003e, \u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28776\"\u003e#28776\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-tidy-imports\u003c/code\u003e] Allow lazy imports to be used in deferred annotations (\u003ccode\u003eTID255\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28767\"\u003e#28767\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate LibCST-based fixes for Python 3.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28616\"\u003e#28616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Mention stubs in the diagnostic message (\u003ccode\u003ePYI002\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28542\"\u003e#28542\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix horizontal overflow on the rules documentation page (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28699\"\u003e#28699\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate rules table with category information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28651\"\u003e#28651\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-annotations\u003c/code\u003e] Clarify that \u003ccode\u003eANN401\u003c/code\u003e checks return types in addition to arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28334\"\u003e#28334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Document type-checker interaction (\u003ccode\u003eB010\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28509\"\u003e#28509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Document \u003ccode\u003emap\u003c/code\u003e/generator exception behavior (\u003ccode\u003eC417\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27794\"\u003e#27794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Mention related isort settings (\u003ccode\u003eRUF022\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28719\"\u003e#28719\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/qinpei-dev\"\u003e\u003ccode\u003e@​qinpei-dev\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sanjayrohith\"\u003e\u003ccode\u003e@​sanjayrohith\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/webdevsamran\"\u003e\u003ccode\u003e@​webdevsamran\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zaniebot\"\u003e\u003ccode\u003e@​zaniebot\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewdurbin\"\u003e\u003ccode\u003e@​ewdurbin\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/spaceone\"\u003e\u003ccode\u003e@​spaceone\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/IbrahimKhan12\"\u003e\u003ccode\u003e@​IbrahimKhan12\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/devtechedge\"\u003e\u003ccode\u003e@​devtechedge\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GruffElixir\"\u003e\u003ccode\u003e@​GruffElixir\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.8\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-09-16.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eVisit functional \u003ccode\u003eTypedDict\u003c/code\u003e keyword arguments correctly (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28584\"\u003e#28584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Detect nested \u003ccode\u003easync with\u003c/code\u003e under sync parent (\u003ccode\u003eSIM117\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27821\"\u003e#27821\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Preserve operand order in \u003ccode\u003eSIM109\u003c/code\u003e fix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27824\"\u003e#27824\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/0be08a206f9c3180afd3e93bcc792ed5cb1f4db1\"\u003e\u003ccode\u003e0be08a2\u003c/code\u003e\u003c/a\u003e Bump version to 0.16.9 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28882\"\u003e#28882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b4920b72b354e7c715ab861ae23458874683bb02\"\u003e\u003ccode\u003eb4920b7\u003c/code\u003e\u003c/a\u003e Rename \u003ccode\u003eruff_cli\u003c/code\u003e to \u003ccode\u003eruff_command_line\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28881\"\u003e#28881\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/47c751b95908a4d1f95f9ef8723036aae9da0b18\"\u003e\u003ccode\u003e47c751b\u003c/code\u003e\u003c/a\u003e Update dependency astral-sh/uv to v0.12.18 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28880\"\u003e#28880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/8c244e56a1aeac31c26d2371ef26588e0632235c\"\u003e\u003ccode\u003e8c244e5\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Document \u003ccode\u003emap\u003c/code\u003e/generator exception behavior (\u003ccode\u003eC417\u003c/code\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5edf5a1d0a84663079e46983216059f06acea87d\"\u003e\u003ccode\u003e5edf5a1\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003etarget\u003c/code\u003e form in \u003ccode\u003erooster.version_files\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28876\"\u003e#28876\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/915bb2b4bf9ae7eee47cf55646bbfebae254a23b\"\u003e\u003ccode\u003e915bb2b\u003c/code\u003e\u003c/a\u003e [ty] Prefer existing @ paths over response files in Ruff and ty (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28877\"\u003e#28877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4710e1aa962b13720cf64aa84eb279c5333896d7\"\u003e\u003ccode\u003e4710e1a\u003c/code\u003e\u003c/a\u003e ci(github): update version number in placeholder of issue template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28871\"\u003e#28871\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eedfc62a75bf1ba86d48959b00eea75ae87eadca\"\u003e\u003ccode\u003eeedfc62\u003c/code\u003e\u003c/a\u003e [ty] Propagate outer type context through cast calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28855\"\u003e#28855\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ceaa6a00830e1e350b8a23977a1a10ac467920a1\"\u003e\u003ccode\u003eceaa6a0\u003c/code\u003e\u003c/a\u003e [ty] Contain rendered code within Markdown fences (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28869\"\u003e#28869\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/dba0f30615424b94f94a174bba6ce6cce4bf11ff\"\u003e\u003ccode\u003edba0f30\u003c/code\u003e\u003c/a\u003e authorize ruff-pre-commit dispatch via OIDC (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28867\"\u003e#28867\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.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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/double16/shyhurricane/pull/82","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/double16%2Fshyhurricane/issues/82","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/82/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-30T13:38:40.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5647366142","node_id":"PR_kwDOQQKcjc8AAAABF56Xpg","number":663,"state":"closed","title":"chore(deps): bump the backend-minor-patch group across 1 directory with 68 updates","user":"dependabot[bot]","labels":["dependencies","backend"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T01:18:32.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-30T13:38:40.000Z","updated_at":"2026-10-03T01:18:33.000Z","time_to_close":214792,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"backend-minor-patch","update_count":68,"packages":[{"name":"aiohappyeyeballs","old_version":"2.6.1","new_version":"2.7.1","repository_url":"https://github.com/aio-libs/aiohappyeyeballs"},{"name":"aiosmtplib","old_version":"5.1.2","new_version":"5.1.3","repository_url":"https://github.com/cole/aiosmtplib"},{"name":"alembic","old_version":"1.17.0","new_version":"1.20.0","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"amqp","old_version":"5.3.1","new_version":"5.4.0","repository_url":"https://github.com/celery/py-amqp"},{"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.14.2","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"asyncpg","old_version":"0.30.0","new_version":"0.31.0","repository_url":"https://github.com/MagicStack/asyncpg"},{"name":"babel","old_version":"2.17.0","new_version":"2.18.0","repository_url":"https://github.com/python-babel/babel"},{"name":"bidict","old_version":"0.23.1","new_version":"0.24.1","repository_url":"https://github.com/jab/bidict"},{"name":"billiard","old_version":"4.2.2","new_version":"4.3.0","repository_url":"https://github.com/celery/billiard"},{"name":"casbin-async-sqlalchemy-adapter","old_version":"1.13.0","new_version":"1.17.0","repository_url":"https://github.com/officialpycasbin/async-sqlalchemy-adapter"},{"name":"celery","old_version":"5.5.3","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":"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":"click-repl","old_version":"0.3.0","new_version":"0.4.0","repository_url":"https://github.com/click-contrib/click-repl"},{"name":"fastapi","old_version":"0.136.1","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastapi-mail","old_version":"1.6.5","new_version":"1.6.8","repository_url":"https://github.com/sabuhish/fastapi-mail"},{"name":"greenlet","old_version":"3.2.4","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"httptools","old_version":"0.7.1","new_version":"0.8.0","repository_url":"https://github.com/MagicStack/httptools"},{"name":"idna","old_version":"3.15","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"kombu","old_version":"5.5.4","new_version":"5.6.2","repository_url":"https://github.com/celery/kombu"},{"name":"limits","old_version":"5.6.0","new_version":"5.8.0","repository_url":"https://github.com/alisaifee/limits"},{"name":"mako","old_version":"1.3.12","new_version":"1.4.3","repository_url":"https://github.com/sqlalchemy/mako"},{"name":"markdown","old_version":"3.10.2","new_version":"3.11","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"numpy","old_version":"2.3.4","new_version":"2.5.3","repository_url":"https://github.com/numpy/numpy"},{"name":"prometheus-client","old_version":"0.23.1","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"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.4.1","new_version":"0.5.4","repository_url":"https://github.com/aio-libs/propcache"},{"name":"psycopg2-binary","old_version":"2.9.11","new_version":"2.9.13","repository_url":"https://github.com/psycopg/psycopg2"},{"name":"pycasbin","old_version":"2.4.0","new_version":"2.8.0","repository_url":"https://github.com/casbin/pycasbin"},{"name":"pydantic","old_version":"2.12.5","new_version":"2.13.5","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pydantic-settings","old_version":"2.13.1","new_version":"2.15.0","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.49.0","repository_url":"https://github.com/pydantic/pydantic"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.14.0","new_version":"2.15.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyotp","old_version":"2.9.0","new_version":"2.10.0","repository_url":"https://github.com/pyauth/pyotp"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-engineio","old_version":"4.13.3","new_version":"4.14.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-multipart","old_version":"0.0.31","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"python-socketio","old_version":"5.16.3","new_version":"5.17.0","repository_url":"https://github.com/sponsors/miguelgrinberg"},{"name":"pytokens","old_version":"0.2.0","new_version":"0.4.1","repository_url":"https://github.com/tusharsadhwani/pytokens"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"sentry-sdk","old_version":"2.22.0","new_version":"2.70.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"simpleeval","old_version":"1.0.5","new_version":"1.0.8","repository_url":"https://github.com/danthedeckie/simpleeval"},{"name":"slowapi","old_version":"0.1.9","new_version":"0.1.10","repository_url":"https://github.com/laurents/slowapi"},{"name":"sqlalchemy","old_version":"2.0.44","new_version":"2.1.1","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"1.3.1","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"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":"ua-parser","old_version":"1.0.1","new_version":"1.0.2","repository_url":"https://github.com/ua-parser/uap-python"},{"name":"urllib3","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uvicorn","old_version":"0.37.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"uvloop","old_version":"0.21.0","new_version":"0.22.1","repository_url":"https://github.com/MagicStack/uvloop"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.2.14","new_version":"0.9.1","repository_url":"https://github.com/jquast/wcwidth"},{"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.22.0","new_version":"1.25.1","repository_url":"https://github.com/aio-libs/yarl"},{"name":"zope-event","old_version":"6.0","new_version":"6.2","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"8.0.1","new_version":"8.6","repository_url":"https://github.com/zopefoundation/zope.interface"},{"name":"fakeredis","old_version":"2.32.0","new_version":"2.38.0","repository_url":"https://github.com/cunla/fakeredis-py"},{"name":"pytest-asyncio","old_version":"1.2.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"autoflake","old_version":"2.3.1","new_version":"2.4.0","repository_url":"https://github.com/PyCQA/autoflake"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"platformdirs","old_version":"4.5.0","new_version":"4.12.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pycodestyle","old_version":"2.14.0","new_version":"2.15.0","repository_url":"https://github.com/PyCQA/pycodestyle"},{"name":"mkdocs-get-deps","old_version":"0.2.0","new_version":"0.2.2","repository_url":"https://github.com/mkdocs/get-deps"},{"name":"mkdocs-material","old_version":"9.6.22","new_version":"9.7.7","repository_url":"https://github.com/squidfunk/mkdocs-material"}],"path":null,"ecosystem":"pip"},"body":"Bumps the backend-minor-patch group with 68 updates in the /Backend_FastAPI directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aiohappyeyeballs](https://github.com/aio-libs/aiohappyeyeballs) | `2.6.1` | `2.7.1` |\n| [aiosmtplib](https://github.com/cole/aiosmtplib) | `5.1.2` | `5.1.3` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.17.0` | `1.20.0` |\n| [amqp](https://github.com/celery/py-amqp) | `5.3.1` | `5.4.0` |\n| [annotated-types](https://github.com/annotated-types/annotated-types) | `0.7.0` | `0.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.14.2` | `4.15.1` |\n| [asyncpg](https://github.com/MagicStack/asyncpg) | `0.30.0` | `0.31.0` |\n| [babel](https://github.com/python-babel/babel) | `2.17.0` | `2.18.0` |\n| [bidict](https://github.com/jab/bidict) | `0.23.1` | `0.24.1` |\n| [billiard](https://github.com/celery/billiard) | `4.2.2` | `4.3.0` |\n| [casbin-async-sqlalchemy-adapter](https://github.com/officialpycasbin/async-sqlalchemy-adapter) | `1.13.0` | `1.17.0` |\n| [celery](https://github.com/celery/celery) | `5.5.3` | `5.6.3` |\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| [click-repl](https://github.com/click-contrib/click-repl) | `0.3.0` | `0.4.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.136.1` | `0.141.1` |\n| [fastapi-mail](https://github.com/sabuhish/fastapi-mail) | `1.6.5` | `1.6.8` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.2.4` | `3.5.6` |\n| [httptools](https://github.com/MagicStack/httptools) | `0.7.1` | `0.8.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.20` |\n| [kombu](https://github.com/celery/kombu) | `5.5.4` | `5.6.2` |\n| [limits](https://github.com/alisaifee/limits) | `5.6.0` | `5.8.0` |\n| [mako](https://github.com/sqlalchemy/mako) | `1.3.12` | `1.4.3` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.2` | `3.11` |\n| [numpy](https://github.com/numpy/numpy) | `2.3.4` | `2.5.3` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.23.1` | `0.26.0` |\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.4.1` | `0.5.4` |\n| [psycopg2-binary](https://github.com/psycopg/psycopg2) | `2.9.11` | `2.9.13` |\n| [pycasbin](https://github.com/casbin/pycasbin) | `2.4.0` | `2.8.0` |\n| [pydantic](https://github.com/pydantic/pydantic) | `2.12.5` | `2.13.5` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.13.1` | `2.15.0` |\n| [pydantic-core](https://github.com/pydantic/pydantic) | `2.41.5` | `2.49.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.14.0` | `2.15.0` |\n| [pyotp](https://github.com/pyauth/pyotp) | `2.9.0` | `2.10.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.13.3` | `4.14.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.31` | `0.0.32` |\n| [python-socketio](https://github.com/sponsors/miguelgrinberg) | `5.16.3` | `5.17.0` |\n| [pytokens](https://github.com/tusharsadhwani/pytokens) | `0.2.0` | `0.4.1` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.22.0` | `2.70.0` |\n| [simpleeval](https://github.com/danthedeckie/simpleeval) | `1.0.5` | `1.0.8` |\n| [slowapi](https://github.com/laurents/slowapi) | `0.1.9` | `0.1.10` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.44` | `2.1.1` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.7.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| [ua-parser](https://github.com/ua-parser/uap-python) | `1.0.1` | `1.0.2` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.7.0` | `2.8.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.37.0` | `0.54.0` |\n| [uvloop](https://github.com/MagicStack/uvloop) | `0.21.0` | `0.22.1` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.3.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.14` | `0.9.1` |\n| [wsproto](https://github.com/python-hyper/wsproto) | `1.2.0` | `1.3.2` |\n| [yarl](https://github.com/aio-libs/yarl) | `1.22.0` | `1.25.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `6.0` | `6.2` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `8.0.1` | `8.6` |\n| [fakeredis](https://github.com/cunla/fakeredis-py) | `2.32.0` | `2.38.0` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.2.0` | `1.4.0` |\n| [autoflake](https://github.com/PyCQA/autoflake) | `2.3.1` | `2.4.0` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.5.0` | `4.12.0` |\n| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.14.0` | `2.15.0` |\n| [mkdocs-get-deps](https://github.com/mkdocs/get-deps) | `0.2.0` | `0.2.2` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.6.22` | `9.7.7` |\n\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 `aiosmtplib` from 5.1.2 to 5.1.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/cole/aiosmtplib/releases\"\u003eaiosmtplib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.1.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSecurity: reject addresses containing whitespace or angle brackets outside of a\nquoted local part in \u003ccode\u003email\u003c/code\u003e, \u003ccode\u003ercpt\u003c/code\u003e, \u003ccode\u003evrfy\u003c/code\u003e, \u003ccode\u003eexpn\u003c/code\u003e and \u003ccode\u003esendmail\u003c/code\u003e.\nPreviously, a caller supplied address such as\n\u003ccode\u003euser@example.com\u0026gt; AUTH=\u0026lt;attacker@example.com\u003c/code\u003e could smuggle additional ESMTP\nparameters onto the command line. This is a follow up to the fix in 5.1.1 for\nCVE-2026-53533 (GHSA-v3q9-hj7j-63hq), which only rejected control characters.\n\u003ccode\u003esendmail\u003c/code\u003e now validates all addresses before sending any commands.\u003c/li\u003e\n\u003cli\u003eBugfix: reject \u003ccode\u003elocal_hostname\u003c/code\u003e values (and the \u003ccode\u003ehostname\u003c/code\u003e argument to\n\u003ccode\u003ehelo\u003c/code\u003e/\u003ccode\u003eehlo\u003c/code\u003e) containing whitespace or control characters, so a hostname\nsuch as \u003ccode\u003eme.example.com XCLIENT ADDR=1.2.3.4\u003c/code\u003e can no longer smuggle extra\nparameters onto the EHLO/HELO command line. Surrounding whitespace is stripped.\u003c/li\u003e\n\u003cli\u003eBugfix: raise \u003ccode\u003eSMTPAuthenticationError\u003c/code\u003e instead of \u003ccode\u003ebinascii.Error\u003c/code\u003e when the\nserver sends a malformed (non-base64) CRAM-MD5 challenge, so \u003ccode\u003elogin\u003c/code\u003e can fall\nback to the next auth method\u003c/li\u003e\n\u003cli\u003eBugfix: prevent SMTP command/response desync from unsolicited server data (thanks\n\u003ca href=\"https://github.com/Charisn\"\u003e\u003ccode\u003e@​Charisn\u003c/code\u003e\u003c/a\u003e for contributing)\u003c/li\u003e\n\u003cli\u003eBugfix: handle protocol connection lost callback arriving after reconnect\u003c/li\u003e\n\u003cli\u003eBugfix: close connection on async context manager exit in cases of a server error response\u003c/li\u003e\n\u003cli\u003eBugfix: release connection lock on connect timeout\u003c/li\u003e\n\u003cli\u003eBugfix: re-derive the default port on each \u003ccode\u003econnect()\u003c/code\u003e so changing\n\u003ccode\u003euse_tls\u003c/code\u003e/\u003ccode\u003estart_tls\u003c/code\u003e between connects no longer reuses a stale default.\nDefaulted \u003ccode\u003eport\u003c/code\u003e/\u003ccode\u003ehostname\u003c/code\u003e are now resolved per-connect rather than\nwritten back onto the instance, so they read back as \u003ccode\u003eNone\u003c/code\u003e when unset\u003c/li\u003e\n\u003cli\u003eBugfix: typeerror in latest ty\u003c/li\u003e\n\u003cli\u003eBugfix: mark response waiter exceptions as retrieved when they are set, so\n\u003ccode\u003eFuture exception was never retrieved\u003c/code\u003e is no longer logged on free-threaded\nbuilds where the previous \u003ccode\u003e__del__\u003c/code\u003e based cleanup ran too late\u003c/li\u003e\n\u003cli\u003eCI: test on free-threaded 3.14 and on 3.15 (standard and free-threaded)\u003c/li\u003e\n\u003cli\u003eBugfix: the \u003ccode\u003eSIZE\u003c/code\u003e parameter sent with \u003ccode\u003eMAIL FROM\u003c/code\u003e now reports the number\nof octets as the message will be transmitted (with CRLF line endings), rather\nthan the raw length of the message argument\u003c/li\u003e\n\u003cli\u003eBugfix: data arriving on the transport after the connection is lost is now\ndropped instead of raising \u003ccode\u003eRuntimeError\u003c/code\u003e from the protocol callback\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003eSMTPProtocol\u003c/code\u003e now records that it is using TLS after a successful\n\u003ccode\u003estart_tls\u003c/code\u003e, so a second upgrade attempt on the protocol is rejected\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003estarttls\u003c/code\u003e now validates its TLS options before sending EHLO, so\ninvalid options raise \u003ccode\u003eValueError\u003c/code\u003e without touching the connection\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003ehelo\u003c/code\u003e no longer records a failed response as \u003ccode\u003elast_helo_response\u003c/code\u003e,\nso a rejected HELO does not leave the session looking as if a greeting succeeded\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e values are no longer silently passed\nthrough the auth encoding helpers; only \u003ccode\u003estr\u003c/code\u003e and \u003ccode\u003ebytes\u003c/code\u003e are accepted, as\nthe type annotations already stated\u003c/li\u003e\n\u003cli\u003eBugfix: TLS context setup now run in thread (thanks \u003ca href=\"https://github.com/tr4nt0r\"\u003e\u003ccode\u003e@​tr4nt0r\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\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/cole/aiosmtplib/blob/main/CHANGELOG.rst\"\u003eaiosmtplib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.1.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSecurity: reject addresses containing whitespace or angle brackets outside of a\nquoted local part in \u003ccode\u003email\u003c/code\u003e, \u003ccode\u003ercpt\u003c/code\u003e, \u003ccode\u003evrfy\u003c/code\u003e, \u003ccode\u003eexpn\u003c/code\u003e and \u003ccode\u003esendmail\u003c/code\u003e.\nPreviously, a caller supplied address such as\n\u003ccode\u003euser@example.com\u0026gt; AUTH=\u0026lt;attacker@example.com\u003c/code\u003e could smuggle additional ESMTP\nparameters onto the command line. This is a follow up to the fix in 5.1.1 for\nCVE-2026-53533 (GHSA-v3q9-hj7j-63hq), which only rejected control characters.\n\u003ccode\u003esendmail\u003c/code\u003e now validates all addresses before sending any commands.\u003c/li\u003e\n\u003cli\u003eBugfix: reject \u003ccode\u003elocal_hostname\u003c/code\u003e values (and the \u003ccode\u003ehostname\u003c/code\u003e argument to\n\u003ccode\u003ehelo\u003c/code\u003e/\u003ccode\u003eehlo\u003c/code\u003e) containing whitespace or control characters, so a hostname\nsuch as \u003ccode\u003eme.example.com XCLIENT ADDR=1.2.3.4\u003c/code\u003e can no longer smuggle extra\nparameters onto the EHLO/HELO command line. Surrounding whitespace is stripped.\u003c/li\u003e\n\u003cli\u003eBugfix: raise \u003ccode\u003eSMTPAuthenticationError\u003c/code\u003e instead of \u003ccode\u003ebinascii.Error\u003c/code\u003e when the\nserver sends a malformed (non-base64) CRAM-MD5 challenge, so \u003ccode\u003elogin\u003c/code\u003e can fall\nback to the next auth method\u003c/li\u003e\n\u003cli\u003eBugfix: prevent SMTP command/response desync from unsolicited server data (thanks\n\u003ca href=\"https://github.com/Charisn\"\u003e\u003ccode\u003e@​Charisn\u003c/code\u003e\u003c/a\u003e for contributing)\u003c/li\u003e\n\u003cli\u003eBugfix: handle protocol connection lost callback arriving after reconnect\u003c/li\u003e\n\u003cli\u003eBugfix: close connection on async context manager exit in cases of a server error response\u003c/li\u003e\n\u003cli\u003eBugfix: release connection lock on connect timeout\u003c/li\u003e\n\u003cli\u003eBugfix: re-derive the default port on each \u003ccode\u003econnect()\u003c/code\u003e so changing\n\u003ccode\u003euse_tls\u003c/code\u003e/\u003ccode\u003estart_tls\u003c/code\u003e between connects no longer reuses a stale default.\nDefaulted \u003ccode\u003eport\u003c/code\u003e/\u003ccode\u003ehostname\u003c/code\u003e are now resolved per-connect rather than\nwritten back onto the instance, so they read back as \u003ccode\u003eNone\u003c/code\u003e when unset\u003c/li\u003e\n\u003cli\u003eBugfix: typeerror in latest ty\u003c/li\u003e\n\u003cli\u003eBugfix: mark response waiter exceptions as retrieved when they are set, so\n\u003ccode\u003eFuture exception was never retrieved\u003c/code\u003e is no longer logged on free-threaded\nbuilds where the previous \u003ccode\u003e__del__\u003c/code\u003e based cleanup ran too late\u003c/li\u003e\n\u003cli\u003eCI: test on free-threaded 3.14 and on 3.15 (standard and free-threaded)\u003c/li\u003e\n\u003cli\u003eBugfix: the \u003ccode\u003eSIZE\u003c/code\u003e parameter sent with \u003ccode\u003eMAIL FROM\u003c/code\u003e now reports the number\nof octets as the message will be transmitted (with CRLF line endings), rather\nthan the raw length of the message argument\u003c/li\u003e\n\u003cli\u003eBugfix: data arriving on the transport after the connection is lost is now\ndropped instead of raising \u003ccode\u003eRuntimeError\u003c/code\u003e from the protocol callback\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003eSMTPProtocol\u003c/code\u003e now records that it is using TLS after a successful\n\u003ccode\u003estart_tls\u003c/code\u003e, so a second upgrade attempt on the protocol is rejected\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003estarttls\u003c/code\u003e now validates its TLS options before sending EHLO, so\ninvalid options raise \u003ccode\u003eValueError\u003c/code\u003e without touching the connection\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003ehelo\u003c/code\u003e no longer records a failed response as \u003ccode\u003elast_helo_response\u003c/code\u003e,\nso a rejected HELO does not leave the session looking as if a greeting succeeded\u003c/li\u003e\n\u003cli\u003eBugfix: \u003ccode\u003ebytearray\u003c/code\u003e and \u003ccode\u003ememoryview\u003c/code\u003e values are no longer silently passed\nthrough the auth encoding helpers; only \u003ccode\u003estr\u003c/code\u003e and \u003ccode\u003ebytes\u003c/code\u003e are accepted, as\nthe type annotations already stated\u003c/li\u003e\n\u003cli\u003eBugfix: TLS context setup now run in thread (thanks \u003ca href=\"https://github.com/tr4nt0r\"\u003e\u003ccode\u003e@​tr4nt0r\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/cole/aiosmtplib/commit/9cc425460026ee54392507f0593ecd4052cd6aa4\"\u003e\u003ccode\u003e9cc4254\u003c/code\u003e\u003c/a\u003e ci: only twine-check wheel and sdist in buildcheck\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/e4ee41a88d61a0b7916c4d0c3b02b8aff8f22cce\"\u003e\u003ccode\u003ee4ee41a\u003c/code\u003e\u003c/a\u003e release: v5.1.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/8ee1047e0772e9617e8842d009ecb25cc6ed8380\"\u003e\u003ccode\u003e8ee1047\u003c/code\u003e\u003c/a\u003e test: replace event_loop_policy override with pytest_asyncio_loop_factories hook\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/ddf47a7dd45503bbca059b58b764d8d4fb8b76c8\"\u003e\u003ccode\u003eddf47a7\u003c/code\u003e\u003c/a\u003e ci: test on free-threaded 3.14 and on 3.15 (standard and free-threaded)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/ced720d39fbc906b7bd2569b7053f884c73115d9\"\u003e\u003ccode\u003eced720d\u003c/code\u003e\u003c/a\u003e test: expect HeaderWriteError for non-ASCII address on Python 3.15+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/4d22898f1ef21f1ffe3684fd70b2ccdb50ed440b\"\u003e\u003ccode\u003e4d22898\u003c/code\u003e\u003c/a\u003e fix: mark response waiter exceptions as retrieved when set\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/7b8e3de72cd8fe8bec110ecc854b2ea0e6486d7d\"\u003e\u003ccode\u003e7b8e3de\u003c/code\u003e\u003c/a\u003e fix: report SIZE as transmitted octets, not raw message length\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/aa0d536058620d12d5c2884f3cb0fa4599d698b7\"\u003e\u003ccode\u003eaa0d536\u003c/code\u003e\u003c/a\u003e fix: drop data received after connection loss instead of raising\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/bdc17f564bd76ec62594437ac5969ffdfaf8509e\"\u003e\u003ccode\u003ebdc17f5\u003c/code\u003e\u003c/a\u003e fix: mark SMTPProtocol as over SSL after a successful start_tls\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cole/aiosmtplib/commit/1d84d5714412028e737f402d901e05ab4e70d1a0\"\u003e\u003ccode\u003e1d84d57\u003c/code\u003e\u003c/a\u003e fix: validate starttls options before sending EHLO\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/cole/aiosmtplib/compare/v5.1.2...v5.1.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.17.0 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 `amqp` from 5.3.1 to 5.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/py-amqp/releases\"\u003eamqp's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.4.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded DeepWiki to README by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/447\"\u003ecelery/py-amqp#447\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace deprecated datetime.datetime.utcfromtimestamp by \u003ca href=\"https://github.com/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/448\"\u003ecelery/py-amqp#448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate supported python versions in classifiers by \u003ca href=\"https://github.com/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/450\"\u003ecelery/py-amqp#450\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove Python 3.8 support by \u003ca href=\"https://github.com/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/449\"\u003ecelery/py-amqp#449\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/celery/py-amqp/pull/453\"\u003ecelery/py-amqp#453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI workflow to exclude Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/454\"\u003ecelery/py-amqp#454\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd null check for connection to prevent AttributeError on drain_events by \u003ca href=\"https://github.com/Cyanty\"\u003e\u003ccode\u003e@​Cyanty\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/457\"\u003ecelery/py-amqp#457\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix prevent channel revival during intentional close to fix shutdown crash by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/458\"\u003ecelery/py-amqp#458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Add Python 3.14 to the testing by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/461\"\u003ecelery/py-amqp#461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Drop the archived GitHub Action useblacksmith/setup-python by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/459\"\u003ecelery/py-amqp#459\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport limiting tls version by \u003ca href=\"https://github.com/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/463\"\u003ecelery/py-amqp#463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecode AMQP field-table type l as signed 64-bit by \u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/465\"\u003ecelery/py-amqp#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat basic_publish write timeouts as connection errors by \u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/464\"\u003ecelery/py-amqp#464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSerialize frame_writer() writes with a lock by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/466\"\u003ecelery/py-amqp#466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Python version requirements in setup.py by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/467\"\u003ecelery/py-amqp#467\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop unused python version check by \u003ca href=\"https://github.com/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/468\"\u003ecelery/py-amqp#468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDecode AMQP field-table type 's' as signed 16-bit by \u003ca href=\"https://github.com/cocofabio\"\u003e\u003ccode\u003e@​cocofabio\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/469\"\u003ecelery/py-amqp#469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease v5.4.0 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/471\"\u003ecelery/py-amqp#471\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/kajinamit\"\u003e\u003ccode\u003e@​kajinamit\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/448\"\u003ecelery/py-amqp#448\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Cyanty\"\u003e\u003ccode\u003e@​Cyanty\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/457\"\u003ecelery/py-amqp#457\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/458\"\u003ecelery/py-amqp#458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gyanu2507\"\u003e\u003ccode\u003e@​gyanu2507\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/465\"\u003ecelery/py-amqp#465\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/466\"\u003ecelery/py-amqp#466\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cocofabio\"\u003e\u003ccode\u003e@​cocofabio\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/celery/py-amqp/pull/469\"\u003ecelery/py-amqp#469\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/celery/py-amqp/compare/v5.3.1...v5.4.0\"\u003ehttps://github.com/celery/py-amqp/compare/v5.3.1...v5.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/celery/py-amqp/blob/main/Changelog\"\u003eamqp's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.4.0\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-09-19\n:release-by: Asif Saif Uddin (\u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace deprecated datetime.datetime.utcfromtimestamp (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/448\"\u003e#448\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove Python 3.8, 3.9 support\u003c/li\u003e\n\u003cli\u003eUpdate CI workflow to exclude Python 3.9 (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/454\"\u003e#454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd null check for connection to prevent AttributeError on drain_events (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/457\"\u003e#457\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix prevent channel revival during intentional close to fix shutdown crash (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/458\"\u003e#458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.14 support\u003c/li\u003e\n\u003cli\u003eSupport limiting tls version (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/463\"\u003e#463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecode AMQP field-table type l as signed 64-bit (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/465\"\u003e#465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTreat basic_publish write timeouts as connection errors (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/464\"\u003e#464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSerialize frame_writer() writes with a lock (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/466\"\u003e#466\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDecode AMQP field-table type 's' as signed 16-bit (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/469\"\u003e#469\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _version-5.3.1:\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/celery/py-amqp/commit/31b0b588e887fecdd5d0246fbcf78f63ca86e95e\"\u003e\u003ccode\u003e31b0b58\u003c/code\u003e\u003c/a\u003e Bump version: 5.3.1 → 5.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/de36b555a17f193e1a3f1b875c271bfc0af1915c\"\u003e\u003ccode\u003ede36b55\u003c/code\u003e\u003c/a\u003e added changelog for v5.4.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/f3d82f18fd2d6900760c1ce8d23d968fc3bc0e2e\"\u003e\u003ccode\u003ef3d82f1\u003c/code\u003e\u003c/a\u003e Decode AMQP field-table type 's' as signed 16-bit (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/469\"\u003e#469\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/c2012cc6be618b125ae9710fe90b6b73d8505019\"\u003e\u003ccode\u003ec2012cc\u003c/code\u003e\u003c/a\u003e Drop unused python version check (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/468\"\u003e#468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/9517a4d3fac2fe5ed07b93e9682553084efc5a22\"\u003e\u003ccode\u003e9517a4d\u003c/code\u003e\u003c/a\u003e Update Python version requirements in setup.py (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/467\"\u003e#467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/3082466b5ff0077f3a22d90b972a5892780e6128\"\u003e\u003ccode\u003e3082466\u003c/code\u003e\u003c/a\u003e Serialize frame_writer() writes with a lock (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/466\"\u003e#466\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/39b4127e280c823230fff7701874fbaaab536864\"\u003e\u003ccode\u003e39b4127\u003c/code\u003e\u003c/a\u003e Treat basic_publish write timeouts as connection errors (\u003ca href=\"https://redirect.github.com/celery/py-amqp/issues/464\"\u003e#464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/ebbee9cb7e38f6616bfa3c5d9e894b3a78a27942\"\u003e\u003ccode\u003eebbee9c\u003c/code\u003e\u003c/a\u003e Decode AMQP field-table type 'l' as signed 64-bit.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/4e16568ce642b9891bfaa5b178a75fd1fee5b98e\"\u003e\u003ccode\u003e4e16568\u003c/code\u003e\u003c/a\u003e Support limiting tls version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/py-amqp/commit/a03ad34f9b620773f50a4e19f26382bc23140e63\"\u003e\u003ccode\u003ea03ad34\u003c/code\u003e\u003c/a\u003e ci: Drop the archived GitHub Action useblacksmith/setup-python\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/py-amqp/compare/v5.3.1...v5.4.0\"\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.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 `asyncpg` from 0.30.0 to 0.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/MagicStack/asyncpg/releases\"\u003easyncpg's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.31.0\u003c/h2\u003e\n\u003cp\u003eEnable Python 3.14 with experimental subinterpreter/freethreading\nsupport.\u003c/p\u003e\n\u003ch1\u003eImprovements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd Python 3.14 support, experimental subinterpreter/freethreading support (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1279\"\u003e#1279\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 9e42642b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid performing type introspection on known types (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1243\"\u003e#1243\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5c9986c4)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMake \u003ccode\u003eprepare()\u003c/code\u003e not use named statements by default when cache is disabled (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1245\"\u003e#1245\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 5b14653e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImplement connection service file functionality (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1223\"\u003e#1223\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 1d63bb15)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eFixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix multi port connection string issue (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1222\"\u003e#1222\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/AndrewJackson2020\"\u003e\u003ccode\u003e@​AndrewJackson2020\u003c/code\u003e\u003c/a\u003e in 01c0db7b)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAvoid leaking connections if _can_use_connection fails (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1269\"\u003e#1269\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/yuliy-openai\"\u003e\u003ccode\u003e@​yuliy-openai\u003c/code\u003e\u003c/a\u003e in e94302d2)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eOther\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\n(by \u003ca href=\"https://github.com/elprans\"\u003e\u003ccode\u003e@​elprans\u003c/code\u003e\u003c/a\u003e in 6c2c4904)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/71775a67277fc0aa5bd2b9f15e848826d7078c4d\"\u003e\u003ccode\u003e71775a6\u003c/code\u003e\u003c/a\u003e asyncpg v0.31.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/508cae6441968ef7613a623fece7083cce66c2b3\"\u003e\u003ccode\u003e508cae6\u003c/code\u003e\u003c/a\u003e Test on PostgreSQL 18 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1290\"\u003e#1290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/e534e5f15c73525a6509143b3828335517360f1b\"\u003e\u003ccode\u003ee534e5f\u003c/code\u003e\u003c/a\u003e Bump cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/07fe5122a680f5768e39fc28d68c94b185037a52\"\u003e\u003ccode\u003e07fe512\u003c/code\u003e\u003c/a\u003e Bump pgproto\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/648b35f18199ebf2a30009376a6e9060cf7ad789\"\u003e\u003ccode\u003e648b35f\u003c/code\u003e\u003c/a\u003e Bump Cython to 3.2.1 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1288\"\u003e#1288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/9e42642b9110d206706697921b6e697a0972649d\"\u003e\u003ccode\u003e9e42642\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support, experimental subinterpreter/freethreading support (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6fe1c494ef5c3069fa9149c48bf9f8f2cd69f95e\"\u003e\u003ccode\u003e6fe1c49\u003c/code\u003e\u003c/a\u003e Move development deps away from extras and into dependency groups (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1280\"\u003e#1280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/7a548166c2b23561915c481bd332013e3a415cfb\"\u003e\u003ccode\u003e7a54816\u003c/code\u003e\u003c/a\u003e Fix a couple of missed Python version guards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/6c2c4904e61b2cd2f502540730a24e246cff2ebd\"\u003e\u003ccode\u003e6c2c490\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.8 (\u003ca href=\"https://redirect.github.com/MagicStack/asyncpg/issues/1281\"\u003e#1281\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MagicStack/asyncpg/commit/4c60ae890d1f3800f889679657357f91a6923568\"\u003e\u003ccode\u003e4c60ae8\u003c/code\u003e\u003c/a\u003e Bump version to 0.31.0.dev0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/MagicStack/asyncpg/compare/v0.30.0...v0.31.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `babel` from 2.17.0 to 2.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/releases\"\u003ebabel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! Like last year's release (ahem...), this one too is being made from FOSDEM 2026, in Brussels, Belgium. 🇧🇪\nWe'll aspire for a less glacial release cycle for 2.19. 😁\u003c/p\u003e\n\u003cp\u003ePlease see \u003ca href=\"https://github.com/python-babel/babel/blob/56c63caf50b18b152541b5dcafd51f645d867074/CHANGES.rst\"\u003eCHANGELOG.rst\u003c/a\u003e for the detailed change log.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\"\u003ehttps://github.com/python-babel/babel/compare/v2.17.0...v2.18.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-babel/babel/blob/master/CHANGES.rst\"\u003ebabel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.18.0\u003c/h2\u003e\n\u003cp\u003eHappy 2026! This release is, coincidentally, also being made from FOSDEM.\u003c/p\u003e\n\u003cp\u003eWe will aspire for a slightly less glacial release cadence in this year;\nthere are interesting features in the pipeline.\u003c/p\u003e\n\u003cp\u003eFeatures\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`\n* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`\n* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`\n* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`\n* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`\n* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`\n* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`\n* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`\n\u003cp\u003eBugfixes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCore: Fix formatting for \u0026quot;Empty locale identifier\u0026quot; exception added in \u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1164\"\u003e#1164\u003c/a\u003e by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1184\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Improve handling of no-inheritance-marker in timezone data by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1194\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCore: Make the number pattern regular expression more efficient by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1213\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eMessages: Keep translator comments next to the translation function call by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1196\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eNumbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by \u003ca href=\"https://github.com/bartbroere\"\u003e\u003ccode\u003e@​bartbroere\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1246\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther improvements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`\n* Messages: Have init-catalog create directories too by @akx in :gh:`1244`\n* Messages: Optimizations for read_po by @akx in :gh:`1200`\n* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`\n\u003cp\u003eInfrastructure and documentation\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eCI: Renovate CI \u0026amp; lint tools by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1228\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: Tighten up CI with Zizmor by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1230\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eCI: make job permissions explicit by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1227\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Add SECURITY.md by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1229\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Remove u string prefix from docs by \u003ca href=\"https://github.com/verhovsky\"\u003e\u003ccode\u003e@​verhovsky\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1174\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update dates.rst with current unicode.org tr35 link by \u003ca href=\"https://github.com/clach04\"\u003e\u003ccode\u003e@​clach04\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1189\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Add some PyPI classifiers by \u003ca href=\"https://github.com/tomasr8\"\u003e\u003ccode\u003e@​tomasr8\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1186\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Apply reformatting by hand and with Ruff by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1202\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eGeneral: Test on and declare support for Python 3.14 by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in :gh:\u003ccode\u003e1233\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/56c63caf50b18b152541b5dcafd51f645d867074\"\u003e\u003ccode\u003e56c63ca\u003c/code\u003e\u003c/a\u003e Prepare for 2.18.0 (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1248\"\u003e#1248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/73015a1217b90398fe76dcdc3b6e110ce26eb6d3\"\u003e\u003ccode\u003e73015a1\u003c/code\u003e\u003c/a\u003e Add user-agent to CLDR downloader (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1247\"\u003e#1247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/29bd3624463f9b8694d09a308f67f353373c76af\"\u003e\u003ccode\u003e29bd362\u003c/code\u003e\u003c/a\u003e Fix formatting compact currencies of exactly one thousand in several locales ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/851db43b2b175c6bdf69ae6977cd6ad642506046\"\u003e\u003ccode\u003e851db43\u003c/code\u003e\u003c/a\u003e Reuse InitCatalog's guts in UpdateCatalog (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1244\"\u003e#1244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/fd00e60adf7e0c74821a77ff2a8b564e9985fd8e\"\u003e\u003ccode\u003efd00e60\u003c/code\u003e\u003c/a\u003e Extract: Merge in per-format keywords and auto_comments (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1243\"\u003e#1243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/12a14b6b3f09b6f5c8c745791dd4928f1d58fda0\"\u003e\u003ccode\u003e12a14b6\u003c/code\u003e\u003c/a\u003e Add dpgettext and dnpgettext support (\u003ca href=\"https://redirect.github.com/python-babel/babel/issues/1235\"\u003e#1235\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-babel/babel/commit/7110e6206fd5ddc66db9613935fea8b8c668b7d5\"\u003e\u003ccode\u003e7110e62\u003c/code\u003e\u003c/a\u003e Use canonical IANA zone names in zone_territories (\u003ca href=\"https://redirect.github.com/python-babel/...\n\n_Description has been truncated_","html_url":"https://github.com/favouritekid/QLTS/pull/663","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/favouritekid%2FQLTS/issues/663","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/663/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-30T04:27:15.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5640898199","node_id":"PR_kwDOEcrRgc8AAAABF0sznQ","number":5511,"state":"open","title":"[Tech] Python - Bump the non-major-dependencies group across 1 directory with 11 updates","user":"dependabot[bot]","labels":["tech. enhancement","dependencies"],"assignees":["VincentAntoine"],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-30T04:27:15.000Z","updated_at":"2026-09-30T15:28:31.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"[Tech] Python - Bump","group_name":"non-major-dependencies","update_count":11,"packages":[{"name":"coverage","old_version":"7.16.0","new_version":"7.16.2","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"scrapy","old_version":"2.18.0","new_version":"2.19.0","repository_url":"https://github.com/scrapy/scrapy"},{"name":"css-inline","old_version":"0.21.2","new_version":"0.21.3","repository_url":"https://github.com/Stranger6667/css-inline"},{"name":"pypdf","old_version":"6.18.0","new_version":"6.19.0","repository_url":"https://github.com/py-pdf/pypdf"},{"name":"fastapi","old_version":"0.135.4","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"matplotlib","old_version":"3.11.1","new_version":"3.11.2","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"sphinx-intl","old_version":"2.3.2","new_version":"2.4.0","repository_url":"https://github.com/sphinx-doc/sphinx-intl"},{"name":"sphinx-autoapi","old_version":"3.8.0","new_version":"3.8.1","repository_url":"https://github.com/readthedocs/sphinx-autoapi"},{"name":"scikit-learn","old_version":"1.9.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"greenlet","old_version":"3.5.5","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"}],"path":null,"ecosystem":"pip"},"body":"Bumps the non-major-dependencies group with 11 updates in the /pipeline directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.16.0` | `7.16.2` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [scrapy](https://github.com/scrapy/scrapy) | `2.18.0` | `2.19.0` |\n| [css-inline](https://github.com/Stranger6667/css-inline) | `0.21.2` | `0.21.3` |\n| [pypdf](https://github.com/py-pdf/pypdf) | `6.18.0` | `6.19.0` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.4` | `0.141.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.11.1` | `3.11.2` |\n| [sphinx-intl](https://github.com/sphinx-doc/sphinx-intl) | `2.3.2` | `2.4.0` |\n| [sphinx-autoapi](https://github.com/readthedocs/sphinx-autoapi) | `3.8.0` | `3.8.1` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.9.0` | `1.9.1` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.5.5` | `3.5.6` |\n\n\nUpdates `coverage` from 7.16.0 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\u003c/blockquote\u003e\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\u003c/blockquote\u003e\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.16.0...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` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scrapy` from 2.18.0 to 2.19.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapy/scrapy/releases\"\u003escrapy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ccode\u003eRemoteControl\u003c/code\u003e extension which allows inspecting and controlling a running crawl over HTTP, used by the \u003ca href=\"https://docs.scrapy.org/en/latest/topics/agents.html#using-the-mcp-server\"\u003eScrapy MCP server\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExperimental \u003ccode\u003eaiohttp\u003c/code\u003e-based download handler (now the default when running without a reactor)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://docs.scrapy.org/en/latest/news.html#scrapy-2-19-0-2026-09-10\"\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/scrapy/scrapy/blob/master/docs/news.rst\"\u003escrapy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScrapy 2.19.0 (2026-09-10)\u003c/h2\u003e\n\u003cp\u003eHighlights:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew \u003ccode\u003eRemoteControl\u003c/code\u003e extension which allows inspecting and controlling a\nrunning crawl over HTTP, used by the :ref:\u003ccode\u003eScrapy MCP server \u0026lt;using-mcp-server\u0026gt;\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eExperimental \u003ccode\u003eaiohttp\u003c/code\u003e-based download handler (now the default when\nrunning without a reactor)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eModified requirements\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n-   Added support for Python 3.15.\n    (:gh:`7511`)\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eNew dependencies:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eaiohttp_ \u0026gt;= 3.13.3\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003echarset-normalizer_ \u0026gt;= 3.4.0\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eplatformdirs_ \u0026gt;= 2.0.0\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e(:gh:\u003ccode\u003e7866\u003c/code\u003e, :gh:\u003ccode\u003e8054\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBackward-incompatible changes\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWhen running :ref:\u003ccode\u003ewithout a Twisted reactor \u0026lt;asyncio-without-reactor\u0026gt;\u003c/code\u003e,\ni.e. with :setting:\u003ccode\u003eTWISTED_REACTOR_ENABLED\u003c/code\u003e set to \u003ccode\u003eFalse\u003c/code\u003e, the default\ndownload handler for \u003ccode\u003ehttp\u003c/code\u003e and \u003ccode\u003ehttps\u003c/code\u003e is now\n:class:\u003ccode\u003e~scrapy.core.downloader.handlers._aiohttp.AiohttpDownloadHandler\u003c/code\u003e\ninstead of\n:class:\u003ccode\u003e~scrapy.core.downloader.handlers._httpx.HttpxDownloadHandler\u003c/code\u003e. You\ncan configure\n:class:\u003ccode\u003e~scrapy.core.downloader.handlers._httpx.HttpxDownloadHandler\u003c/code\u003e in\nthe :setting:\u003ccode\u003eDOWNLOAD_HANDLERS\u003c/code\u003e setting if you want.\n(:gh:\u003ccode\u003e8118\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003escrapy.http.cookies.WrappedRequest.is_unverifiable()\u003c/code\u003e now always returns\n\u003ccode\u003eFalse\u003c/code\u003e, and the undocumented \u003ccode\u003eis_unverifiable\u003c/code\u003e request meta key that\nit used to read is ignored.\n(:gh:\u003ccode\u003e7933\u003c/code\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\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/scrapy/scrapy/commit/8026deeaac371a5d9a3edbe4886d58f61139d464\"\u003e\u003ccode\u003e8026dee\u003c/code\u003e\u003c/a\u003e Bump version: 2.18.0 → 2.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/b1f1cba07b8fbfef4b2818f361910fff5b23325e\"\u003e\u003ccode\u003eb1f1cba\u003c/code\u003e\u003c/a\u003e Release notes for 2.19.0 (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8124\"\u003e#8124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/a4109754c56b2ccf31d97cb21070e9fb63e3191e\"\u003e\u003ccode\u003ea410975\u003c/code\u003e\u003c/a\u003e Fix LocalCache evicting a different key when updating an existing key (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8113\"\u003e#8113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/41c3f3e1ffba7d62a222f217cb43827e0b91c323\"\u003e\u003ccode\u003e41c3f3e\u003c/code\u003e\u003c/a\u003e Add AiohttpDownloadHandler and switch reactorless to it (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8118\"\u003e#8118\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/20dcf82876820c598703e6c8034b4226ae2c0786\"\u003e\u003ccode\u003e20dcf82\u003c/code\u003e\u003c/a\u003e Implement some idioms from newer Python versions. (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8123\"\u003e#8123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/3fd2a407cc32fd9e124545b8ac47c4c479292af6\"\u003e\u003ccode\u003e3fd2a40\u003c/code\u003e\u003c/a\u003e Agents docs page. (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8120\"\u003e#8120\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/6995549c46467b203e2abd0ae4bfa2759c0d72be\"\u003e\u003ccode\u003e6995549\u003c/code\u003e\u003c/a\u003e Exclude news and contributing from llms-full.txt only (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8119\"\u003e#8119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/6057f02ddeb7c88790e4ea0b78b80df346872842\"\u003e\u003ccode\u003e6057f02\u003c/code\u003e\u003c/a\u003e Expose HTTP cache storage timestamp via the cache_timestamp meta key (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8034\"\u003e#8034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/1d5fa5a1f9dcde65123b1678b453528dc5520397\"\u003e\u003ccode\u003e1d5fa5a\u003c/code\u003e\u003c/a\u003e Include bind address in HTTP/1.1 and HTTP/2 pool keys (\u003ca href=\"https://redirect.github.com/scrapy/scrapy/issues/8081\"\u003e#8081\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapy/scrapy/commit/544f4d2d52377c7a5d6e12b51e219a310ec1b43d\"\u003e\u003ccode\u003e544f4d2\u003c/code\u003e\u003c/a\u003e Fix missing certificate and IP address on HTTP/1.1 responses without a body (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapy/scrapy/compare/2.18.0...2.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `css-inline` from 0.21.2 to 0.21.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Stranger6667/css-inline/releases\"\u003ecss-inline's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[Python] Release 0.21.3\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePyodide 3.14 wheels for the \u003ccode\u003epyemscripten_2026_0\u003c/code\u003e platform. \u003ca href=\"https://redirect.github.com/Stranger6667/css-inline/issues/786\"\u003e#786\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/Stranger6667/css-inline/blob/master/CHANGELOG.md\"\u003ecss-inline's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eChangelog\u003c/h1\u003e\n\u003ch2\u003e[Unreleased]\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/dcedc1bf33cbc6aa0d79b36e8bc94290e73b3cea\"\u003e\u003ccode\u003edcedc1b\u003c/code\u003e\u003c/a\u003e chore(ruby): Release 0.21.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/45f9c947be8625b2103da4bb78d6cf53fb007ce0\"\u003e\u003ccode\u003e45f9c94\u003c/code\u003e\u003c/a\u003e build: Adjust ruby release process\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/9515907be6d85cf8f2efaf064c39e52423e1f630\"\u003e\u003ccode\u003e9515907\u003c/code\u003e\u003c/a\u003e ci(ruby): Publish precompiled native gems\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/dbe9b13c638b891703b7e2d531a02c33c218ddf5\"\u003e\u003ccode\u003edbe9b13\u003c/code\u003e\u003c/a\u003e chore(ruby): Release 0.21.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/25f7f82e6a84bb75a80e2c6ea7a7fbe0dddae5f8\"\u003e\u003ccode\u003e25f7f82\u003c/code\u003e\u003c/a\u003e chore(php): Release 0.21.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/8b3c7b2fc8aac58691bac4352e362c803a09ab4f\"\u003e\u003ccode\u003e8b3c7b2\u003c/code\u003e\u003c/a\u003e chore(javascript): Release 0.21.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/37ae176405667d53ea4702ce47ca943fba51ad72\"\u003e\u003ccode\u003e37ae176\u003c/code\u003e\u003c/a\u003e chore(java): Release 0.21.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Stranger6667/css-inline/commit/9b4b8a6ba59ded1144b0eaf91c26a1bb70b778ad\"\u003e\u003ccode\u003e9b4b8a6\u003c/code\u003e\u003c/a\u003e chore(java): Update \u003ccode\u003ejni\u003c/code\u003e to \u003ccode\u003e0.22\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Stranger6667/css-inline/compare/c-v0.21.2...ruby-v0.21.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypdf` from 6.18.0 to 6.19.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.19.0, 2026-09-16\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit size of alphabetical page labels (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4096\"\u003e#4096\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\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplace PdfWriter method add_js (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3979\"\u003e#3979\u003c/a\u003e) by \u003ca href=\"https://github.com/j-t-1\"\u003e\u003ccode\u003e@​j-t-1\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\u003eMove static value out of loop body for appearance stream data (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4087\"\u003e#4087\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReduce number of full data lookups for attachment mapping API (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4081\"\u003e#4081\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\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not copy unrelated pages when appending pages with non-terminal fields (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4078\"\u003e#4078\u003c/a\u003e) by \u003ca href=\"https://github.com/anandghegde\"\u003e\u003ccode\u003e@​anandghegde\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse page reference for existing internal link targets (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4076\"\u003e#4076\u003c/a\u003e) by \u003ca href=\"https://github.com/r-kamei\"\u003e\u003ccode\u003e@​r-kamei\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eArabic-Indic digits are reversed during text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4077\"\u003e#4077\u003c/a\u003e) by \u003ca href=\"https://github.com/Syamjith-NK\"\u003e\u003ccode\u003e@​Syamjith-NK\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eParse a string rect for add_uri into a rectangle (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4074\"\u003e#4074\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\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.18.1...6.19.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.18.1, 2026-09-11\u003c/h2\u003e\n\u003ch2\u003eWhat's new\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFurther restrict FlateDecode recovery (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4073\"\u003e#4073\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit entry count for TrueType and Type1 font \u003ccode\u003e/Widths\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4072\"\u003e#4072\u003c/a\u003e) by \u003ca href=\"https://github.com/stefan6419846\"\u003e\u003ccode\u003e@​stefan6419846\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLimit allowed length of tokens in parse_bfchar (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4071\"\u003e#4071\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\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse current text matrix for visitor_text (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4062\"\u003e#4062\u003c/a\u003e) by \u003ca href=\"https://github.com/r-kamei\"\u003e\u003ccode\u003e@​r-kamei\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRepeat the letter for /S /A and /S /a page labels past Z (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4065\"\u003e#4065\u003c/a\u003e) by \u003ca href=\"https://github.com/youdie006\"\u003e\u003ccode\u003e@​youdie006\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse font color for FreeText default appearance (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4051\"\u003e#4051\u003c/a\u003e) by \u003ca href=\"https://github.com/Yuki9814\"\u003e\u003ccode\u003e@​Yuki9814\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\u003eFix compatibility with fonttools \u0026lt; 4.58.0 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4050\"\u003e#4050\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4059\"\u003e#4059\u003c/a\u003e) by \u003ca href=\"https://github.com/MeggyCal\"\u003e\u003ccode\u003e@​MeggyCal\u003c/code\u003e\u003c/a\u003e and \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\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse combined matrix in visitor examples (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4066\"\u003e#4066\u003c/a\u003e) by \u003ca href=\"https://github.com/r-kamei\"\u003e\u003ccode\u003e@​r-kamei\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.18.0...6.18.1\"\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.19.0, 2026-09-16\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit size of alphabetical page labels (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecations (DEP)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReplace PdfWriter method add_js (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3979\"\u003e#3979\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance Improvements (PI)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMove static value out of loop body for appearance stream data (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4087\"\u003e#4087\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce number of full data lookups for attachment mapping API (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4081\"\u003e#4081\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDo not copy unrelated pages when appending pages with non-terminal fields (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4078\"\u003e#4078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse page reference for existing internal link targets (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4076\"\u003e#4076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eArabic-Indic digits are reversed during text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4077\"\u003e#4077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eParse a string rect for add_uri into a rectangle (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4074\"\u003e#4074\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.18.1...6.19.0\"\u003eFull Changelog\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.18.1, 2026-09-11\u003c/h2\u003e\n\u003ch3\u003eSecurity (SEC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFurther restrict FlateDecode recovery (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4073\"\u003e#4073\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLimit entry count for TrueType and Type1 font \u003ccode\u003e/Widths\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4072\"\u003e#4072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLimit allowed length of tokens in parse_bfchar (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4071\"\u003e#4071\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes (BUG)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse current text matrix for visitor_text (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4062\"\u003e#4062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRepeat the letter for /S /A and /S /a page labels past Z (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4065\"\u003e#4065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse font color for FreeText default appearance (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4051\"\u003e#4051\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRobustness (ROB)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix compatibility with fonttools \u0026lt; 4.58.0 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4050\"\u003e#4050\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4059\"\u003e#4059\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation (DOC)\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse combined matrix in visitor examples (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4066\"\u003e#4066\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.18.0...6.18.1\"\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/d62cb58d3988b291b0435eddfd118c4f8f6b6a46\"\u003e\u003ccode\u003ed62cb58\u003c/code\u003e\u003c/a\u003e REL: 6.19.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/0d8b5a8832cde1ba308b5c27567b879b7b7eed4a\"\u003e\u003ccode\u003e0d8b5a8\u003c/code\u003e\u003c/a\u003e SEC: Limit size of alphabetical page labels (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4096\"\u003e#4096\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/959467a9b95be83e2dc5ae873ece5f371263ede7\"\u003e\u003ccode\u003e959467a\u003c/code\u003e\u003c/a\u003e PI: Move static value out of loop body for appearance stream data (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4087\"\u003e#4087\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/20822b263f063c96ad535405f5b8c4d81768950b\"\u003e\u003ccode\u003e20822b2\u003c/code\u003e\u003c/a\u003e DEV: Bump zizmorcore/zizmor-action from 0.6.3 to 0.6.4 (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4093\"\u003e#4093\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/25f230191b89cdcf2b4ba3d8051d52c7392831d0\"\u003e\u003ccode\u003e25f2301\u003c/code\u003e\u003c/a\u003e DEP: Replace PdfWriter method add_js (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/3979\"\u003e#3979\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/a92443848fda10cc2a65a7b6397fd8e1986c17d2\"\u003e\u003ccode\u003ea924438\u003c/code\u003e\u003c/a\u003e BUG: Do not copy unrelated pages when appending pages with non-terminal field...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/cf5cec2e49b9da8fae0d82a0f99f1bfe9eceb8ed\"\u003e\u003ccode\u003ecf5cec2\u003c/code\u003e\u003c/a\u003e BUG: Use page reference for existing internal link targets (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4076\"\u003e#4076\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/96d81f05ba4b3ec9ff1b3c3e52bc71a3cdd702c7\"\u003e\u003ccode\u003e96d81f0\u003c/code\u003e\u003c/a\u003e BUG: Arabic-Indic digits are reversed during text extraction (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4077\"\u003e#4077\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/2d219015b4cf92edcfd6d28c564295f0704fd204\"\u003e\u003ccode\u003e2d21901\u003c/code\u003e\u003c/a\u003e DEV: Fix Color class for latest mypy (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4082\"\u003e#4082\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/py-pdf/pypdf/commit/893a01002aa8e23b3a61ae4b38ab74edbc904ab9\"\u003e\u003ccode\u003e893a010\u003c/code\u003e\u003c/a\u003e MAINT: Split PdfDocCommon._flatten (\u003ca href=\"https://redirect.github.com/py-pdf/pypdf/issues/4070\"\u003e#4070\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/py-pdf/pypdf/compare/6.18.0...6.19.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.135.4 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.135.4...0.141.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.11.1 to 3.11.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.11.2\u003c/h2\u003e\n\u003cp\u003eThis is the second bugfix release of the 3.11.x series.\u003c/p\u003e\n\u003cp\u003eThis release contains several bug-fixes and adjustments:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up RGBA-stage image resampling\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ehexbin\u003c/code\u003e clipping in PDF output\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e\\text\u003c/code\u003e with internal braces\u003c/li\u003e\n\u003cli\u003eFix some crashes and make some checks more robust to unlikely cases\u003c/li\u003e\n\u003cli\u003eFix frame skew when saving GIF animations with \u003ccode\u003ePillowWriter\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix HiDPI handling in Qt toolbar and WebAgg embeddings\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eResizeEvent\u003c/code\u003e handling for \u003ccode\u003eTextBox\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix bug with PGF hatch linewidth and color\u003c/li\u003e\n\u003cli\u003eFix a bug with drawing an empty Collection\u003c/li\u003e\n\u003cli\u003eFix incorrect glyphs in Cairo backends\u003c/li\u003e\n\u003cli\u003eImprove build system to prevent conflicts between wheels and system libraries\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d3ca9172e392048ec242b90e8423e88d1a3000b2\"\u003e\u003ccode\u003ed3ca917\u003c/code\u003e\u003c/a\u003e REL: v3.11.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b76fea990aa10afdba9225ee0f058d942cfcb770\"\u003e\u003ccode\u003eb76fea9\u003c/code\u003e\u003c/a\u003e DOC: Set current version to 3.11.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/39c7f0678af763abe850b41a71cd2724e326157c\"\u003e\u003ccode\u003e39c7f06\u003c/code\u003e\u003c/a\u003e DOC: Prepare GitHub stats for 3.11.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/5dd13e39ceadb89af6e17c64cb0c71a2c3ddc94e\"\u003e\u003ccode\u003e5dd13e3\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.11.1-doc' into release-3.11.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/aa484be97e65ffa1c7e2770864dc44a219625180\"\u003e\u003ccode\u003eaa484be\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.11.0-doc' into v3.11.1-doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/0e10f83000d7993160feb264f84150b5a4cacfff\"\u003e\u003ccode\u003e0e10f83\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32330\"\u003e#32330\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32324-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/ebe947bd694df95e189fb93b63060051a6b55f3d\"\u003e\u003ccode\u003eebe947b\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32324\"\u003e#32324\u003c/a\u003e: Don't force any diagnostics to be errors in bundled Harfbuzz\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/8f4b7c53b228dceded120488f569ff936d91844c\"\u003e\u003ccode\u003e8f4b7c5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32322\"\u003e#32322\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32321-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/93278ade075ca4b6483afac10f9a2d1e775a5f36\"\u003e\u003ccode\u003e93278ad\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32321\"\u003e#32321\u003c/a\u003e: DOC: correct note about PyOS_InputHook\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b0aee786396e59de7ea5a1cec646cbc889250b57\"\u003e\u003ccode\u003eb0aee78\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/32319\"\u003e#32319\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-32305-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.11.1...v3.11.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-intl` from 2.3.2 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/sphinx-doc/sphinx-intl/releases\"\u003esphinx-intl's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.4.0\u003c/h2\u003e\n\u003ch2\u003eEnvironments\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python-3.9 support and add Python-3.15 by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/142\"\u003esphinx-doc/sphinx-intl#142\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake stat exit status indicate translation health by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/143\"\u003esphinx-doc/sphinx-intl#143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInternals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump the all-github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/129\"\u003esphinx-doc/sphinx-intl#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/setup-python from 5 to 6 in the all-github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/130\"\u003esphinx-doc/sphinx-intl#130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the all-github-actions group with 5 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/sphinx-doc/sphinx-intl/pull/131\"\u003esphinx-doc/sphinx-intl#131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the all-github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/132\"\u003esphinx-doc/sphinx-intl#132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the all-github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/134\"\u003esphinx-doc/sphinx-intl#134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edevcontainers-contrib has been moved to devcontainers-extra, verup container by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/135\"\u003esphinx-doc/sphinx-intl#135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump sigstore/gh-action-sigstore-python from 3.2.0 to 3.3.0 in the all-github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/136\"\u003esphinx-doc/sphinx-intl#136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump ghcr.io/devcontainers/features/docker-in-docker from 2.17.0 to 4.0.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/sphinx-doc/sphinx-intl/pull/138\"\u003esphinx-doc/sphinx-intl#138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the all-github-actions group across 1 directory with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/140\"\u003esphinx-doc/sphinx-intl#140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix for lint by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/141\"\u003esphinx-doc/sphinx-intl#141\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/compare/2.3.2...2.4.0\"\u003ehttps://github.com/sphinx-doc/sphinx-intl/compare/2.3.2...2.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/sphinx-doc/sphinx-intl/blob/master/CHANGES.rst\"\u003esphinx-intl's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.4.0 (2026/08/30)\u003c/h1\u003e\n\u003ch2\u003eEnvironments\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python-3.9 support and add Python-3.15 by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/142\"\u003esphinx-doc/sphinx-intl#142\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eIncompatibility\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMake \u003ccode\u003estat\u003c/code\u003e exit status indicate translation health by \u003ca href=\"https://github.com/shimizukawa\"\u003e\u003ccode\u003e@​shimizukawa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/pull/143\"\u003esphinx-doc/sphinx-intl#143\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003ch2\u003eInternals\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/fe7d98efb98fb4bb2d323bb6ab33daef700daf95\"\u003e\u003ccode\u003efe7d98e\u003c/code\u003e\u003c/a\u003e Update changes for 2.4.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/4832679fe1981b3e86d46f50efba3c0fd4563ae4\"\u003e\u003ccode\u003e4832679\u003c/code\u003e\u003c/a\u003e Update changes for stat exit status\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/508e62334a754d11fa53199d6d9481de19f1b377\"\u003e\u003ccode\u003e508e623\u003c/code\u003e\u003c/a\u003e Make stat exit status indicate translation health (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/51d92846d82b823032119981c5d9ae3f327c2ed5\"\u003e\u003ccode\u003e51d9284\u003c/code\u003e\u003c/a\u003e Update changes for 2.4.0 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/2338a4351f8a228a375ca1d32a1c351bb89ff72e\"\u003e\u003ccode\u003e2338a43\u003c/code\u003e\u003c/a\u003e chore: ignore local worktrees\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/a0efa6ed0ecc053ec78fb7982b8970832edf7922\"\u003e\u003ccode\u003ea0efa6e\u003c/code\u003e\u003c/a\u003e Drop Python-3.9 support and add Python-3.15 (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/142\"\u003e#142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/d2a6f1c813b53cb17d5c30eca67ab2454e917c4f\"\u003e\u003ccode\u003ed2a6f1c\u003c/code\u003e\u003c/a\u003e Bump the all-github-actions group across 1 directory with 3 updates (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/140\"\u003e#140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/c412f2881b50c399f395034c8a77b800b9df9c4a\"\u003e\u003ccode\u003ec412f28\u003c/code\u003e\u003c/a\u003e fix for lint (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/141\"\u003e#141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/468913f87195a3283440cf9c928b3fb89ccd646a\"\u003e\u003ccode\u003e468913f\u003c/code\u003e\u003c/a\u003e Bump ghcr.io/devcontainers/features/docker-in-docker (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/138\"\u003e#138\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/commit/e6b10483c89e25de9cd97badabfd127f5116e157\"\u003e\u003ccode\u003ee6b1048\u003c/code\u003e\u003c/a\u003e Bump sigstore/gh-action-sigstore-python in the all-github-actions group (\u003ca href=\"https://redirect.github.com/sphinx-doc/sphinx-intl/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/sphinx-doc/sphinx-intl/compare/2.3.2...2.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sphinx-autoapi` from 3.8.0 to 3.8.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/releases\"\u003esphinx-autoapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.1\u003c/h2\u003e\n\u003ch1\u003eBugfixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve ellipsis literals when rendering type annotations. (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eImproved Documentation\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eDocument the autoapisummary directive. (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eMisc\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/564\"\u003e#564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to tox.toml and reorganise repo structure\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/readthedocs/sphinx-autoapi/blob/main/CHANGELOG.rst\"\u003esphinx-autoapi's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.8.1 (2026-08-23)\u003c/h2\u003e\n\u003cp\u003eBugfixes\n^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve ellipsis literals when rendering type annotations. (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/562\"\u003e#562\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImproved Documentation\n^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDocument the \u003ccode\u003eautoapisummary\u003c/code\u003e directive. (\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eMisc\n^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/readthedocs/sphinx-autoapi/issues/564\"\u003e#564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to tox.toml and reorganise repo structure\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/7018ce6ddb6cdc4e76d5e4605c966f11fdaf4da7\"\u003e\u003ccode\u003e7018ce6\u003c/code\u003e\u003c/a\u003e Version 3.8.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/9079d5bfda118613fee653390863c3ae46aa5e3e\"\u003e\u003ccode\u003e9079d5b\u003c/code\u003e\u003c/a\u003e Fix ellipsis rendering in type annotations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/f37bd4b519b5172ce4725061401ed1603013b3da\"\u003e\u003ccode\u003ef37bd4b\u003c/code\u003e\u003c/a\u003e Fix towncrier check failing in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/6df6d6183cea6e461e260e4f04786d6e4efe8634\"\u003e\u003ccode\u003e6df6d61\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/b76b462ecbde913a9c375e7e03cbc00c8efe43aa\"\u003e\u003ccode\u003eb76b462\u003c/code\u003e\u003c/a\u003e Fix linting errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/2b7d443790b36be7605a95dde3d79d808ca36ab8\"\u003e\u003ccode\u003e2b7d443\u003c/code\u003e\u003c/a\u003e Fix use of class-scoped fixture as instance method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/2b8bb52c68ffc5add480fdc0fa4f84d50ed14c2d\"\u003e\u003ccode\u003e2b8bb52\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/20880281089c771487d992ddfb6e3e658d20da96\"\u003e\u003ccode\u003e2088028\u003c/code\u003e\u003c/a\u003e Switch to tox.toml and reorganise repo structure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/eca0b11c6996021a0f9d12d3d79c0b09e881ba8b\"\u003e\u003ccode\u003eeca0b11\u003c/code\u003e\u003c/a\u003e Document autoapisummary directive\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/commit/74ed53e685ce07dbf54fe60d0bc31c6ba49b7d57\"\u003e\u003ccode\u003e74ed53e\u003c/code\u003e\u003c/a\u003e Bump sigstore/gh-action-sigstore-python in the github-actions group\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/readthedocs/sphinx-autoapi/compare/v3.8.0...v3.8.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `scikit-learn` from 1.9.0 to 1.9.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scikit-learn/scikit-learn/releases\"\u003escikit-learn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eScikit-learn 1.9.1\u003c/h2\u003e\n\u003cp\u003eWe're happy to announce the 1.9.1 release.\u003c/p\u003e\n\u003cp\u003eThis release contains a few bug fixes and is the first version supporting Python 3.15.\u003c/p\u003e\n\u003cp\u003eYou can see the changelog here: \u003ca href=\"https://scikit-learn.org/stable/whats_new/v1.9.html#version-1-9-1\"\u003ehttps://scikit-learn.org/stable/whats_new/v1.9.html#version-1-9-1\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eYou can upgrade with pip as usual:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install -U scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThe conda-forge builds can be installed using:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install -c conda-forge scikit-learn\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eThanks to everyone who contributed to this release !\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/866c0f51e7560ef0303cbcc5f159df5382ea9e3f\"\u003e\u003ccode\u003e866c0f5\u003c/code\u003e\u003c/a\u003e generate changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/12f135fbffe3b3e7e294e4ef16f0b59f68e6a6b9\"\u003e\u003ccode\u003e12f135f\u003c/code\u003e\u003c/a\u003e update upper bounds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/43ff2f20bc5bfbe92b9cd3ec9d86214da8ee2c6e\"\u003e\u003ccode\u003e43ff2f2\u003c/code\u003e\u003c/a\u003e bump version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/b8515241202663142b65dbe92294e96a6dc5def2\"\u003e\u003ccode\u003eb851524\u003c/code\u003e\u003c/a\u003e DOC Mark dev index as orphan (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34916\"\u003e#34916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/01d56d48da18e7b365c4d2ebcd5d1fddaa24dd12\"\u003e\u003ccode\u003e01d56d4\u003c/code\u003e\u003c/a\u003e DOC Fix wikipedia principal eigenvector example references (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34915\"\u003e#34915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/b86a1e227c2c424b17f8872d4094bbbc061e32c9\"\u003e\u003ccode\u003eb86a1e2\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for array-api CI build(s) :lock: :robot: ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/d282698440cec541f2427794b8c205fb4b1420be\"\u003e\u003ccode\u003ed282698\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for main CI build(s) :lock: :robot: (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34897\"\u003e#34897\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/eb34279083fe9297d141efddceaf38c596a49766\"\u003e\u003ccode\u003eeb34279\u003c/code\u003e\u003c/a\u003e :lock: :robot: CI Update lock files for free-threaded CI build(s) :lock: :rob...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/7581303c447a0daa07fa74ba8104e327c11f1dc5\"\u003e\u003ccode\u003e7581303\u003c/code\u003e\u003c/a\u003e FIX: Fix \u003ccode\u003eQuantileTransformer(ignore_implicit_zeros=True)\u003c/code\u003e sub-sampling behav...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scikit-learn/scikit-learn/commit/ac47f4de75eacad880b77db09aa1f677f6038274\"\u003e\u003ccode\u003eac47f4d\u003c/code\u003e\u003c/a\u003e FIX: avoid EfficiencyWarning in OPTICS with metric='precomputed' (\u003ca href=\"https://redirect.github.com/scikit-learn/scikit-learn/issues/34692\"\u003e#34692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scikit-learn/scikit-learn/compare/1.9.0...1.9.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `greenlet` from 3.5.5 to 3.5.6\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst\"\u003egreenlet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e3.5.6 (2026-09-14)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect a race condition that could lead to garbage collection\nunintentionally being disabled. See \u003ccode\u003ePR 529 \u0026lt;https://github.com/python-greenlet/greenlet/pull/529\u0026gt;\u003c/code\u003e_ by Yurii.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-greenlet/greenlet/commit/abfe740315a9926ff180c622cf02f122c07f9126\"\u003e\u003ccode\u003eabfe740\u003c/code\u003e\u003c/a\u003e Preparing release 3.5.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/e23e3e47df21bbc7a83219621ce4966d349f7d2b\"\u003e\u003ccode\u003ee23e3e4\u003c/code\u003e\u003c/a\u003e Change note for \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/529\"\u003e#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/8de830f6df6fefd533fedbe4bb0a2028bcf77372\"\u003e\u003ccode\u003e8de830f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/529\"\u003e#529\u003c/a\u003e from Georggi/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/72d7cacf4cf667f92786db306be095b6041bca5a\"\u003e\u003ccode\u003e72d7cac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/python-greenlet/greenlet/issues/530\"\u003e#530\u003c/a\u003e from python-greenlet/dependabot/github_actions/github...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/ac01b7d1a6b3a4d2477c17a1047af6d0056d69a7\"\u003e\u003ccode\u003eac01b7d\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action in the github-actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/e18f5a6d2696c031d34cf4933dcdd6a8e37f6f85\"\u003e\u003ccode\u003ee18f5a6\u003c/code\u003e\u003c/a\u003e Simplify GCDisabledGuard constructor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-greenlet/greenlet/commit/6aaf3af698aa7789075a904e5bbb70e24df06553\"\u003e\u003ccode\u003e6aaf3af\u003c/code\u003e\u003c/a\u003e Back to development: 3.5.6\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python-greenlet/greenlet/compare/3.5.5...3.5.6\"\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/MTES-MCT/monitorfish/pull/5511","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/MTES-MCT%2Fmonitorfish/issues/5511","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5511/packages"}},{"old_version":"7.4.0","new_version":"7.4.1","update_type":"patch","path":null,"pr_created_at":"2026-09-28T21:23:29.000Z","version_change":"7.4.0 → 7.4.1","issue":{"uuid":"5621433775","node_id":"PR_kwDOKs_3k88AAAABFlKh8A","number":560,"state":"open","title":"chore(deps-dev): update flake8 requirement from 7.4.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-28T21:23:29.000Z","updated_at":"2026-09-28T21:31:56.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): update","packages":[{"name":"flake8","old_version":"7.4.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [flake8](https://github.com/pycqa/flake8) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.4.0...7.4.1\"\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/vil02/adv_2023/pull/560","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/vil02%2Fadv_2023/issues/560","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/560/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-28T19:06:25.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5619782546","node_id":"PR_kwDOM3C7CM8AAAABFj1Xpg","number":722,"state":"open","title":"chore(deps): bump flake8 from 7.3.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["abhimehro"],"locked":false,"comments_count":10,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-28T19:06:25.000Z","updated_at":"2026-10-03T13:08:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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/abhimehro/Hydrograph_Versus_Seatek_Sensors_Project/pull/722","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/abhimehro%2FHydrograph_Versus_Seatek_Sensors_Project/issues/722","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/722/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-28T14:52:34.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5616561625","node_id":"PR_kwDOEXayic8AAAABFhPbYA","number":448,"state":"closed","title":"build(deps-dev): bump flake8 from 7.3.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies"],"assignees":["kawaja"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-10-03T09:14:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-28T14:52:34.000Z","updated_at":"2026-10-03T09:14:11.000Z","time_to_close":411695,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev)","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.3.0\u0026new-version=7.4.1)](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/kawaja/oaat-operator/pull/448","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kawaja%2Foaat-operator/issues/448","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/448/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-28T10:09:11.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5612859410","node_id":"PR_kwDOR3dt1s8AAAABFePghg","number":408,"state":"closed","title":"deps(pip)(deps): bump the python-minor-and-patch group across 2 directories with 3 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-01T03:15:18.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-28T10:09:11.000Z","updated_at":"2026-10-01T03:15:20.000Z","time_to_close":234367,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(pip)(deps): bump","group_name":"python-minor-and-patch","update_count":3,"packages":[{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.54","new_version":"2.1.0","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"uvicorn","old_version":"0.53.0","new_version":"0.54.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.54","new_version":"2.1.0","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-and-patch group with 3 updates in the /src/StackAlchemist.Templates/V1-Python-React/backend directory: [uvicorn](https://github.com/Kludex/uvicorn), [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) and [flake8](https://github.com/pycqa/flake8).\nBumps the python-minor-and-patch group with 3 updates in the /src/StackAlchemist.Templates/V2-Python-React/backend directory: [uvicorn](https://github.com/Kludex/uvicorn), [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) and [flake8](https://github.com/pycqa/flake8).\n\nUpdates `uvicorn` from 0.53.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\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.53.0...0.54.0\"\u003e0.53.0...0.54.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/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.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\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/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.54 to 2.1.0\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.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\nalias of the mapped table instead, if that selectable were anything other\nthan a table or a plain subquery, leading to incorrect results and/or\nnon-working queries.\u003c/p\u003e\n\u003cp\u003eThis includes \u003ccode\u003e_orm.aliased()\u003c/code\u003e against a \u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e\nconstruct, which would previously produce an alias of the base mapped\nclass only, discarding the polymorphic selectable and additional mappers.\nThe new construct now retains these, so that criteria against subclass\nattributes and the \u003ccode\u003einnerjoin\u003c/code\u003e and \u003ccode\u003eselectable\u003c/code\u003e parameters of\n\u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e take effect, and subclass columns are loaded\nup front.  The SQL rendered for these constructs now includes the\npolymorphic selectable.\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/13583\"\u003e#13583\u003c/a\u003e, \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13584\"\u003e#13584\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\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 `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.53.0 to 0.54.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.54.0\u003c/h2\u003e\n\u003ch2\u003e📨 Send metadata after the response body\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003euvicorn\u003c/code\u003e 0.54.0 adds response trailers and \u003ccode\u003e103 Early Hints\u003c/code\u003e to its experimental HTTP/2 implementation through \u003ccode\u003ezttp\u003c/code\u003e.\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003euv add uvicorn==0.54.0 \u0026quot;zttp\u0026gt;=0.0.34\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend HTTP/2 response trailers\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e). The ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension lets applications send metadata, such as checksums, after the response body. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them. Multiple trailer messages are combined before completing the response.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 remains experimental and opt-in.\u003c/strong\u003e Enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e. Upgrade-based h2c and WebSockets over HTTP/2 remain unsupported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e💡 Hint at resources before the final response\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSend \u003ccode\u003e103 Early Hints\u003c/code\u003e over HTTP/2\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\u003c/a\u003e). Applications can use the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension to send resource hints before the final response. Each supplied link becomes a separate \u003ccode\u003eLink\u003c/code\u003e header.\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.53.0...0.54.0\"\u003e0.53.0...0.54.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/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.54.0 (September 24, 2026)\u003c/h2\u003e\n\u003cp\u003eHTTP/2 support remains experimental. Install \u003ccode\u003ezttp\u0026gt;=0.0.34\u003c/code\u003e and enable it with \u003ccode\u003e--http zttp --http2\u003c/code\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd HTTP/2 response trailers through the ASGI \u003ccode\u003ehttp.response.trailers\u003c/code\u003e extension. Clients must send \u003ccode\u003eTE: trailers\u003c/code\u003e to receive them (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd HTTP/2 \u003ccode\u003e103 Early Hints\u003c/code\u003e through the ASGI \u003ccode\u003ehttp.response.early_hint\u003c/code\u003e extension (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3137\"\u003e#3137\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/uvicorn/commit/3eb9a9ab9af69005c687728097461c1fd2a95db9\"\u003e\u003ccode\u003e3eb9a9a\u003c/code\u003e\u003c/a\u003e Version 0.54.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3161\"\u003e#3161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd7ef6d31c1a09a3653f326cda7813d35ffd6082\"\u003e\u003ccode\u003ecd7ef6d\u003c/code\u003e\u003c/a\u003e Remove races from supervisor tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3134\"\u003e#3134\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/a56c7cce64aaa37e5864f882a5cbce8aa1dac47a\"\u003e\u003ccode\u003ea56c7cc\u003c/code\u003e\u003c/a\u003e Support HTTP/2 response trailers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3146\"\u003e#3146\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9bd4404cca9506e9ba4f46b69ef72d011ceef2bd\"\u003e\u003ccode\u003e9bd4404\u003c/code\u003e\u003c/a\u003e chore(deps): bump anyio from 4.13.0 to 4.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3145\"\u003e#3145\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/21f39ef7988366f77fb3172569bd235ac5de34cc\"\u003e\u003ccode\u003e21f39ef\u003c/code\u003e\u003c/a\u003e Add HTTP/2 Early Hints support (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3137\"\u003e#3137\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.53.0...0.54.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.54 to 2.1.0\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.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\nalias of the mapped table instead, if that selectable were anything other\nthan a table or a plain subquery, leading to incorrect results and/or\nnon-working queries.\u003c/p\u003e\n\u003cp\u003eThis includes \u003ccode\u003e_orm.aliased()\u003c/code\u003e against a \u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e\nconstruct, which would previously produce an alias of the base mapped\nclass only, discarding the polymorphic selectable and additional mappers.\nThe new construct now retains these, so that criteria against subclass\nattributes and the \u003ccode\u003einnerjoin\u003c/code\u003e and \u003ccode\u003eselectable\u003c/code\u003e parameters of\n\u003ccode\u003e_orm.with_polymorphic()\u003c/code\u003e take effect, and subclass columns are loaded\nup front.  The SQL rendered for these constructs now includes the\npolymorphic selectable.\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/13583\"\u003e#13583\u003c/a\u003e, \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13584\"\u003e#13584\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\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 `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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/stevenfackley/StackAlchemist/pull/408","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/stevenfackley%2FStackAlchemist/issues/408","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/408/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-28T00:02:58.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5607440776","node_id":"PR_kwDOE7LElc8AAAABFZ7wbw","number":57,"state":"open","title":"Bump flake8 from 7.3.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-28T00:02:58.000Z","updated_at":"2026-09-28T00:03:13.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.3.0\u0026new-version=7.4.1)](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/chris48s/flipboard/pull/57","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/chris48s%2Fflipboard/issues/57","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/57/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-27T17:34:06.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5604803808","node_id":"PR_kwDOSBdbBs8AAAABFX53UQ","number":565,"state":"open","title":"chore(deps-dev): Bump flake8 from 7.3.0 to 7.4.1","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-27T17:34:06.000Z","updated_at":"2026-09-27T17:34:26.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): Bump","packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Bumps [flake8](https://github.com/pycqa/flake8) from 7.3.0 to 7.4.1.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\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=flake8\u0026package-manager=pip\u0026previous-version=7.3.0\u0026new-version=7.4.1)](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/spidermila/MedCover/pull/565","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/spidermila%2FMedCover/issues/565","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/565/packages"}},{"old_version":"\u003e=7.0.0","new_version":"\u003e=7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-27T13:05:02.000Z","version_change":"\u003e=7.0.0 → \u003e=7.4.1","issue":{"uuid":"5602859622","node_id":"PR_kwDOUgdeXs8AAAABFWaUZw","number":19,"state":"open","title":"deps(pip)(deps-dev): update flake8 requirement from \u003e=7.0.0 to \u003e=7.4.1","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-27T13:05:02.000Z","updated_at":"2026-09-27T13:05:03.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(pip)(deps-dev): update","packages":[{"name":"flake8","old_version":"\u003e=7.0.0","new_version":"\u003e=7.4.1","repository_url":"https://github.com/pycqa/flake8"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [flake8](https://github.com/pycqa/flake8) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.0.0...7.4.1\"\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/cosgroma/prompt-manager/pull/19","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/cosgroma%2Fprompt-manager/issues/19","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/19/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-27T00:26:51.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5598541548","node_id":"PR_kwDOTExL2M8AAAABFTOeiw","number":81,"state":"closed","title":"chore(deps): bump the python-dependencies group across 1 directory with 123 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-10-04T00:18:16.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-27T00:26:51.000Z","updated_at":"2026-10-04T00:18:18.000Z","time_to_close":604285,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python-dependencies","update_count":123,"packages":[{"name":"altair","old_version":"6.0.0","new_version":"6.3.0","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":"anthropic","old_version":"0.112.0","new_version":"1.8.0","repository_url":"https://github.com/anthropics/anthropic-sdk-python"},{"name":"anyio","old_version":"4.13.0","new_version":"4.15.1","repository_url":"https://github.com/agronholm/anyio"},{"name":"argon2-cffi-bindings","old_version":"25.1.0","new_version":"26.1.0","repository_url":"https://github.com/hynek/argon2-cffi-bindings"},{"name":"asgiref","old_version":"3.11.1","new_version":"3.12.1","repository_url":"https://github.com/django/asgiref"},{"name":"ast-serialize","old_version":"0.5.0","new_version":"0.11.2","repository_url":"https://github.com/mypyc/ast_serialize"},{"name":"astroid","old_version":"4.0.4","new_version":"4.3.1","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"asttokens","old_version":"3.0.1","new_version":"3.0.2","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.4.0","new_version":"26.1.0","repository_url":"https://github.com/python-attrs/attrs"},{"name":"beautifulsoup4","old_version":"4.14.3","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":"cachetools","old_version":"6.2.6","new_version":"7.2.0","repository_url":"https://github.com/tkem/cachetools"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.7.22","repository_url":"https://github.com/certifi/python-certifi"},{"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":"configargparse","old_version":"1.7.5","new_version":"1.7.7","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"contourpy","old_version":"1.3.3","new_version":"1.4.0","repository_url":"https://github.com/contourpy/contourpy"},{"name":"coverage","old_version":"7.14.1","new_version":"7.16.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"debugpy","old_version":"1.8.20","new_version":"1.8.22","repository_url":"https://github.com/microsoft/debugpy"},{"name":"fastapi","old_version":"0.135.3","new_version":"0.141.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastjsonschema","old_version":"2.21.2","new_version":"2.22.2","repository_url":"https://github.com/horejsek/python-fastjsonschema"},{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"fonttools","old_version":"4.61.1","new_version":"4.66.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"fpdf2","old_version":"2.8.7","new_version":"2.8.8","repository_url":"https://github.com/py-pdf/fpdf2"},{"name":"gevent","old_version":"25.9.1","new_version":"26.9.0","repository_url":"https://github.com/gevent/gevent"},{"name":"gitpython","old_version":"3.1.50","new_version":"3.1.62","repository_url":"https://github.com/gitpython-developers/GitPython"},{"name":"googleapis-common-protos","old_version":"1.75.0","new_version":"1.75.3","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.5.2","new_version":"3.5.6","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"groq","old_version":"0.37.1","new_version":"1.7.0","repository_url":"https://github.com/groq/groq-python"},{"name":"grpcio","old_version":"1.81.1","new_version":"1.84.0","repository_url":"https://github.com/grpc/grpc"},{"name":"idna","old_version":"3.15","new_version":"3.20","repository_url":"https://github.com/kjd/idna"},{"name":"imbalanced-learn","old_version":"0.14.1","new_version":"0.14.2","repository_url":"https://github.com/scikit-learn-contrib/imbalanced-learn"},{"name":"ipykernel","old_version":"7.2.0","new_version":"7.3.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"ipython","old_version":"9.13.0","new_version":"9.17.1","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.8","new_version":"8.1.9","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"isort","old_version":"8.0.1","new_version":"9.0.1","repository_url":"https://github.com/PyCQA/isort"},{"name":"jiter","old_version":"0.15.0","new_version":"0.17.0","repository_url":"https://github.com/pydantic/jiter"},{"name":"joblib","old_version":"1.5.3","new_version":"1.6.0","repository_url":"https://github.com/joblib/joblib"},{"name":"json5","old_version":"0.14.0","new_version":"0.15.0","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"jupyter-client","old_version":"8.8.0","new_version":"8.10.0","repository_url":"https://github.com/jupyter/jupyter_client"},{"name":"jupyter-server","old_version":"2.20.0","new_version":"2.21.1","repository_url":"https://github.com/jupyter-server/jupyter_server"},{"name":"jupyterlab","old_version":"4.5.9","new_version":"4.6.4","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"jupyterlab-server","old_version":"2.28.0","new_version":"2.28.1","repository_url":"https://github.com/jupyterlab/jupyterlab_server"},{"name":"jupyterlab-widgets","old_version":"3.0.16","new_version":"3.0.17","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"kiwisolver","old_version":"1.4.9","new_version":"1.5.1","repository_url":"https://github.com/nucleic/kiwi"},{"name":"langchain-protocol","old_version":"0.0.15","new_version":"0.0.19","repository_url":"https://github.com/langchain-ai/agent-protocol"},{"name":"langsmith","old_version":"0.8.18","new_version":"0.14.0","repository_url":"https://github.com/langchain-ai/langsmith-sdk"},{"name":"levenshtein","old_version":"0.27.3","new_version":"0.27.5","repository_url":"https://github.com/rapidfuzz/Levenshtein"},{"name":"librt","old_version":"0.11.0","new_version":"0.15.0","repository_url":"https://github.com/mypyc/librt"},{"name":"locust","old_version":"2.44.4","new_version":"2.46.6","repository_url":"https://github.com/locustio/locust"},{"name":"lxml","old_version":"6.1.1","new_version":"6.1.3","repository_url":"https://github.com/lxml/lxml"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.11.2","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"mistune","old_version":"3.3.0","new_version":"3.3.4","repository_url":"https://github.com/lepture/mistune"},{"name":"msgpack","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"narwhals","old_version":"2.16.0","new_version":"2.26.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"nbclient","old_version":"0.10.4","new_version":"0.11.0","repository_url":"https://github.com/jupyter/nbclient"},{"name":"nbformat","old_version":"5.10.4","new_version":"5.11.1","repository_url":"https://github.com/jupyter/nbformat"},{"name":"openai","old_version":"2.44.0","new_version":"3.19.2","repository_url":"https://github.com/openai/openai-python"},{"name":"orjson","old_version":"3.11.9","new_version":"3.12.0","repository_url":"https://github.com/ijl/orjson"},{"name":"packaging","old_version":"26.0","new_version":"26.3","repository_url":"https://github.com/pypa/packaging"},{"name":"pandas","old_version":"2.3.3","new_version":"3.0.6","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"platformdirs","old_version":"4.10.0","new_version":"4.11.12","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.25.0","new_version":"0.26.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"prompt-toolkit","old_version":"3.0.52","new_version":"3.0.53","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"pure-eval","old_version":"0.2.3","new_version":"0.2.4","repository_url":"https://github.com/alexmojaki/pure_eval"},{"name":"pyarrow","old_version":"23.0.1","new_version":"25.0.1","repository_url":"https://github.com/apache/arrow"},{"name":"pycodestyle","old_version":"2.14.0","new_version":"2.15.0","repository_url":"https://github.com/PyCQA/pycodestyle"},{"name":"pydantic-settings","old_version":"2.14.2","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":"pyflakes","old_version":"3.4.0","new_version":"4.0.0","repository_url":"https://github.com/PyCQA/pyflakes"},{"name":"pygments","old_version":"2.20.0","new_version":"2.21.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.13.0","new_version":"2.15.0","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pylint","old_version":"4.0.6","new_version":"4.0.9","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pyparsing","old_version":"3.3.2","new_version":"3.3.3","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pytest-cov","old_version":"5.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"python-dotenv","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-engineio","old_version":"4.13.3","new_version":"4.14.0","repository_url":"https://github.com/miguelgrinberg/python-engineio"},{"name":"python-json-logger","old_version":"4.1.0","new_version":"4.2.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"python-levenshtein","old_version":"0.27.3","new_version":"0.27.5","repository_url":"https://github.com/rapidfuzz/python-Levenshtein"},{"name":"python-socketio","old_version":"5.16.3","new_version":"5.17.0","repository_url":"https://github.com/sponsors/miguelgrinberg"},{"name":"pytz","old_version":"2025.2","new_version":"2026.3.post1","repository_url":"https://github.com/stub42/pytz"},{"name":"pyzmq","old_version":"27.1.0","new_version":"27.2.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"rapidfuzz","old_version":"3.14.5","new_version":"3.14.6","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"redis","old_version":"4.6.0","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"requests","old_version":"2.33.0","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"rpds-py","old_version":"0.30.0","new_version":"2026.6.3","repository_url":"https://github.com/crate-py/rpds"},{"name":"scikit-learn","old_version":"1.8.0","new_version":"1.9.1","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"setuptools","old_version":"83.0.0","new_version":"84.0.0","repository_url":"https://github.com/pypa/setuptools"},{"name":"sklearn-compat","old_version":"0.1.5","new_version":"0.1.6","repository_url":"https://github.com/sklearn-compat/sklearn-compat"},{"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.8.4","new_version":"2.9.2","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"sqlalchemy","old_version":"2.0.51","new_version":"2.0.54","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"starlette","old_version":"1.3.1","new_version":"1.7.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"streamlit","old_version":"1.54.0","new_version":"1.64.0","repository_url":"https://github.com/streamlit/streamlit"},{"name":"threadpoolctl","old_version":"3.6.0","new_version":"3.7.0","repository_url":"https://github.com/joblib/threadpoolctl"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tomlkit","old_version":"0.15.0","new_version":"0.15.1","repository_url":"https://github.com/python-poetry/tomlkit"},{"name":"tornado","old_version":"6.5.7","new_version":"6.5.10","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"tqdm","old_version":"4.68.3","new_version":"4.70.1","repository_url":"https://github.com/tqdm/tqdm"},{"name":"traitlets","old_version":"5.15.0","new_version":"5.16.1","repository_url":"https://github.com/ipython/traitlets"},{"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":"tzdata","old_version":"2025.3","new_version":"2026.4","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.7.0","new_version":"2.8.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"uuid-utils","old_version":"0.16.0","new_version":"1.0.0","repository_url":"https://github.com/aminalaee/uuid-utils"},{"name":"uvicorn","old_version":"0.44.0","new_version":"0.53.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"watchfiles","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/samuelcolvin/watchfiles"},{"name":"wcwidth","old_version":"0.7.0","new_version":"0.9.1","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webencodings","old_version":"0.5.1","new_version":"0.6.1","repository_url":"https://github.com/CourtBouillon/webencodings"},{"name":"websocket-client","old_version":"1.9.0","new_version":"1.9.2","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"websockets","old_version":"15.0","new_version":"17.1","repository_url":"https://github.com/python-websockets/websockets"},{"name":"widgetsnbextension","old_version":"4.0.15","new_version":"4.0.16"},{"name":"wrapt","old_version":"2.2.2","new_version":"2.4.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"xxhash","old_version":"3.7.0","new_version":"4.0.1","repository_url":"https://github.com/ifduyue/python-xxhash"},{"name":"zope-interface","old_version":"8.5","new_version":"8.6","repository_url":"https://github.com/zopefoundation/zope.interface"},{"name":"sse-starlette","old_version":"2.1.0","new_version":"3.4.11","repository_url":"https://github.com/sysid/sse-starlette"},{"name":"arq","old_version":"0.26.0","new_version":"0.28.0","repository_url":"https://github.com/python-arq/arq"},{"name":"python-multipart","old_version":"0.0.31","new_version":"0.0.32","repository_url":"https://github.com/Kludex/python-multipart"},{"name":"tiktoken","old_version":"0.7.0","new_version":"0.14.0","repository_url":"https://github.com/openai/tiktoken"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-dependencies group with 123 updates in the /backend directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [altair](https://github.com/vega/altair) | `6.0.0` | `6.3.0` |\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| [anthropic](https://github.com/anthropics/anthropic-sdk-python) | `0.112.0` | `1.8.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.13.0` | `4.15.1` |\n| [argon2-cffi-bindings](https://github.com/hynek/argon2-cffi-bindings) | `25.1.0` | `26.1.0` |\n| [asgiref](https://github.com/django/asgiref) | `3.11.1` | `3.12.1` |\n| [ast-serialize](https://github.com/mypyc/ast_serialize) | `0.5.0` | `0.11.2` |\n| [astroid](https://github.com/pylint-dev/astroid) | `4.0.4` | `4.3.1` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.1` | `3.0.2` |\n| [attrs](https://github.com/python-attrs/attrs) | `25.4.0` | `26.1.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.14.3` | `4.15.0` |\n| [bidict](https://github.com/jab/bidict) | `0.23.1` | `0.24.1` |\n| [cachetools](https://github.com/tkem/cachetools) | `6.2.6` | `7.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.1.4` | `2026.7.22` |\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| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7.5` | `1.7.7` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.3` | `1.4.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.14.1` | `7.16.1` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.20` | `1.8.22` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.135.3` | `0.141.1` |\n| [fastjsonschema](https://github.com/horejsek/python-fastjsonschema) | `2.21.2` | `2.22.2` |\n| [flake8](https://github.com/pycqa/flake8) | `7.3.0` | `7.4.1` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.61.1` | `4.66.0` |\n| [fpdf2](https://github.com/py-pdf/fpdf2) | `2.8.7` | `2.8.8` |\n| [gevent](https://github.com/gevent/gevent) | `25.9.1` | `26.9.0` |\n| [gitpython](https://github.com/gitpython-developers/GitPython) | `3.1.50` | `3.1.62` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.75.0` | `1.75.3` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.5.2` | `3.5.6` |\n| [groq](https://github.com/groq/groq-python) | `0.37.1` | `1.7.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.81.1` | `1.84.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.20` |\n| [imbalanced-learn](https://github.com/scikit-learn-contrib/imbalanced-learn) | `0.14.1` | `0.14.2` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `7.2.0` | `7.3.0` |\n| [ipython](https://github.com/ipython/ipython) | `9.13.0` | `9.17.1` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.8` | `8.1.9` |\n| [isort](https://github.com/PyCQA/isort) | `8.0.1` | `9.0.1` |\n| [jiter](https://github.com/pydantic/jiter) | `0.15.0` | `0.17.0` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.3` | `1.6.0` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.14.0` | `0.15.0` |\n| [jupyter-client](https://github.com/jupyter/jupyter_client) | `8.8.0` | `8.10.0` |\n| [jupyter-server](https://github.com/jupyter-server/jupyter_server) | `2.20.0` | `2.21.1` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.5.9` | `4.6.4` |\n| [jupyterlab-server](https://github.com/jupyterlab/jupyterlab_server) | `2.28.0` | `2.28.1` |\n| [jupyterlab-widgets](https://github.com/jupyter-widgets/ipywidgets) | `3.0.16` | `3.0.17` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.9` | `1.5.1` |\n| [langchain-protocol](https://github.com/langchain-ai/agent-protocol) | `0.0.15` | `0.0.19` |\n| [langsmith](https://github.com/langchain-ai/langsmith-sdk) | `0.8.18` | `0.14.0` |\n| [levenshtein](https://github.com/rapidfuzz/Levenshtein) | `0.27.3` | `0.27.5` |\n| [librt](https://github.com/mypyc/librt) | `0.11.0` | `0.15.0` |\n| [locust](https://github.com/locustio/locust) | `2.44.4` | `2.46.6` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.1` | `6.1.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.11.2` |\n| [mistune](https://github.com/lepture/mistune) | `3.3.0` | `3.3.4` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.2.1` | `1.2.2` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `2.16.0` | `2.26.0` |\n| [nbclient](https://github.com/jupyter/nbclient) | `0.10.4` | `0.11.0` |\n| [nbformat](https://github.com/jupyter/nbformat) | `5.10.4` | `5.11.1` |\n| [openai](https://github.com/openai/openai-python) | `2.44.0` | `3.19.2` |\n| [orjson](https://github.com/ijl/orjson) | `3.11.9` | `3.12.0` |\n| [packaging](https://github.com/pypa/packaging) | `26.0` | `26.3` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.3` | `3.0.6` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.10.0` | `4.11.12` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.25.0` | `0.26.0` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.52` | `3.0.53` |\n| [pure-eval](https://github.com/alexmojaki/pure_eval) | `0.2.3` | `0.2.4` |\n| [pyarrow](https://github.com/apache/arrow) | `23.0.1` | `25.0.1` |\n| [pycodestyle](https://github.com/PyCQA/pycodestyle) | `2.14.0` | `2.15.0` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.14.2` | `2.15.0` |\n| [pydeck](https://github.com/visgl/deck.gl) | `0.9.1` | `0.9.3` |\n| [pyflakes](https://github.com/PyCQA/pyflakes) | `3.4.0` | `4.0.0` |\n| [pygments](https://github.com/pygments/pygments) | `2.20.0` | `2.21.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.13.0` | `2.15.0` |\n| [pylint](https://github.com/pylint-dev/pylint) | `4.0.6` | `4.0.9` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.3.2` | `3.3.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `5.0.0` | `7.1.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.2` | `1.2.3` |\n| [python-engineio](https://github.com/miguelgrinberg/python-engineio) | `4.13.3` | `4.14.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `4.1.0` | `4.2.0` |\n| [python-levenshtein](https://github.com/rapidfuzz/python-Levenshtein) | `0.27.3` | `0.27.5` |\n| [python-socketio](https://github.com/sponsors/miguelgrinberg) | `5.16.3` | `5.17.0` |\n| [pytz](https://github.com/stub42/pytz) | `2025.2` | `2026.3.post1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `27.1.0` | `27.2.0` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.5` | `3.14.6` |\n| [redis](https://github.com/redis/redis-py) | `4.6.0` | `8.1.0` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.34.2` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.30.0` | `2026.6.3` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.8.0` | `1.9.1` |\n| [setuptools](https://github.com/pypa/setuptools) | `83.0.0` | `84.0.0` |\n| [sklearn-compat](https://github.com/sklearn-compat/sklearn-compat) | `0.1.5` | `0.1.6` |\n| [smmap](https://github.com/gitpython-developers/smmap) | `5.0.2` | `5.0.3` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.8.4` | `2.9.2` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.51` | `2.0.54` |\n| [starlette](https://github.com/Kludex/starlette) | `1.3.1` | `1.7.0` |\n| [streamlit](https://github.com/streamlit/streamlit) | `1.54.0` | `1.64.0` |\n| [threadpoolctl](https://github.com/joblib/threadpoolctl) | `3.6.0` | `3.7.0` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tomlkit](https://github.com/python-poetry/tomlkit) | `0.15.0` | `0.15.1` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.7` | `6.5.10` |\n| [tqdm](https://github.com/tqdm/tqdm) | `4.68.3` | `4.70.1` |\n| [traitlets](https://github.com/ipython/traitlets) | `5.15.0` | `5.16.1` |\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| [tzdata](https://github.com/python/tzdata) | `2025.3` | `2026.4` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.7.0` | `2.8.0` |\n| [uuid-utils](https://github.com/aminalaee/uuid-utils) | `0.16.0` | `1.0.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.44.0` | `0.53.0` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.2.0` | `1.3.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.7.0` | `0.9.1` |\n| [webencodings](https://github.com/CourtBouillon/webencodings) | `0.5.1` | `0.6.1` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.9.0` | `1.9.2` |\n| [websockets](https://github.com/python-websockets/websockets) | `15.0` | `17.1` |\n| [widgetsnbextension](http://jupyter.org) | `4.0.15` | `4.0.16` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.2.2` | `2.4.1` |\n| [xxhash](https://github.com/ifduyue/python-xxhash) | `3.7.0` | `4.0.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `8.5` | `8.6` |\n| [sse-starlette](https://github.com/sysid/sse-starlette) | `2.1.0` | `3.4.11` |\n| [arq](https://github.com/python-arq/arq) | `0.26.0` | `0.28.0` |\n| [python-multipart](https://github.com/Kludex/python-multipart) | `0.0.31` | `0.0.32` |\n| [tiktoken](https://github.com/openai/tiktoken) | `0.7.0` | `0.14.0` |\n\n\nUpdates `altair` from 6.0.0 to 6.3.0\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.3.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eSee below for details on what is new in this release. A special compatibility note is that this release drops support for Python 3.10 (which is reaching end of life in Oct).\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: Allow signals/params to be passed to alt.datum[...] 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/3990\"\u003evega/altair#3990\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eYou can now write \u003ccode\u003ealt.datum[xcol_param]\u003c/code\u003e in addition to \u003ccode\u003ef'datum[{xcol_param.name}]'\u003c/code\u003e as in \u003ca href=\"https://altair-viz.github.io/user_guide/interactions/bindings_widgets.html#encoding-channel-binding\"\u003ethis example in the docs\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: raise TypeError for invalid property setter arguments by \u003ca href=\"https://github.com/suzunn\"\u003e\u003ccode\u003e@​suzunn\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4068\"\u003evega/altair#4068\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003ePreviously, these would be silently discarded but now an error would be raised instead, e.g. the second argument in \u003ccode\u003ealt.X(\u0026quot;field:Q\u0026quot;).scale([\u0026quot;a\u0026quot;, \u0026quot;b\u0026quot;], [\u0026quot;#1FC3AA\u0026quot;, \u0026quot;#8624F5\u0026quot;])\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003efix: Expression objects not working in alt.value() by \u003ca href=\"https://github.com/genrichez\"\u003e\u003ccode\u003e@​genrichez\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4083\"\u003evega/altair#4083\u003c/a\u003e\n\u003cul\u003e\n\u003cli\u003eYou can now write \u003ccode\u003ealt.value(alt.expr.scale(\u0026quot;x\u0026quot;, alt.datum.c1)\u003c/code\u003e in addition to \u003ccode\u003ealt.value(alt.expr(\u0026quot;scale('x', datum.c1)\u0026quot;))\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003efix: report missing anywidget for JupyterChart by \u003ca href=\"https://github.com/dk3yyyy\"\u003e\u003ccode\u003e@​dk3yyyy\u003c/code\u003e\u003c/a\u003e  in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4089\"\u003evega/altair#4089\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs: add date input gallery example by \u003ca href=\"https://github.com/Kato-MT\"\u003e\u003ccode\u003e@​Kato-MT\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4088\"\u003evega/altair#4088\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: add number input to date input example by \u003ca href=\"https://github.com/SR0725\"\u003e\u003ccode\u003e@​SR0725\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4091\"\u003evega/altair#4091\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove altair_data_server references by \u003ca href=\"https://github.com/youdie006\"\u003e\u003ccode\u003e@​youdie006\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4074\"\u003evega/altair#4074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Fix two typos in datasets module by \u003ca href=\"https://github.com/maxtaran2010\"\u003e\u003ccode\u003e@​maxtaran2010\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4081\"\u003evega/altair#4081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: document lookup key compatibility by \u003ca href=\"https://github.com/SR0725\"\u003e\u003ccode\u003e@​SR0725\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4094\"\u003evega/altair#4094\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Insert relevant \u0026quot;Learn more\u0026quot; links in gallery examples 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/4002\"\u003evega/altair#4002\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ebuild: Drop support for Python 3.10 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/4029\"\u003evega/altair#4029\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Change timing to actually be only twice a month 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/4073\"\u003evega/altair#4073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Handle mistune expression signature tokens 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/4076\"\u003evega/altair#4076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Note that docs are now automatically built 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/4075\"\u003evega/altair#4075\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(typing): Remove PEP 728 type ignores by \u003ca href=\"https://github.com/MarcoGorelli\"\u003e\u003ccode\u003e@​MarcoGorelli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4080\"\u003evega/altair#4080\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: bump actions/checkout from 6 to 7 in the github-actions-version-updates 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/vega/altair/pull/4079\"\u003evega/altair#4079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Keep tagless forks compatible with sphinxext-altair's altair\u0026gt;=4 requirement 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/4097\"\u003evega/altair#4097\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Gate release tags on approval 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/4099\"\u003evega/altair#4099\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Improve wording and format of release message 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/4101\"\u003evega/altair#4101\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: Update ty, ruff and mypy type-checker version by \u003ca href=\"https://github.com/alec-bike\"\u003e\u003ccode\u003e@​alec-bike\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4098\"\u003evega/altair#4098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Allow overriding the release bump type by \u003ca href=\"https://github.com/mattijn\"\u003e\u003ccode\u003e@​mattijn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4103\"\u003evega/altair#4103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Group security 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/4115\"\u003evega/altair#4115\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Group all non-major updates together and clarify names 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/4123\"\u003evega/altair#4123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: bump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4124\"\u003evega/altair#4124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Group dependabot correctly 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/4130\"\u003evega/altair#4130\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: bump the uv-minor-date group with 5 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/vega/altair/pull/4131\"\u003evega/altair#4131\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: bump the uv-minor group across 1 directory with 19 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/vega/altair/pull/4132\"\u003evega/altair#4132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: bump the uv-security group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4133\"\u003evega/altair#4133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: Fix generation script and ci check 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/4136\"\u003evega/altair#4136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild: Remove dead doc-build code and deprecated attribute access 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/4122\"\u003evega/altair#4122\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/youdie006\"\u003e\u003ccode\u003e@​youdie006\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4074\"\u003evega/altair#4074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/maxtaran2010\"\u003e\u003ccode\u003e@​maxtaran2010\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/vega/altair/pull/4081\"\u003evega/altair#4081\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/vega/altair/commit/78c66bf226b3bb36277fe0c261f469e5b6200a30\"\u003e\u003ccode\u003e78c66bf\u003c/code\u003e\u003c/a\u003e ci: Fix generation script and ci check (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4136\"\u003e#4136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/05c144f669dfc89f6655b54e25954521ee0daaa5\"\u003e\u003ccode\u003e05c144f\u003c/code\u003e\u003c/a\u003e feat: Allow signals/params to be passed to alt.datum[...] (\u003ca href=\"https://redirect.github.com/vega/altair/issues/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/d119fd4dfbe459868c71209cd87f8446f9e34046\"\u003e\u003ccode\u003ed119fd4\u003c/code\u003e\u003c/a\u003e build: bump the uv-security group across 1 directory with 2 updates (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4133\"\u003e#4133\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/b37a571b0e6a54f5b62ede5b14414007db1225c9\"\u003e\u003ccode\u003eb37a571\u003c/code\u003e\u003c/a\u003e build: bump the uv-minor group across 1 directory with 19 updates (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4132\"\u003e#4132\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/d2ef223f81215794b6acb51b177ca8bf5e30cc1d\"\u003e\u003ccode\u003ed2ef223\u003c/code\u003e\u003c/a\u003e build: bump the uv-minor-date group with 5 updates (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4131\"\u003e#4131\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/efaebb3cf2a1e53db0e76885374bca47a1b1dca8\"\u003e\u003ccode\u003eefaebb3\u003c/code\u003e\u003c/a\u003e ci: Group dependabot correctly (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4130\"\u003e#4130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/76d4de260ca6700ae442ccee68db297a29b1685a\"\u003e\u003ccode\u003e76d4de2\u003c/code\u003e\u003c/a\u003e ci: bump setup-python and gh-action-pypi-publish (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4124\"\u003e#4124\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/fa42fef1937f2b0b624b2e526c660f2c48208bab\"\u003e\u003ccode\u003efa42fef\u003c/code\u003e\u003c/a\u003e ci: Group all non-major updates together and clarify names (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4123\"\u003e#4123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/2fd4707a3d0db83eb5919d37c110ab964f508d66\"\u003e\u003ccode\u003e2fd4707\u003c/code\u003e\u003c/a\u003e build: Remove dead code and deprecated attribute access (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4122\"\u003e#4122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vega/altair/commit/63ebce75c2d481871dfd911514c595004a120e4c\"\u003e\u003ccode\u003e63ebce7\u003c/code\u003e\u003c/a\u003e ci: Group security updates (\u003ca href=\"https://redirect.github.com/vega/altair/issues/4115\"\u003e#4115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/vega/altair/compare/v6.0.0...v6.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `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 `anthropic` from 0.112.0 to 1.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/releases\"\u003eanthropic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.8.0\u003c/h2\u003e\n\u003ch2\u003e1.8.0 (2026-09-22)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.7.0...v1.8.0\"\u003ev1.7.0...v1.8.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for claude-opus-5-5, inline tool definitions and MCP tool-list pinning (beta) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b5cc70071a60def1d2e93f3634d1a595919007c8\"\u003eb5cc700\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e share one evaluated_permission enum across Managed Agents events (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f4f51c8d4c8d6d8ec8ed21775034ca3b3736d733\"\u003ef4f51c8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e avoid a Python 3.13 crash at exit when a stream is left open (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/af029bdfe4433ce209092b017834ff0eb4f44e79\"\u003eaf029bd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e add_tools() takes effect straight away (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/874\"\u003e#874\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/06d0a6b7edf440b8561e6ee60b84aecde27391e0\"\u003e06d0a6b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e leave reply-only params off the tool runner's compaction request (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/871\"\u003e#871\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4687310822f40691a30afcfdf20956747fb38f5e\"\u003e4687310\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add descriptions to the Dreams API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add descriptions to the User Profiles API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add memory store descriptions to the Managed Agents API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e improve descriptions in the Dreams API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1f5e477a25f5a873480486a939d7e39529c55130\"\u003e1f5e477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e simplify the session thread agent type description (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a45b7ec22441032c19be720f273af6313dd73f1e\"\u003ea45b7ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e update diagnostics field descriptions on beta messages (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/367750c99c5daae6e28ed10b71db0410ced7c0f9\"\u003e367750c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e fix tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/70c8cbd86c4095379bc6bca925126a151396efd2\"\u003e70c8cbd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e remove mypy (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/be01ed6d7cd6798fbf442286ddc4cccc64a7a3ac\"\u003ebe01ed6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e update fixtures (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/77f6df825350e37018e2439c1178179e98e0bf96\"\u003e77f6df8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd path and header parameter descriptions (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f429a301cb750f51002d2d18fb125aa43b7251c3\"\u003ef429a30\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e remove the request param transform in favour of the JSON encoder (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/539422cde127564a60d9bf1e700445f39e0cff33\"\u003e539422c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.7.0\u003c/h2\u003e\n\u003ch2\u003e1.7.0 (2026-09-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.6.0...v1.7.0\"\u003ev1.6.0...v1.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add group with display_name to rate limits, deprecate group_type (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/28f0a831355fa3d539fd3e1db1c63f92a39bb252\"\u003e28f0a83\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e add compact_before_next_turn() to the tool runner (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/641\"\u003e#641\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8b23fb33f326c7ffa52e8d925902af0fd94501ce\"\u003e8b23fb3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/blob/main/CHANGELOG.md\"\u003eanthropic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.8.0 (2026-09-22)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.7.0...v1.8.0\"\u003ev1.7.0...v1.8.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add support for claude-opus-5-5, inline tool definitions and MCP tool-list pinning (beta) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b5cc70071a60def1d2e93f3634d1a595919007c8\"\u003eb5cc700\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e share one evaluated_permission enum across Managed Agents events (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f4f51c8d4c8d6d8ec8ed21775034ca3b3736d733\"\u003ef4f51c8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003estreaming:\u003c/strong\u003e avoid a Python 3.13 crash at exit when a stream is left open (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/af029bdfe4433ce209092b017834ff0eb4f44e79\"\u003eaf029bd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e add_tools() takes effect straight away (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/874\"\u003e#874\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/06d0a6b7edf440b8561e6ee60b84aecde27391e0\"\u003e06d0a6b\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e leave reply-only params off the tool runner's compaction request (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/871\"\u003e#871\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4687310822f40691a30afcfdf20956747fb38f5e\"\u003e4687310\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add descriptions to the Dreams API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add descriptions to the User Profiles API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e add memory store descriptions to the Managed Agents API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/5574c63875d9940d62af912b6495f15256535673\"\u003e5574c63\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e improve descriptions in the Dreams API reference (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/1f5e477a25f5a873480486a939d7e39529c55130\"\u003e1f5e477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e simplify the session thread agent type description (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/a45b7ec22441032c19be720f273af6313dd73f1e\"\u003ea45b7ec\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edocs:\u003c/strong\u003e update diagnostics field descriptions on beta messages (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/367750c99c5daae6e28ed10b71db0410ced7c0f9\"\u003e367750c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e fix tests (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/70c8cbd86c4095379bc6bca925126a151396efd2\"\u003e70c8cbd\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e remove mypy (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/be01ed6d7cd6798fbf442286ddc4cccc64a7a3ac\"\u003ebe01ed6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e update fixtures (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/77f6df825350e37018e2439c1178179e98e0bf96\"\u003e77f6df8\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd path and header parameter descriptions (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/f429a301cb750f51002d2d18fb125aa43b7251c3\"\u003ef429a30\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e remove the request param transform in favour of the JSON encoder (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/539422cde127564a60d9bf1e700445f39e0cff33\"\u003e539422c\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.7.0 (2026-09-18)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v1.6.0...v1.7.0\"\u003ev1.6.0...v1.7.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add group with display_name to rate limits, deprecate group_type (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/28f0a831355fa3d539fd3e1db1c63f92a39bb252\"\u003e28f0a83\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etools:\u003c/strong\u003e add compact_before_next_turn() to the tool runner (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/641\"\u003e#641\u003c/a\u003e) (\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/8b23fb33f326c7ffa52e8d925902af0fd94501ce\"\u003e8b23fb3\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4421d56a4dd23550c7097c9b7ab5668bd11e09c4\"\u003e\u003ccode\u003e4421d56\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/1946\"\u003e#1946\u003c/a\u003e from anthropics/release-please--branches--main--chan...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/d0247c2d16edae0fb9a590a41c9c35802f38c61a\"\u003e\u003ccode\u003ed0247c2\u003c/code\u003e\u003c/a\u003e release: 1.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/be01ed6d7cd6798fbf442286ddc4cccc64a7a3ac\"\u003e\u003ccode\u003ebe01ed6\u003c/code\u003e\u003c/a\u003e chore(internal): remove mypy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/06d0a6b7edf440b8561e6ee60b84aecde27391e0\"\u003e\u003ccode\u003e06d0a6b\u003c/code\u003e\u003c/a\u003e fix(tools): add_tools() takes effect straight away (\u003ca href=\"https://redirect.github.com/anthropics/anthropic-sdk-python/issues/874\"\u003e#874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/af029bdfe4433ce209092b017834ff0eb4f44e79\"\u003e\u003ccode\u003eaf029bd\u003c/code\u003e\u003c/a\u003e fix(streaming): avoid a Python 3.13 crash at exit when a stream is left open\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/4687310822f40691a30afcfdf20956747fb38f5e\"\u003e\u003ccode\u003e4687310\u003c/code\u003e\u003c/a\u003e fix(tools): leave reply-only params off the tool runner's compaction request ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/b5cc70071a60def1d2e93f3634d1a595919007c8\"\u003e\u003ccode\u003eb5cc700\u003c/code\u003e\u003c/a\u003e feat(api): add support for claude-opus-5-5, inline tool definitions and MCP t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/70c8cbd86c4095379bc6bca925126a151396efd2\"\u003e\u003ccode\u003e70c8cbd\u003c/code\u003e\u003c/a\u003e chore(internal): fix tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/539422cde127564a60d9bf1e700445f39e0cff33\"\u003e\u003ccode\u003e539422c\u003c/code\u003e\u003c/a\u003e refactor(client): remove the request param transform in favour of the JSON en...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/commit/10a4c07e058f9cf7f00c5273f9304347194f0bb8\"\u003e\u003ccode\u003e10a4c07\u003c/code\u003e\u003c/a\u003e codegen metadata\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anthropics/anthropic-sdk-python/compare/v0.112.0...v1.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.13.0 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 c...\n\n_Description has been truncated_","html_url":"https://github.com/naman2812/NeuroFlow-HiDevs/pull/81","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/naman2812%2FNeuroFlow-HiDevs/issues/81","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/81/packages"}},{"old_version":"7.3.0","new_version":"7.4.1","update_type":"minor","path":null,"pr_created_at":"2026-09-25T23:22:55.000Z","version_change":"7.3.0 → 7.4.1","issue":{"uuid":"5589598918","node_id":"PR_kwDOLNaJIs8AAAABFMceWA","number":599,"state":"open","title":"Bump the code-style-depedencies group across 1 directory with 2 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["luisa-beerboom"],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-09-25T23:22:55.000Z","updated_at":"2026-09-29T11:39:30.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"code-style-depedencies","update_count":2,"packages":[{"name":"flake8","old_version":"7.3.0","new_version":"7.4.1","repository_url":"https://github.com/pycqa/flake8"},{"name":"debugpy","old_version":"1.8.21","new_version":"1.8.22","repository_url":"https://github.com/microsoft/debugpy"}],"path":null,"ecosystem":"pip"},"body":"Bumps the code-style-depedencies group with 2 updates in the /dev directory: [flake8](https://github.com/pycqa/flake8) and [debugpy](https://github.com/microsoft/debugpy).\n\nUpdates `flake8` from 7.3.0 to 7.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/7eccf20b526fe4f2230bf9afeeef2fc9f97faf8d\"\u003e\u003ccode\u003e7eccf20\u003c/code\u003e\u003c/a\u003e Release 7.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/fe7311d78073c079468b03193c7cbfac5174776c\"\u003e\u003ccode\u003efe7311d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2057\"\u003e#2057\u003c/a\u003e from PyCQA/fix-pyflakes-4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/819d5e6912003135e93cd466260922b8228a1fa3\"\u003e\u003ccode\u003e819d5e6\u003c/code\u003e\u003c/a\u003e fix pyflakes 4.x --builtins integration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/31405090a83cade9350502e481dcd1f032cb50b9\"\u003e\u003ccode\u003e3140509\u003c/code\u003e\u003c/a\u003e Release 7.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/e12e23174f10cafd7cf046d0a750c2d59fe2d451\"\u003e\u003ccode\u003ee12e231\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2055\"\u003e#2055\u003c/a\u003e from PyCQA/add-315-ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/f0225365d819e55379044ce347077cba3ab9f202\"\u003e\u003ccode\u003ef022536\u003c/code\u003e\u003c/a\u003e add python 3.15 to CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/07eb8ae3f15ee6eeb4d0f748f1c54f7211267fd4\"\u003e\u003ccode\u003e07eb8ae\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2054\"\u003e#2054\u003c/a\u003e from PyCQA/latest-pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/a9e6dc227342a5cfcf5df56909370ecbc87725a3\"\u003e\u003ccode\u003ea9e6dc2\u003c/code\u003e\u003c/a\u003e update to latest pyflakes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/2436eabb34f69e8ac29bdbd3f452b4509bf78644\"\u003e\u003ccode\u003e2436eab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pycqa/flake8/issues/2053\"\u003e#2053\u003c/a\u003e from PyCQA/latest-pycodestyle\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/flake8/commit/b44ddd48986c5e2d20e4461084a38d9b233d66c3\"\u003e\u003ccode\u003eb44ddd4\u003c/code\u003e\u003c/a\u003e update to latest pycodestyle\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pycqa/flake8/compare/7.3.0...7.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `debugpy` from 1.8.21 to 1.8.22\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/debugpy/releases\"\u003edebugpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003edebugpy v1.8.22\u003c/h2\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix invalid type annotation in test_pydev_monkey comprehension by \u003ca href=\"https://github.com/pdepetro\"\u003e\u003ccode\u003e@​pdepetro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2033\"\u003emicrosoft/debugpy#2033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix PEP 768 code injection SyntaxError when temp path contains backslashes by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e with \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2038\"\u003emicrosoft/debugpy#2038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix race between adapter connection publication and session attachment by \u003ca href=\"https://github.com/aperez\"\u003e\u003ccode\u003e@​aperez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2049\"\u003emicrosoft/debugpy#2049\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix debugger hang when expanding objects with blocking property getters (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2053\"\u003e#2053\u003c/a\u003e) by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2055\"\u003emicrosoft/debugpy#2055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix duplicate stopped event when two threads hit a breakpoint at once by \u003ca href=\"https://github.com/aperez\"\u003e\u003ccode\u003e@​aperez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2056\"\u003emicrosoft/debugpy#2056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid exceptions in environment diagnostics by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2059\"\u003emicrosoft/debugpy#2059\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix thread identity when the first traced call is another thread's is_alive() by \u003ca href=\"https://github.com/aperez\"\u003e\u003ccode\u003e@​aperez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2061\"\u003emicrosoft/debugpy#2061\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRespect isolated mode when patching sys.path by \u003ca href=\"https://github.com/karandhaodiyal28-hash\"\u003e\u003ccode\u003e@​karandhaodiyal28-hash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2050\"\u003emicrosoft/debugpy#2050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eEnhancements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd trigger_exception_handler() for post-mortem debugging of caught exceptions by \u003ca href=\"https://github.com/nshepperd\"\u003e\u003ccode\u003e@​nshepperd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1996\"\u003emicrosoft/debugpy#1996\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd lldb attach-to-PID option for debugpy on Linux by \u003ca href=\"https://github.com/pdepetro\"\u003e\u003ccode\u003e@​pdepetro\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2052\"\u003emicrosoft/debugpy#2052\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePopulate hitBreakpointIds in the DAP stopped event by \u003ca href=\"https://github.com/aperez\"\u003e\u003ccode\u003e@​aperez\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2060\"\u003emicrosoft/debugpy#2060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReturn the endpoint from listen() with the in-process adapter by \u003ca href=\"https://github.com/karandhaodiyal28-hash\"\u003e\u003ccode\u003e@​karandhaodiyal28-hash\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2051\"\u003emicrosoft/debugpy#2051\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInfrastructure work\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Dependabot configuration for pip and GitHub Actions by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2041\"\u003emicrosoft/debugpy#2041\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate vendored pydevd 3.4.1 -\u0026gt; 3.5.0 (maintenance refresh) by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2044\"\u003emicrosoft/debugpy#2044\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin secure test dependency floors and drop EOL Python 3.9/3.8 by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2045\"\u003emicrosoft/debugpy#2045\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd more typing to debugpy and switch to 'standard' type checking mode by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1637\"\u003emicrosoft/debugpy#1637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd debugpy release agent by \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2062\"\u003emicrosoft/debugpy#2062\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin GitHub Actions to full-length commit SHAs by \u003ca href=\"https://github.com/danfiedler-msft\"\u003e\u003ccode\u003e@​danfiedler-msft\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2063\"\u003emicrosoft/debugpy#2063\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd python 3.15 to tests by \u003ca href=\"https://github.com/finnagin\"\u003e\u003ccode\u003e@​finnagin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/2069\"\u003emicrosoft/debugpy#2069\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/pdepetro\"\u003e\u003ccode\u003e@​pdepetro\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/rchiodo\"\u003e\u003ccode\u003e@​rchiodo\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/nshepperd\"\u003e\u003ccode\u003e@​nshepperd\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/aperez\"\u003e\u003ccode\u003e@​aperez\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/karandhaodiyal28-hash\"\u003e\u003ccode\u003e@​karandhaodiyal28-hash\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/danfiedler-msft\"\u003e\u003ccode\u003e@​danfiedler-msft\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/finnagin\"\u003e\u003ccode\u003e@​finnagin\u003c/code\u003e\u003c/a\u003e for the commits.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/microsoft/debugpy/compare/v1.8.21...v1.8.22\"\u003ehttps://github.com/microsoft/debugpy/compare/v1.8.21...v1.8.22\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/microsoft/debugpy/commit/e2208059db34fa1055c809ff0b303ae1cf1868d7\"\u003e\u003ccode\u003ee220805\u003c/code\u003e\u003c/a\u003e Add python 3.15 to tests (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2069\"\u003e#2069\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/e5743d3a00c6dee7d8140275c7df7e719ebb132f\"\u003e\u003ccode\u003ee5743d3\u003c/code\u003e\u003c/a\u003e Pin GitHub Actions to full-length commit SHAs (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2063\"\u003e#2063\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/7959635126d23680e88e266b42ba7c1b91cf4b16\"\u003e\u003ccode\u003e7959635\u003c/code\u003e\u003c/a\u003e Respect isolated mode when patching sys.path (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2050\"\u003e#2050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/6dd019a6fb8e45bf84ce9c648234ebc703f35dd5\"\u003e\u003ccode\u003e6dd019a\u003c/code\u003e\u003c/a\u003e Add debugpy release agent (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2062\"\u003e#2062\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/d98001c459bf01df0e285ecb5515dad483f776f8\"\u003e\u003ccode\u003ed98001c\u003c/code\u003e\u003c/a\u003e Fix thread identity when the first traced call is another thread's is_alive()...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/7ca4578da46cf172a00994f4f327f733695bb955\"\u003e\u003ccode\u003e7ca4578\u003c/code\u003e\u003c/a\u003e Return the endpoint from listen() with the in-process adapter (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2051\"\u003e#2051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/9832f3f99be7c5c12587ed0df122ce51b3fb735c\"\u003e\u003ccode\u003e9832f3f\u003c/code\u003e\u003c/a\u003e Add more typing to debugpy and switch to 'standard' type checking mode (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1637\"\u003e#1637\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/2f73444688e6d617c2fafb629e42c92133361e62\"\u003e\u003ccode\u003e2f73444\u003c/code\u003e\u003c/a\u003e Populate hitBreakpointIds in the DAP stopped event (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2060\"\u003e#2060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/7d3f86119e5e9fc435983839ea732a58e86ceaeb\"\u003e\u003ccode\u003e7d3f861\u003c/code\u003e\u003c/a\u003e Avoid exceptions in environment diagnostics (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2059\"\u003e#2059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/f77d44824c13ca56f907155a940a5bafb1467d87\"\u003e\u003ccode\u003ef77d448\u003c/code\u003e\u003c/a\u003e Fix duplicate stopped event when two threads hit a breakpoint at once (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/2056\"\u003e#2056\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/debugpy/compare/v1.8.21...v1.8.22\"\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/OpenSlides/openslides-meta/pull/599","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenSlides%2Fopenslides-meta/issues/599","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/599/packages"}}]}