{"id":3672,"name":"djangorestframework-stubs","ecosystem":"pip","repository_url":"https://github.com/typeddjango/djangorestframework-stubs","issues_count":1829,"created_at":"2025-06-06T16:30:13.783Z","updated_at":"2025-06-06T16:30:13.783Z","purl":"pkg:pypi/djangorestframework-stubs","metadata":{"id":2707793,"name":"djangorestframework-stubs","ecosystem":"pypi","description":"PEP-484 stubs for django-rest-framework","homepage":"https://github.com/typeddjango/djangorestframework-stubs","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/typeddjango/djangorestframework-stubs","keywords_array":[],"namespace":null,"versions_count":30,"first_release_published_at":"2019-03-05T21:25:58.000Z","latest_release_published_at":"2025-04-27T12:19:18.000Z","latest_release_number":"3.16.0","last_synced_at":"2025-06-06T12:31:28.194Z","created_at":"2022-04-10T10:43:57.175Z","updated_at":"2025-06-06T12:31:28.194Z","registry_url":"https://pypi.org/project/djangorestframework-stubs/","install_command":"pip install djangorestframework-stubs --index-url https://pypi.org/simple","documentation_url":"https://djangorestframework-stubs.readthedocs.io/","metadata":{"funding":"https://github.com/sponsors/typeddjango","documentation":null,"classifiers":["Framework :: Django","License :: OSI Approved :: MIT License","Operating System :: OS Independent","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Typing :: Typed"],"normalized_name":"djangorestframework-stubs"},"repo_metadata":{"uuid":"157137780","full_name":"typeddjango/djangorestframework-stubs","owner":"typeddjango","description":"PEP-484 stubs for django-rest-framework","archived":false,"fork":false,"pushed_at":"2024-04-13T19:38:54.000Z","size":572,"stargazers_count":398,"open_issues_count":53,"forks_count":106,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-04-14T05:31:23.979Z","etag":null,"topics":["django","django-rest-framework","mypy","pep484","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/typeddjango.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":"typeddjango","open_collective":"typeddjangoorg"}},"created_at":"2018-11-12T01:07:16.000Z","updated_at":"2024-04-15T06:31:31.007Z","dependencies_parsed_at":"2023-12-08T15:09:34.377Z","dependency_job_id":"15b55f5e-6ed1-462a-b760-808a30fbdece","html_url":"https://github.com/typeddjango/djangorestframework-stubs","commit_stats":{"total_commits":420,"total_committers":74,"mean_commits":5.675675675675675,"dds":0.7928571428571428,"last_synced_commit":"0f9491dd6e61b1a96eda993ee6d07c49395d32dc"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/typeddjango","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":197225281,"owners_count":13311897,"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":"typeddjango","name":"TypedDjango","uuid":"52535716","kind":"organization","description":"We make types for Django framework!","email":null,"website":"https://gitter.im/mypy-django/Lobby","location":"Worldwide","twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/52535716?v=4","repositories_count":6,"last_synced_at":"2024-04-14T20:44:48.178Z","metadata":{"has_sponsors_listing":true,"funding":{"github":"typeddjango","open_collective":"typeddjangoorg"}},"html_url":"https://github.com/typeddjango","funding_links":["https://github.com/sponsors/typeddjango","https://opencollective.com/typeddjangoorg"],"total_stars":3506,"followers":85,"following":0,"created_at":"2022-11-02T16:26:34.406Z","updated_at":"2024-04-14T20:44:50.951Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/typeddjango","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/typeddjango/repositories"},"tags":[{"name":"3.14.5","sha":"2cee23a6fc9c60f38eed78ed44ef89fc786a8089","kind":"commit","published_at":"2023-12-05T19:19:47.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/3.14.5","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/3.14.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.5/manifests"},{"name":"3.14.4","sha":"0ce366f29821f6d3888b37363c394bc2d05ced99","kind":"commit","published_at":"2023-10-18T16:50:27.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/3.14.4","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/3.14.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.4/manifests"},{"name":"3.14.3","sha":"fc62c8e2e00a433476085911b33279de75c1c0b8","kind":"commit","published_at":"2023-10-04T20:57:24.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/3.14.3","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/3.14.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.3/manifests"},{"name":"3.14.2","sha":"7c57faf14f0e7c5a7ed42217286150fa197fcff0","kind":"commit","published_at":"2023-06-27T17:53:26.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/3.14.2","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/3.14.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.2/manifests"},{"name":"3.14.1","sha":"80a81fd9cce1cd4d989340b35bb158ff07a360e5","kind":"commit","published_at":"2023-06-02T14:14:32.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/3.14.1","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/3.14.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.1/manifests"},{"name":"3.14.0","sha":"6873b7509a1f9079af9436ec2cc7db51e0542d77","kind":"commit","published_at":"2023-04-27T14:09:44.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/3.14.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/3.14.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/3.14.0/manifests"},{"name":"1.10.0","sha":"0752c40703c6d09caa220f617995ee5807a6fe1e","kind":"commit","published_at":"2023-03-16T14:56:42.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/1.10.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/1.10.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.10.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.10.0/manifests"},{"name":"1.9.1","sha":"98cca07668e032ec55f3dab2e6f06896e320fa1f","kind":"commit","published_at":"2023-02-23T12:18:36.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/1.9.1","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/1.9.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.9.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.9.1/manifests"},{"name":"1.9.0","sha":"21818bc6335601e10289078974d6a7e9beb7d4c5","kind":"commit","published_at":"2023-02-22T11:00:19.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/1.9.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/1.9.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.9.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.9.0/manifests"},{"name":"1.8.0","sha":"2584ad31edde5350215c10d0821c81303402d22f","kind":"commit","published_at":"2022-11-18T08:35:04.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/1.8.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/1.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.8.0/manifests"},{"name":"1.7.0","sha":"bf412d40b3d7db1dcf3ef39acc469cc958413fcc","kind":"tag","published_at":"2022-06-22T09:26:11.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/1.7.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/1.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.7.0/manifests"},{"name":"v1.6.0","sha":"5f6059d1ecedad6c42b0a0f74703d5a39b02446d","kind":"commit","published_at":"2022-05-24T10:06:21.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/v1.6.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/v1.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/v1.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/v1.6.0/manifests"},{"name":"1.5.0","sha":"23cbc4a7b6f776af0635aabc4fa79c8c1904632c","kind":"tag","published_at":"2022-04-06T10:06:11.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/1.5.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/1.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.5.0/manifests"},{"name":"1.4.0","sha":"f74916e46ed86f221492becded4b83bceb0ff1a0","kind":"tag","published_at":"2021-02-03T11:26:00.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/1.4.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/1.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.4.0/manifests"},{"name":"1.3.0","sha":"361f4de7c4317593b66192f7666269065641008b","kind":"tag","published_at":"2020-10-29T21:47:09.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/1.3.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.3.0/manifests"},{"name":"1.2.0","sha":"187003624bb5133e2d9cb5a76e5f76bbbd851a4a","kind":"commit","published_at":"2020-05-26T17:05:25.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/1.2.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.2.0/manifests"},{"name":"1.1.0","sha":"f0afc5784a9b94bce486e7868e24f5a1dbeb0cde","kind":"commit","published_at":"2019-12-12T13:02:42.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/1.1.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/1.1.0/manifests"},{"name":"v0.4.0","sha":"4837cc16c895020cb8e83d82b5ea4404a7868f7f","kind":"commit","published_at":"2019-03-23T23:11:05.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/v0.4.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/v0.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/v0.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/v0.4.0/manifests"},{"name":"v0.3.0","sha":"eee0367ed13a4034d25e4e131c43ed5dcf0acc84","kind":"commit","published_at":"2019-03-10T16:52:40.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/v0.3.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/v0.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/v0.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/v0.3.0/manifests"},{"name":"v0.2.0","sha":"d058e7e6c27299b658f1e1877ecc73a5d2449095","kind":"commit","published_at":"2019-03-06T20:38:46.000Z","download_url":"https://codeload.github.com/typeddjango/djangorestframework-stubs/tar.gz/v0.2.0","html_url":"https://github.com/typeddjango/djangorestframework-stubs/releases/tag/v0.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/v0.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/typeddjango%2Fdjangorestframework-stubs/tags/v0.2.0/manifests"}]},"repo_metadata_updated_at":"2024-09-08T13:42:46.750Z","dependent_packages_count":15,"downloads":1111476,"downloads_period":"last-month","dependent_repos_count":688,"rankings":{"downloads":0.37642788091621127,"dependent_repos_count":0.47349418983171226,"dependent_packages_count":0.5949079511204363,"stargazers_count":3.3340766071981798,"forks_count":4.61873853256259,"docker_downloads_count":1.2387053989081391,"average":1.772725093422878},"purl":"pkg:pypi/djangorestframework-stubs","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/djangorestframework-stubs","docker_dependents_count":30,"docker_downloads_count":6055117,"usage_url":"https://repos.ecosyste.ms/usage/pypi/djangorestframework-stubs","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/djangorestframework-stubs/dependencies","status":null,"funding_links":["https://github.com/sponsors/typeddjango","https://opencollective.com/typeddjangoorg"],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/djangorestframework-stubs/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/djangorestframework-stubs/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/djangorestframework-stubs/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/djangorestframework-stubs/related_packages","maintainers":[{"uuid":"sobolevn","login":"sobolevn","name":null,"email":null,"url":null,"packages_count":42,"html_url":"https://pypi.org/user/sobolevn/","role":null,"created_at":"2022-11-24T03:04:11.326Z","updated_at":"2022-11-24T03:04:11.326Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/sobolevn/packages"},{"uuid":"AdamChainz","login":"AdamChainz","name":null,"email":null,"url":null,"packages_count":86,"html_url":"https://pypi.org/user/AdamChainz/","role":null,"created_at":"2022-11-24T03:04:11.339Z","updated_at":"2022-11-24T03:04:11.339Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/AdamChainz/packages"},{"uuid":"mkurnikov","login":"mkurnikov","name":null,"email":null,"url":null,"packages_count":5,"html_url":"https://pypi.org/user/mkurnikov/","role":null,"created_at":"2022-11-24T03:04:11.318Z","updated_at":"2022-11-24T03:04:11.318Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/mkurnikov/packages"},{"uuid":"intgr","login":"intgr","name":null,"email":null,"url":null,"packages_count":7,"html_url":"https://pypi.org/user/intgr/","role":null,"created_at":"2022-11-24T03:04:11.349Z","updated_at":"2022-11-24T03:04:11.349Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/intgr/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690329,"maintainers_count":292761,"namespaces_count":0,"keywords_count":228590,"github":"pypi","metadata":{"funded_packages_count":48950},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-06T05:32:09.692Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":279,"unique_repositories_count_past_30_days":13,"recent_issues":[{"uuid":"5343446291","node_id":"PR_kwDOTRUWeM8AAAABCI9iNw","number":22,"state":"closed","title":"chore(deps): bump the python group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-07T02:19:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T02:19:10.000Z","updated_at":"2026-09-07T02:19:17.000Z","time_to_close":259203,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":19,"packages":[{"name":"daphne","old_version":"4.2.2","new_version":"4.2.3","repository_url":"https://github.com/django/daphne"},{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1","repository_url":"https://github.com/anymail/django-anymail"},{"name":"django-crispy-forms","old_version":"2.6","new_version":"2.7","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"litellm","old_version":"1.91.1","new_version":"1.99.0","repository_url":"https://github.com/BerriAI/litellm"},{"name":"psycopg","old_version":"3.3.4","new_version":"3.3.5"},{"name":"redis","old_version":"8.0.1","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.15.1","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.6","new_version":"6.1.0"},{"name":"djangorestframework-stubs","old_version":"3.17.0","new_version":"3.18.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.40.5","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.0","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.15.21","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [daphne](https://github.com/django/daphne) | `4.2.2` | `4.2.3` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.6` | `2.7` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.2.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [litellm](https://github.com/BerriAI/litellm) | `1.91.1` | `1.99.0` |\n| [psycopg[binary]](https://github.com/psycopg/psycopg) | `3.3.4` | `3.3.5` |\n| [redis](https://github.com/redis/redis-py) | `8.0.1` | `8.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.1` | `7.16.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.6` | `6.1.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.0` | `3.18.1` |\n| [djlint](https://github.com/djlint/djLint) | `1.40.5` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.0` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.21` | `0.16.5` |\n\n\nUpdates `daphne` from 4.2.2 to 4.2.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/daphne/blob/main/CHANGELOG.txt\"\u003edaphne's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.3 (2026-07-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e--websocket-max-message-size\u003c/code\u003e and \u003ccode\u003e--websocket-max-frame-size\u003c/code\u003e CLI\nflags to the \u003ccode\u003erunserver\u003c/code\u003e management command for use in development.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/daphne/commit/8a60e56ef8c9b5a4cc4979a3ece6970c73bbd025\"\u003e\u003ccode\u003e8a60e56\u003c/code\u003e\u003c/a\u003e Bumped version and changelog for v4.2.3 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/daphne/commit/389b9a753b165a417c082212f9da015e0cf5fd37\"\u003e\u003ccode\u003e389b9a7\u003c/code\u003e\u003c/a\u003e Add ability to configure websocket message size when running as django dev se...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/daphne/commit/0cd79c253b6995952b0f66c3e8509edc9bd78ad7\"\u003e\u003ccode\u003e0cd79c2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django/daphne/issues/571\"\u003e#571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django/daphne/compare/4.2.2...4.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\u003cbr /\u003e\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\u003cbr /\u003e\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\u003cbr /\u003e\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\u003cbr /\u003e\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\u003cbr /\u003e\nin Django's documentation for recommendations.\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.6 to 2.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/e7fbb538595dde3a4598b4403e60ecca0905fa74\"\u003e\u003ccode\u003ee7fbb53\u003c/code\u003e\u003c/a\u003e Release 2.7. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1438\"\u003e#1438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/9d6b32129dea4c89caa87218a11192503646b9da\"\u003e\u003ccode\u003e9d6b321\u003c/code\u003e\u003c/a\u003e Bumped github actions versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/974b5b7390c0b11698c348128b164990cb6f044b\"\u003e\u003ccode\u003e974b5b7\u003c/code\u003e\u003c/a\u003e Bumped RTD OS and Python versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/5218268f520ca19c665e6f02a49df647eb977af6\"\u003e\u003ccode\u003e5218268\u003c/code\u003e\u003c/a\u003e Confirmed support for Django 6.1. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/847873cf09f0ee96beb38273190860008a6712dd\"\u003e\u003ccode\u003e847873c\u003c/code\u003e\u003c/a\u003e docs: replace 'basestring' with 'str' (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.6...2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `litellm` from 1.91.1 to 1.99.0\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.99.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.99.0\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.99.0/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.99.0\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\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(typing): drop 1.3k basedpyright errors across 30 Any hotspot files by \u003ca href=\"https://github.com/mateo-berri\"\u003e\u003ccode\u003e@​mateo-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/37073\"\u003eBerriAI/litellm#37073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(proxy): register WebSocket passthrough for OpenAI prefixes by \u003ca href=\"https://github.com/LHMQ878\"\u003e\u003ccode\u003e@​LHMQ878\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36151\"\u003eBerriAI/litellm#36151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(bedrock): report uploaded size in the FileObject returned by managed batch uploads by \u003ca href=\"https://github.com/devin-ai-integration\"\u003e\u003ccode\u003e@​devin-ai-integration\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36392\"\u003eBerriAI/litellm#36392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(batches): support AWS Bedrock batch cancellation via \u003ccode\u003eStopModelInvocationJob\u003c/code\u003e by \u003ca href=\"https://github.com/ArjunPakhan\"\u003e\u003ccode\u003e@​ArjunPakhan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/34087\"\u003eBerriAI/litellm#34087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Async Rust OCR Bridge and MCP OAuth UI Restore by \u003ca href=\"https://github.com/ArjunPakhan\"\u003e\u003ccode\u003e@​ArjunPakhan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/31453\"\u003eBerriAI/litellm#31453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(batches): don't crash logging when a completed batch has no output file by \u003ca href=\"https://github.com/MUSE-CODE-SPACE\"\u003e\u003ccode\u003e@​MUSE-CODE-SPACE\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/34067\"\u003eBerriAI/litellm#34067\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(UI): add default model pin to complexity router UI by \u003ca href=\"https://github.com/tin-berri\"\u003e\u003ccode\u003e@​tin-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36615\"\u003eBerriAI/litellm#36615\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(ui): add Lite mixed-provider auto-router preset by \u003ca href=\"https://github.com/tin-berri\"\u003e\u003ccode\u003e@​tin-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/37068\"\u003eBerriAI/litellm#37068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(ui): link key info header to its user, creator, team, and organization by \u003ca href=\"https://github.com/ryan-crabbe-berri\"\u003e\u003ccode\u003e@​ryan-crabbe-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/37187\"\u003eBerriAI/litellm#37187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(guardrails): scan text on /guardrails/apply_guardrail for Azure Content Safety by \u003ca href=\"https://github.com/yucheng-berri\"\u003e\u003ccode\u003e@​yucheng-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36894\"\u003eBerriAI/litellm#36894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(bedrock): forward LiteLLM identity and metadata into Bedrock requestMetadata by \u003ca href=\"https://github.com/yassin-berriai\"\u003e\u003ccode\u003e@​yassin-berriai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36861\"\u003eBerriAI/litellm#36861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(azure): rename max_tokens to max_completion_tokens for gpt-5-chat deployments by \u003ca href=\"https://github.com/yassin-berriai\"\u003e\u003ccode\u003e@​yassin-berriai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36857\"\u003eBerriAI/litellm#36857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(bedrock): preserve cache token usage when invocationMetrics replace the usage block by \u003ca href=\"https://github.com/brian5021\"\u003e\u003ccode\u003e@​brian5021\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36878\"\u003eBerriAI/litellm#36878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(proxy): registry caches stop per-request tag and end-user Postgres reads in auth by \u003ca href=\"https://github.com/ryan-crabbe-berri\"\u003e\u003ccode\u003e@​ryan-crabbe-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36801\"\u003eBerriAI/litellm#36801\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest(e2e): replay a real tool-search assistant turn back to Bedrock Invoke by \u003ca href=\"https://github.com/yassin-berriai\"\u003e\u003ccode\u003e@​yassin-berriai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36856\"\u003eBerriAI/litellm#36856\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/BerriAI/litellm/commit/fa647f742d7baefe8eb1181899d9c81b41559772\"\u003e\u003ccode\u003efa647f7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/39048\"\u003e#39048\u003c/a\u003e from BerriAI/litellm_/docker-build-failure-9f6247\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/5892e30d4254376c77ac17040d27e2270cab65ae\"\u003e\u003ccode\u003e5892e30\u003c/code\u003e\u003c/a\u003e fix(docker): pin apk python to 3.13 in migrations image\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/91f1a5710064452bda834ae6446d891c90c46dd1\"\u003e\u003ccode\u003e91f1a57\u003c/code\u003e\u003c/a\u003e fix(docker): bump wolfi-base for glibc 2.44 and pin apk python to 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/d0c86678ed3c8951a2c47ed1b1fabcf8de65b553\"\u003e\u003ccode\u003ed0c8667\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/38862\"\u003e#38862\u003c/a\u003e from BerriAI/litellm_/litellm-e2e-rc-1-99-0-11cfd8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/da1d292dceeaf8f098ea9955eeaf7e7fb2a74a02\"\u003e\u003ccode\u003eda1d292\u003c/code\u003e\u003c/a\u003e test(e2e): measure the select popup after it settles instead of mid-flight\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/a2aecfea7f2905ed569ccc8d733efcff13c3074c\"\u003e\u003ccode\u003ea2aecfe\u003c/code\u003e\u003c/a\u003e fix(e2e): only the negative fallback assertion needs every replica to agree\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/ab1da05e5987816047f06f396288fee8d673db1c\"\u003e\u003ccode\u003eab1da05\u003c/code\u003e\u003c/a\u003e test(e2e): de-flake the cost-header cache read and the router fallback control\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/141185268450a248cb5bb251da3ac503273a1648\"\u003e\u003ccode\u003e1411852\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/38855\"\u003e#38855\u003c/a\u003e from BerriAI/litellm_/backport-38251-rc-1-99-0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/f0ee067aaa3a6d356a9806a4216dd524916ff231\"\u003e\u003ccode\u003ef0ee067\u003c/code\u003e\u003c/a\u003e fix(anthropic): translate tool_result document blocks in the /v1/messages bridge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/4b281e7892937b9710e5a679d8fa75e8b0d99fac\"\u003e\u003ccode\u003e4b281e7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/38854\"\u003e#38854\u003c/a\u003e from BerriAI/litellm_backport_model_test_dialog_str...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/BerriAI/litellm/compare/v1.91.1...v1.99.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg[binary]` from 3.3.4 to 3.3.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg[binary]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!DataError\u003c/code\u003e messages leaking the literal \u003ccode\u003e{...}\u003c/code\u003e placeholder instead\nof the offending value when loading a pre-year-1 :sql:\u003ccode\u003etimestamp\u003c/code\u003e or a\nmalformed binary :sql:\u003ccode\u003ejsonb\u003c/code\u003e value (:ticket:\u003ccode\u003e[#1372](https://github.com/psycopg/psycopg/issues/1372)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e instead of \u003ccode\u003e!ValueError\u003c/code\u003e when \u003ccode\u003e~psycopg.rows.namedtuple_row\u003c/code\u003e\nreceives duplicate column names (:ticket:\u003ccode\u003e[#1348](https://github.com/psycopg/psycopg/issues/1348)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e on inconsistent copy data (:tickets:\u003ccode\u003e[#1359](https://github.com/psycopg/psycopg/issues/1359), [#1360](https://github.com/psycopg/psycopg/issues/1360)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eHandle client encodings aliases (:ticket:\u003ccode\u003e[#1363](https://github.com/psycopg/psycopg/issues/1363)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building C extension with Cython 3.3.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/ea542c9534cc9841d50450e0c156b549cc6c805a\"\u003e\u003ccode\u003eea542c9\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8d31e4711c22b206d8863b9397b3b34f5b106e4d\"\u003e\u003ccode\u003e8d31e47\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/268f863e0e8dbdbaf4f10616ebd14ff00edaeb51\"\u003e\u003ccode\u003e268f863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1370\"\u003e#1370\u003c/a\u003e from Sanjays2402/fix/truncated-binary-copy-error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/a412fa4d682f035a9cf3c7886a5c95c15c64ba96\"\u003e\u003ccode\u003ea412fa4\u003c/code\u003e\u003c/a\u003e docs: put together different issues fixed around copy parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/f757307068aef06e439cf164915a3781acf483b5\"\u003e\u003ccode\u003ef757307\u003c/code\u003e\u003c/a\u003e fix: clearer error messages according to truncated copy message part\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/b1f17c44096b8fbc90836d9652d083f23c88e28d\"\u003e\u003ccode\u003eb1f17c4\u003c/code\u003e\u003c/a\u003e test: move existing COPY format parsing tests into a single module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/21eba573f9356276b2a3e0b7c1d86fad03f2872f\"\u003e\u003ccode\u003e21eba57\u003c/code\u003e\u003c/a\u003e test: drop useless parametrization of copy binary parsigh test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/6780e17bcee0b838dedd0aa9c1b6dcc563a50cec\"\u003e\u003ccode\u003e6780e17\u003c/code\u003e\u003c/a\u003e fix(copy): handle truncated binary row headers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f2fcfbf35af4b80a4755fff75fe8b8f5e059193\"\u003e\u003ccode\u003e2f2fcfb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1364\"\u003e#1364\u003c/a\u003e from DylanYoung/fix_client_encoding_aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/ccc351ec3180969d105199012a017240492a43c0\"\u003e\u003ccode\u003eccc351e\u003c/code\u003e\u003c/a\u003e refactor: don't store the encodings raw table as a dict\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.4...3.3.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.1 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreams\u003c/strong\u003e — \u003ccode\u003eMAXCOUNT\u003c/code\u003e / \u003ccode\u003eMAXSIZE\u003c/code\u003e options for \u003ccode\u003eXREAD\u003c/code\u003e and \u003ccode\u003eXREADGROUP\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTime Series\u003c/strong\u003e — \u003ccode\u003eTS.READ\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e), \u003ccode\u003eTS.QUERYLABELS\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e), \u003ccode\u003eTS.NRANGE\u003c/code\u003e / \u003ccode\u003eTS.NREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e),\nand an \u003ccode\u003eexclude_empty\u003c/code\u003e (\u003ccode\u003eEXCLUDEEMPTY\u003c/code\u003e) option for \u003ccode\u003eTS.MRANGE\u003c/code\u003e / \u003ccode\u003eTS.MREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSearch\u003c/strong\u003e — \u003ccode\u003eFT.ALIASLIST\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e) and a \u003ccode\u003eCOLLECT\u003c/code\u003e reducer for aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSentinel\u003c/strong\u003e — replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TS.NRANGE and TS.NREVRANGE support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.READ command support to the timeseries module (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add SDIFFCARD and SUNIONCARD command support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add LMOVEM and BLMOVEM commands for moving multiple list elements (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add async maintenance-notifications support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add COLLECT reducer support to search aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and TS.MREVRANGE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.QUERYLABELS support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Experimental\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add client-side HIMPORT fieldset support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe feature considered unstable and \u003cstrong\u003epublic API might be changed in the future minor version\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: detect closed pooled connection without consuming pending push data (RESP3 + hiredis) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4156\"\u003e#4156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Sentinel pool capacity loss after failover (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4193\"\u003e#4193\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683\"\u003e\u003ccode\u003ee013126\u003c/code\u003e\u003c/a\u003e Testing with 8.10 GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4227\"\u003e#4227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1\"\u003e\u003ccode\u003e059d1e9\u003c/code\u003e\u003c/a\u003e Fixed TS.NRANGE commands to correctly apply aggregators (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4225\"\u003e#4225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f\"\u003e\u003ccode\u003ed486a0a\u003c/code\u003e\u003c/a\u003e Fix FIELDNAME alias dropping first character of un-prefixed fields (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4224\"\u003e#4224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2\"\u003e\u003ccode\u003efb93104\u003c/code\u003e\u003c/a\u003e feat: add client-side HIMPORT fieldset support for standalone and cluster cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9\"\u003e\u003ccode\u003e9197609\u003c/code\u003e\u003c/a\u003e Fix lat/lon swap in search querystring geo() helper (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb\"\u003e\u003ccode\u003e14714a0\u003c/code\u003e\u003c/a\u003e fix: Fixed double decoding issue with unquote() (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a\"\u003e\u003ccode\u003e227280a\u003c/code\u003e\u003c/a\u003e Update lib version to 8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056\"\u003e\u003ccode\u003e88d16d0\u003c/code\u003e\u003c/a\u003e Decode ACL LOG string values on the default RESP3 legacy callback (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4201\"\u003e#4201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76\"\u003e\u003ccode\u003e599fd75\u003c/code\u003e\u003c/a\u003e feat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7\"\u003e\u003ccode\u003e71e275e\u003c/code\u003e\u003c/a\u003e test: add VectorField RERANK serialization tests for sync and async search (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v8.0.1...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.1 to 7.16.0\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.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\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.15.2\"\u003ecoverage 7.15.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.15.2\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.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\nreach the subprocesses.  The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as\nthe entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e\nslipped through and failed later with \u0026quot;Can't combine statement coverage\ndata with branch data\u0026quot;.  Each named concurrency library is now properly\nconsidered (\u003ccode\u003epull 2270\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any\nmeasured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on\nWindows.  The original extension is now restored on the annotated copy (\u003ccode\u003epull 2265\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2261: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003ecoveragepy/coveragepy#2261\u003c/a\u003e\n.. _pull 2262: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003ecoveragepy/coveragepy#2262\u003c/a\u003e\n.. _pull 2263: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003ecoveragepy/coveragepy#2263\u003c/a\u003e\n.. _pull 2265: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003ecoveragepy/coveragepy#2265\u003c/a\u003e\n.. _issue 2266: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003ecoveragepy/coveragepy#2266\u003c/a\u003e\n.. _pull 2268: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003ecoveragepy/coveragepy#2268\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3e9fc1653ef31089d02eb7618b9d9ac9414378fc\"\u003e\u003ccode\u003e3e9fc16\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/38be8d13afee6b6525492fc375c739cdfb675e9b\"\u003e\u003ccode\u003e38be8d1\u003c/code\u003e\u003c/a\u003e build: control check-manifest explicitly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8eb1266ead5c6d356d3437637a509ff86b566253\"\u003e\u003ccode\u003e8eb1266\u003c/code\u003e\u003c/a\u003e docs(build): no longer commit sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1a8b3fa57d56bb70bad62c93d224c18a0fbaae6f\"\u003e\u003ccode\u003e1a8b3fa\u003c/code\u003e\u003c/a\u003e docs: remove sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/aeaa79b812d1bc637ebb5582ab12c076e192c87e\"\u003e\u003ccode\u003eaeaa79b\u003c/code\u003e\u003c/a\u003e docs: linklint is now sphinx-linklint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d5eaf3f6d38f58746bc69e87e64c0b0277a9077d\"\u003e\u003ccode\u003ed5eaf3f\u003c/code\u003e\u003c/a\u003e test: a branchless way to re-add extensions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/57e52fd431cecc1ca03de2c5b1288e0b330c2ef4\"\u003e\u003ccode\u003e57e52fd\u003c/code\u003e\u003c/a\u003e docs: adjust CHANGES for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b9d304d77f7ce3d55df3a46339dbc56d1f49df58\"\u003e\u003ccode\u003eb9d304d\u003c/code\u003e\u003c/a\u003e fix: check for multiprocessing in a --concurrency list (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a6ef9284afbc7d1f392821864b64ddbda0051fc5\"\u003e\u003ccode\u003ea6ef928\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/070461fcfde0437b5b778c2c2a72e433a0a391aa\"\u003e\u003ccode\u003e070461f\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2271\"\u003e#2271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.1...7.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ek...\n\n_Description has been truncated_","html_url":"https://github.com/KScaesar/MaiAgent2026/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/KScaesar%2FMaiAgent2026/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/packages"},{"uuid":"5343309561","node_id":"PR_kwDOOke-mM8AAAABCI3CCw","number":22,"state":"closed","title":"Bump the python group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-07T01:58:05.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T01:56:54.000Z","updated_at":"2026-09-07T01:58:07.000Z","time_to_close":259271,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":15,"packages":[{"name":"django","old_version":"6.0.7","new_version":"6.1","repository_url":"https://github.com/django/django"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"gevent","old_version":"26.7.0","new_version":"26.8.0","repository_url":"https://github.com/gevent/gevent"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"redis","old_version":"8.0.1","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"sentry-sdk","old_version":"2.66.1","new_version":"2.68.1","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"django-stubs","old_version":"6.0.7","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.15.22","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.7` | `6.1` |\n| [django-anymail[mailgun]](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [gevent](https://github.com/gevent/gevent) | `26.7.0` | `26.8.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.2.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [redis](https://github.com/redis/redis-py) | `8.0.1` | `8.1.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.66.1` | `2.68.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.7` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.1` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.22` | `0.16.5` |\n\n\nUpdates `django` from 6.0.7 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fe0a859f537d4238cf49fca39073513206f83122\"\u003e\u003ccode\u003efe0a859\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/62770454c1beb3e9b0ef1f7c35c5670b4df935d8\"\u003e\u003ccode\u003e6277045\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated man page for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fc78c5cdbb621dff3893c109433022896022fde1\"\u003e\u003ccode\u003efc78c5c\u003c/code\u003e\u003c/a\u003e [6.1.x] Finalized release notes for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c58d86162cd59602df96f0e716cae9849acb3ddb\"\u003e\u003ccode\u003ec58d861\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dc1b8deff467010aaae71471ae12ebc82188a8a3\"\u003e\u003ccode\u003edc1b8de\u003c/code\u003e\u003c/a\u003e [6.1.x] Added missing lang override in translation fetching helper for Serbia...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1f5bf635df6f0919191f649aef29acb3063978f2\"\u003e\u003ccode\u003e1f5bf63\u003c/code\u003e\u003c/a\u003e [6.1.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36735\"\u003e#36735\u003c/a\u003e -- Added DatabaseFeatures.supports_uuid4_function_in_defa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/809998448b45284aa6152112feb46d927b209019\"\u003e\u003ccode\u003e8099984\u003c/code\u003e\u003c/a\u003e [6.1.x] Added CVE-2026-15307, CVE-2026-15337, CVE-2026-15830, and CVE-2026-15...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a\"\u003e\u003ccode\u003e5a260d3\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15920 -- Made display_for_field() validate URLs before...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/9e4a3f186b6b07b483bfd9195ea06734663fcd06\"\u003e\u003ccode\u003e9e4a3f1\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15830 -- Mitigated potential DoS via nested geometry c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5b3523d29be25948e1dd90b3863a002f00fc865f\"\u003e\u003ccode\u003e5b3523d\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15337 -- Mitigated potential DoS in check_for_language().\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.7...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail[mailgun]` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail[mailgun]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail[mailgun]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\nin Django's documentation for recommendations.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gevent` from 26.7.0 to 26.8.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/4f684105f537eeceb9988adbfe81420a1f28d9a0\"\u003e\u003ccode\u003e4f68410\u003c/code\u003e\u003c/a\u003e Preparing release 26.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/10489c56d3b03caae5be00bc46996a0180ab3d8c\"\u003e\u003ccode\u003e10489c5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gevent/gevent/issues/2199\"\u003e#2199\u003c/a\u003e from florentinl/florentin.labelle/fix/hubless-thread...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/d4f5f098c5d6655e9700336ed6f15e924a7fd142\"\u003e\u003ccode\u003ed4f5f09\u003c/code\u003e\u003c/a\u003e Document the args[0] cross-thread wakeup mechanism\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/9b049915e8e308e4286f922fd51baf9d92187a88\"\u003e\u003ccode\u003e9b04991\u003c/code\u003e\u003c/a\u003e Run test_cross_thread_callback_can_run_before_scheduling_returns on all backends\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/ce7996d7048d3555be2869cc6172d47e332efb58\"\u003e\u003ccode\u003ece7996d\u003c/code\u003e\u003c/a\u003e Address review comments: document cross-thread race, drop unneeded cpdef\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/5288a6eec90ca63f9658b44d67f14fbdfe07259d\"\u003e\u003ccode\u003e5288a6e\u003c/code\u003e\u003c/a\u003e Add missing \u003ca href=\"https://github.com/ignores\"\u003e\u003ccode\u003e@​ignores\u003c/code\u003e\u003c/a\u003e_leakcheck to new cross-thread test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/c72eda095d99e82ca0c767afe56baecbc4c131a2\"\u003e\u003ccode\u003ec72eda0\u003c/code\u003e\u003c/a\u003e Fix cross-thread notifier scheduling race\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/908b93730ffef5cee0594e4482b3a43b476c43a4\"\u003e\u003ccode\u003e908b937\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gevent/gevent/issues/2195\"\u003e#2195\u003c/a\u003e from ddorian/fix-popen-exit-reentrant-close\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/b58795f8a659e767b0317cd199d68f273b742167\"\u003e\u003ccode\u003eb58795f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gevent/gevent/issues/2191\"\u003e#2191\u003c/a\u003e from ddorian/fix-1865-global-shutdown-lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/ede2e71a859198b96a22f4c683fa210e750406e6\"\u003e\u003ccode\u003eede2e71\u003c/code\u003e\u003c/a\u003e Always use 'versionchanged:: NEXT' to let the release machinery fill in the c...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gevent/gevent/compare/26.7.0...26.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.1 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreams\u003c/strong\u003e — \u003ccode\u003eMAXCOUNT\u003c/code\u003e / \u003ccode\u003eMAXSIZE\u003c/code\u003e options for \u003ccode\u003eXREAD\u003c/code\u003e and \u003ccode\u003eXREADGROUP\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTime Series\u003c/strong\u003e — \u003ccode\u003eTS.READ\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e), \u003ccode\u003eTS.QUERYLABELS\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e), \u003ccode\u003eTS.NRANGE\u003c/code\u003e / \u003ccode\u003eTS.NREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e),\nand an \u003ccode\u003eexclude_empty\u003c/code\u003e (\u003ccode\u003eEXCLUDEEMPTY\u003c/code\u003e) option for \u003ccode\u003eTS.MRANGE\u003c/code\u003e / \u003ccode\u003eTS.MREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSearch\u003c/strong\u003e — \u003ccode\u003eFT.ALIASLIST\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e) and a \u003ccode\u003eCOLLECT\u003c/code\u003e reducer for aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSentinel\u003c/strong\u003e — replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TS.NRANGE and TS.NREVRANGE support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.READ command support to the timeseries module (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add SDIFFCARD and SUNIONCARD command support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add LMOVEM and BLMOVEM commands for moving multiple list elements (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add async maintenance-notifications support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add COLLECT reducer support to search aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and TS.MREVRANGE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.QUERYLABELS support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Experimental\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add client-side HIMPORT fieldset support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe feature considered unstable and \u003cstrong\u003epublic API might be changed in the future minor version\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: detect closed pooled connection without consuming pending push data (RESP3 + hiredis) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4156\"\u003e#4156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Sentinel pool capacity loss after failover (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4193\"\u003e#4193\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683\"\u003e\u003ccode\u003ee013126\u003c/code\u003e\u003c/a\u003e Testing with 8.10 GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4227\"\u003e#4227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1\"\u003e\u003ccode\u003e059d1e9\u003c/code\u003e\u003c/a\u003e Fixed TS.NRANGE commands to correctly apply aggregators (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4225\"\u003e#4225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f\"\u003e\u003ccode\u003ed486a0a\u003c/code\u003e\u003c/a\u003e Fix FIELDNAME alias dropping first character of un-prefixed fields (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4224\"\u003e#4224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2\"\u003e\u003ccode\u003efb93104\u003c/code\u003e\u003c/a\u003e feat: add client-side HIMPORT fieldset support for standalone and cluster cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9\"\u003e\u003ccode\u003e9197609\u003c/code\u003e\u003c/a\u003e Fix lat/lon swap in search querystring geo() helper (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb\"\u003e\u003ccode\u003e14714a0\u003c/code\u003e\u003c/a\u003e fix: Fixed double decoding issue with unquote() (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a\"\u003e\u003ccode\u003e227280a\u003c/code\u003e\u003c/a\u003e Update lib version to 8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056\"\u003e\u003ccode\u003e88d16d0\u003c/code\u003e\u003c/a\u003e Decode ACL LOG string values on the default RESP3 legacy callback (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4201\"\u003e#4201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76\"\u003e\u003ccode\u003e599fd75\u003c/code\u003e\u003c/a\u003e feat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7\"\u003e\u003ccode\u003e71e275e\u003c/code\u003e\u003c/a\u003e test: add VectorField RERANK serialization tests for sync and async search (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v8.0.1...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.66.1 to 2.68.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.68.1\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003eenable_logs\u003c/code\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e(logs) Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7237\"\u003e#7237\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e, our logging integrations for the standard library logging module as well as Loguru will auto-collect logs and send them to Sentry as Sentry logs by default, preserving old behavior. Turning automatic collection off for a specific integration can still be achieved using the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration option.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.logging import LoggingIntegration\nfrom sentry_sdk.integrations.loguru import LoguruIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\nenable_logs=True,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nLoggingIntegration(capture_sentry_logs=True),\u003cbr /\u003e\nLoguruIntegration(capture_sentry_logs=False),\u003cbr /\u003e\n],\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003ePlease note that the \u003ccode\u003eenable_logs\u003c/code\u003e option is deprecated and will be removed in the next major release. The \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API now works regardless of it, and auto-collection can be opted into via the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration-level options, which are \u003ccode\u003eFalse\u003c/code\u003e by default, unless you have \u003ccode\u003eenable_logs=True\u003c/code\u003e. We've added this compatibility layer to make the transition to a \u003ccode\u003eenable_logs\u003c/code\u003e-free world easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(django) Add \u003ccode\u003efailed_request_status_codes\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7140\"\u003e#7140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7207\"\u003e#7207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(google_genai) Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7210\"\u003e#7210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Use \u003ccode\u003egen_ai.tool.definitions\u003c/code\u003e attribute when data collection is enabled by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7204\"\u003e#7204\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph,huggingface_hub) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7208\"\u003e#7208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7205\"\u003e#7205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai_agents) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7209\"\u003e#7209\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.68.0\u003c/h2\u003e\n\u003ch3\u003eImportant\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWe're making \u003ccode\u003eenable_logs\u003c/code\u003e and \u003ccode\u003eenable_metrics\u003c/code\u003e no-op with this release (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7177\"\u003e#7177\u003c/a\u003e), and they'll be dropped in the next major.\u003c/p\u003e\n\u003cp\u003ePreviously, \u003ccode\u003eenable_logs\u003c/code\u003e also controlled automatic logs collection from the logging and Loguru integrations. These integrations now get an integration-level \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e boolean option to allow for more control over the auto-collection. These options are \u003ccode\u003eFalse\u003c/code\u003e by default, i.e., \u003cstrong\u003enothing is auto-collected without your explicit opt-in\u003c/strong\u003e.\u003c/p\u003e\n\u003ch4\u003eAction Needed\u003c/h4\u003e\n\u003cp\u003eIf you had \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf you were using the \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API, no action necessary, the API will just work.\u003c/li\u003e\n\u003cli\u003eIf you were auto-collecting logs from either \u003ccode\u003eLoggingIntegration\u003c/code\u003e or \u003ccode\u003eLoguruIntegration\u003c/code\u003e, the auto-collection \u003cstrong\u003ewill be turned off in this release\u003c/strong\u003e. You can switch auto-collection on explicitly with:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.logging import LoggingIntegration\nfrom sentry_sdk.integrations.loguru import LoguruIntegration\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.68.1\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003eenable_logs\u003c/code\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e(logs) Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7237\"\u003e#7237\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e, our logging integrations for the standard library logging module as well as Loguru will auto-collect logs and send them to Sentry as Sentry logs by default, preserving old behavior. Turning automatic collection off for a specific integration can still be achieved using the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration option.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.logging import LoggingIntegration\nfrom sentry_sdk.integrations.loguru import LoguruIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\nenable_logs=True,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nLoggingIntegration(capture_sentry_logs=True),\u003cbr /\u003e\nLoguruIntegration(capture_sentry_logs=False),\u003cbr /\u003e\n],\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003ePlease note that the \u003ccode\u003eenable_logs\u003c/code\u003e option is deprecated and will be removed in the next major release. The \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API now works regardless of it, and auto-collection can be opted into via the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration-level options, which are \u003ccode\u003eFalse\u003c/code\u003e by default, unless you have \u003ccode\u003eenable_logs=True\u003c/code\u003e. We've added this compatibility layer to make the transition to a \u003ccode\u003eenable_logs\u003c/code\u003e-free world easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(django) Add \u003ccode\u003efailed_request_status_codes\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7140\"\u003e#7140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7207\"\u003e#7207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(google_genai) Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7210\"\u003e#7210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Use \u003ccode\u003egen_ai.tool.definitions\u003c/code\u003e attribute when data collection is enabled by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7204\"\u003e#7204\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph,huggingface_hub) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7208\"\u003e#7208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7205\"\u003e#7205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai_agents) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7209\"\u003e#7209\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.68.0\u003c/h2\u003e\n\u003ch3\u003eImportant\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWe're making \u003ccode\u003eenable_logs\u003c/code\u003e and \u003ccode\u003eenable_metrics\u003c/code\u003e no-op with this release (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7177\"\u003e#7177\u003c/a\u003e), and they'll be dropped in the next major.\u003c/p\u003e\n\u003cp\u003ePreviously, \u003ccode\u003eenable_logs\u003c/code\u003e also controlled automatic logs collection from the logging and Loguru integrations. These integrations now get an integration-level \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e boolean option to allow for more control over the auto-collection. These options are \u003ccode\u003eFalse\u003c/code\u003e by default, i.e., \u003cstrong\u003enothing is auto-collected without your explicit opt-in\u003c/strong\u003e.\u003c/p\u003e\n\u003ch4\u003eAction Needed\u003c/h4\u003e\n\u003cp\u003eIf you had \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf you were using the \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API, no action necessary, the API will just work.\u003c/li\u003e\n\u003cli\u003eIf you were auto-collecting logs from either \u003ccode\u003eLoggingIntegration\u003c/code\u003e or \u003ccode\u003eLoguruIntegration\u003c/code\u003e, the auto-collection \u003cstrong\u003ewill be turned off in this release\u003c/strong\u003e. You can switch auto-collection on explicitly with:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e\u003c/code\u003e\u003c/pre\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/getsentry/sentry-python/commit/98f7d91809e71ed5a7b827f8b4f9acfc7ac1bae0\"\u003e\u003ccode\u003e98f7d91\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/8f886ff9b784da7c45f51a0dfbe42c7838e68c42\"\u003e\u003ccode\u003e8f886ff\u003c/code\u003e\u003c/a\u003e release: 2.68.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/df4ec02a1b4bfc50f6218908fe497dd0ec566801\"\u003e\u003ccode\u003edf4ec02\u003c/code\u003e\u003c/a\u003e fix(logs): Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e32031816394208bce58c050ff563bfde8d7b228\"\u003e\u003ccode\u003ee320318\u003c/code\u003e\u003c/a\u003e test(pyramid): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7218\"\u003e#7218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7b8a3857122d0a9c69aca784bd730bb0dcf729f6\"\u003e\u003ccode\u003e7b8a385\u003c/code\u003e\u003c/a\u003e test(bottle): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7217\"\u003e#7217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/cbcadc9cba1295fb78a90a2823d6fbd36bce1ba3\"\u003e\u003ccode\u003ecbcadc9\u003c/code\u003e\u003c/a\u003e test(sanic): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7216\"\u003e#7216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e42c798e0cd549b42bc748a53c7e16c2763ec427\"\u003e\u003ccode\u003ee42c798\u003c/code\u003e\u003c/a\u003e feat(tornado): Gate request body collection on data_collection option (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7215\"\u003e#7215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/d05bb60e0d9ecc66b2cc8b62ba0cfc0eaa343088\"\u003e\u003ccode\u003ed05bb60\u003c/code\u003e\u003c/a\u003e test(django): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7213\"\u003e#7213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/bcce67b1a6869229a0c74bcd93e4b8bcfde5cc7a\"\u003e\u003ccode\u003ebcce67b\u003c/code\u003e\u003c/a\u003e feat(wsgi): Gate request body collection on data_collection option (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7212\"\u003e#7212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/41220c4adba83c307aabae28057db830808adb3a\"\u003e\u003ccode\u003e41220c4\u003c/code\u003e\u003c/a\u003e fix(google_genai): Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, no...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.66.1...2.68.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.7 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\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/typeddjango/django-stubs/commit/2ec3fd3ce48e7a92cbe09a114d512dcea50571f7\"\u003e\u003ccode\u003e2ec3fd3\u003c/code\u003e\u003c/a\u003e Version 6.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5868773c9fa5ba236c2cc263799a02acc67f7c0b\"\u003e\u003ccode\u003e5868773\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.69.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3588\"\u003e#3588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e888491e34e5b9073f1c09eb84e91ed7ce36c775\"\u003e\u003ccode\u003ee888491\u003c/code\u003e\u003c/a\u003e Support custom arguments in queryset update methods (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3586\"\u003e#3586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ffd15cac28c39690acd98c3f9af9370f9fadedce\"\u003e\u003ccode\u003effd15ca\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3583\"\u003e#3583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1af6dcf52f19837fdc47b26350d351dea0a139c1\"\u003e\u003ccode\u003e1af6dcf\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.68.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/709e864c79e03239be2234457f59eb66ce69e3c7\"\u003e\u003ccode\u003e709e864\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.69 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5da937c127b581501b5707b547d861b46d8af41c\"\u003e\u003ccode\u003e5da937c\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.68 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3579\"\u003e#3579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7afd2da77ed93d0b3164ea4d203648a6c972f161\"\u003e\u003ccode\u003e7afd2da\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.67 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/07e22f2e4918163d1f3aa1137142cf281b5fbcb1\"\u003e\u003ccode\u003e07e22f2\u003c/code\u003e\u003c/a\u003e Explicit through default manager (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3576\"\u003e#3576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/db47c3b32275b6d6abef915303fd80fde3dd59da\"\u003e\u003ccode\u003edb47c3b\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.17 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.7...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.31.1 to 1.32.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.32.0 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#681](https://github.com/adamchainz/django-upgrade/issues/681) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/681\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eutils_text \u0026lt;utils_text\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003eunescape_entities()\u003c/code\u003e calls with \u003ccode\u003ehtml.unescape()\u003c/code\u003e.\nPreviously it incorrectly used \u003ccode\u003ehtml.escape()\u003c/code\u003e, which performs the inverse operation.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#684](https://github.com/adamchainz/django-upgrade/issues/684) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/684\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer crash on empty \u003ccode\u003eindex_together\u003c/code\u003e declarations.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#685](https://github.com/adamchainz/django-upgrade/issues/685) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/685\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to not add a duplicate \u003ccode\u003eindexes\u003c/code\u003e declaration when the existing one is not a list or tuple literal.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#686](https://github.com/adamchainz/django-upgrade/issues/686) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/686\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to add a missing comma when extending a multiline \u003ccode\u003eindexes\u003c/code\u003e list that has no trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#687](https://github.com/adamchainz/django-upgrade/issues/687) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/687\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to keep an empty \u003ccode\u003eindexes\u003c/code\u003e tuple a tuple when extending it with a single index.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#716](https://github.com/adamchainz/django-upgrade/issues/716) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/716\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eformat_html \u0026lt;format_html\u0026gt;\u003c/code\u003e fixer to skip calls with a parenthesized argument, where removing the \u003ccode\u003e.format()\u003c/code\u003e call would create a tuple.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#717](https://github.com/adamchainz/django-upgrade/issues/717) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/717\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer to add a missing comma before \u003ccode\u003enull=True\u003c/code\u003e when the final argument contains commas within brackets.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#688](https://github.com/adamchainz/django-upgrade/issues/688) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/688\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix fixers that modify call arguments to not treat a comment inside otherwise empty parentheses as an argument, which made the :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer produce invalid syntax.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#718](https://github.com/adamchainz/django-upgrade/issues/718) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/718\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to avoid a double comma when the existing \u003ccode\u003eheaders=\u003c/code\u003e dict has a trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#689](https://github.com/adamchainz/django-upgrade/issues/689) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/689\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to insert converted headers at the start of an existing \u003ccode\u003eheaders=\u003c/code\u003e dict.\nDjango gives \u003ccode\u003eheaders=\u003c/code\u003e entries precedence over \u003ccode\u003eHTTP_\u003c/code\u003e arguments, and the last duplicate key wins in a dict literal, so appending converted entries at the end previously flipped which value took effect.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#723](https://github.com/adamchainz/django-upgrade/issues/723) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/723\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etestcase_databases \u0026lt;testcase_databases\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003emulti_db = False\u003c/code\u003e to \u003ccode\u003edatabases = [\u0026quot;default\u0026quot;]\u003c/code\u003e rather than \u003ccode\u003edatabases = []\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/423ab5081e037d3c692113d654d49ea9e3ee0066\"\u003e\u003ccode\u003e423ab50\u003c/code\u003e\u003c/a\u003e Version 1.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7b1224a970289729eb50a1fffca04844a8c1ab1f\"\u003e\u003ccode\u003e7b1224a\u003c/code\u003e\u003c/a\u003e Tidy changelog (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/63607890eb3090bded91c6432b43948a1757bd1e\"\u003e\u003ccode\u003e6360789\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eforms_model_multiple_choice_field\u003c/code\u003e corrupting concatenated keys (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/02a46831ceb213421761f312e1368fa7b7e796d9\"\u003e\u003ccode\u003e02a4683\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etestcase_databases\u003c/code\u003e mapping of \u003ccode\u003emulti_db = False\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/bc85eb958b63b752cbd7454d6378e51ca50d891d\"\u003e\u003ccode\u003ebc85eb9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_decorators\u003c/code\u003e hoisting values above their definitions (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/4eb5abf3734ba10c96dd53abdf98e50c78c4adae\"\u003e\u003ccode\u003e4eb5abf\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_register\u003c/code\u003e referencing models defined after the admin class (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d782084a4fe43286d6b4b2d11676efad0a1356cb\"\u003e\u003ccode\u003ed782084\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003esettings_storages\u003c/code\u003e erasing settings referenced elsewhere (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/2f3eb7571f87ae8c62389ac8f977935f81fbe58e\"\u003e\u003ccode\u003e2f3eb75\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etest_http_headers\u003c/code\u003e precedence when merging into \u003ccode\u003eheaders=\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/723\"\u003e#723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d750615a98098ff0c44477041932a04089d5aa47\"\u003e\u003ccode\u003ed750615\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003estringagg\u003c/code\u003e moving import despite bare \u003ccode\u003eStringAgg\u003c/code\u003e references (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/722\"\u003e#722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/49cb8b9c2297d329a8f858beb54fb34e7274830a\"\u003e\u003ccode\u003e49cb8b9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eutils_timezone\u003c/code\u003e matching aliased \u003ccode\u003eutc\u003c/code\u003e imports (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/720\"\u003e#720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/django-upgrade/compare/1.31.1...1.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframe...\n\n_Description has been truncated_","html_url":"https://github.com/mpeyfuss/drf-template/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpeyfuss%2Fdrf-template/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/packages"},{"uuid":"5319545947","node_id":"PR_kwDOUK975c8AAAABB12lLQ","number":6,"state":"closed","title":"Bump the python group with 6 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T04:00:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-02T03:58:39.000Z","updated_at":"2026-09-04T04:00:28.000Z","time_to_close":172907,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":6,"packages":[{"name":"gunicorn","old_version":"26.1.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"sentry-sdk","old_version":"2.68.0","new_version":"2.68.1","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"uvicorn","old_version":"0.52.3","new_version":"0.52.4"},{"name":"coverage","old_version":"7.15.4","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"djangorestframework-stubs","old_version":"3.18.0","new_version":"3.18.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.16.3","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.1.0` | `26.2.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.68.0` | `2.68.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.52.3` | `0.52.4` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.4` | `7.16.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.18.0` | `3.18.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.3` | `0.16.5` |\n\nUpdates `gunicorn` from 26.1.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.1.0...26.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.68.0 to 2.68.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.68.1\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003eenable_logs\u003c/code\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e(logs) Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7237\"\u003e#7237\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e, our logging integrations for the standard library logging module as well as Loguru will auto-collect logs and send them to Sentry as Sentry logs by default, preserving old behavior. Turning automatic collection off for a specific integration can still be achieved using the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration option.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.logging import LoggingIntegration\nfrom sentry_sdk.integrations.loguru import LoguruIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\nenable_logs=True,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nLoggingIntegration(capture_sentry_logs=True),\u003cbr /\u003e\nLoguruIntegration(capture_sentry_logs=False),\u003cbr /\u003e\n],\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003ePlease note that the \u003ccode\u003eenable_logs\u003c/code\u003e option is deprecated and will be removed in the next major release. The \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API now works regardless of it, and auto-collection can be opted into via the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration-level options, which are \u003ccode\u003eFalse\u003c/code\u003e by default, unless you have \u003ccode\u003eenable_logs=True\u003c/code\u003e. We've added this compatibility layer to make the transition to a \u003ccode\u003eenable_logs\u003c/code\u003e-free world easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(django) Add \u003ccode\u003efailed_request_status_codes\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7140\"\u003e#7140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7207\"\u003e#7207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(google_genai) Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7210\"\u003e#7210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Use \u003ccode\u003egen_ai.tool.definitions\u003c/code\u003e attribute when data collection is enabled by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7204\"\u003e#7204\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph,huggingface_hub) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7208\"\u003e#7208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7205\"\u003e#7205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai_agents) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7209\"\u003e#7209\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/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.68.1\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003eenable_logs\u003c/code\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e(logs) Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7237\"\u003e#7237\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e, our logging integrations for the standard library logging module as well as Loguru will auto-collect logs and send them to Sentry as Sentry logs by default, preserving old behavior. Turning automatic collection off for a specific integration can still be achieved using the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration option.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.logging import LoggingIntegration\nfrom sentry_sdk.integrations.loguru import LoguruIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\nenable_logs=True,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nLoggingIntegration(capture_sentry_logs=True),\u003cbr /\u003e\nLoguruIntegration(capture_sentry_logs=False),\u003cbr /\u003e\n],\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003ePlease note that the \u003ccode\u003eenable_logs\u003c/code\u003e option is deprecated and will be removed in the next major release. The \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API now works regardless of it, and auto-collection can be opted into via the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration-level options, which are \u003ccode\u003eFalse\u003c/code\u003e by default, unless you have \u003ccode\u003eenable_logs=True\u003c/code\u003e. We've added this compatibility layer to make the transition to a \u003ccode\u003eenable_logs\u003c/code\u003e-free world easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(django) Add \u003ccode\u003efailed_request_status_codes\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7140\"\u003e#7140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7207\"\u003e#7207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(google_genai) Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7210\"\u003e#7210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Use \u003ccode\u003egen_ai.tool.definitions\u003c/code\u003e attribute when data collection is enabled by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7204\"\u003e#7204\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph,huggingface_hub) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7208\"\u003e#7208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7205\"\u003e#7205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai_agents) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7209\"\u003e#7209\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/getsentry/sentry-python/commit/98f7d91809e71ed5a7b827f8b4f9acfc7ac1bae0\"\u003e\u003ccode\u003e98f7d91\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/8f886ff9b784da7c45f51a0dfbe42c7838e68c42\"\u003e\u003ccode\u003e8f886ff\u003c/code\u003e\u003c/a\u003e release: 2.68.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/df4ec02a1b4bfc50f6218908fe497dd0ec566801\"\u003e\u003ccode\u003edf4ec02\u003c/code\u003e\u003c/a\u003e fix(logs): Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e32031816394208bce58c050ff563bfde8d7b228\"\u003e\u003ccode\u003ee320318\u003c/code\u003e\u003c/a\u003e test(pyramid): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7218\"\u003e#7218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7b8a3857122d0a9c69aca784bd730bb0dcf729f6\"\u003e\u003ccode\u003e7b8a385\u003c/code\u003e\u003c/a\u003e test(bottle): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7217\"\u003e#7217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/cbcadc9cba1295fb78a90a2823d6fbd36bce1ba3\"\u003e\u003ccode\u003ecbcadc9\u003c/code\u003e\u003c/a\u003e test(sanic): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7216\"\u003e#7216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e42c798e0cd549b42bc748a53c7e16c2763ec427\"\u003e\u003ccode\u003ee42c798\u003c/code\u003e\u003c/a\u003e feat(tornado): Gate request body collection on data_collection option (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7215\"\u003e#7215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/d05bb60e0d9ecc66b2cc8b62ba0cfc0eaa343088\"\u003e\u003ccode\u003ed05bb60\u003c/code\u003e\u003c/a\u003e test(django): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7213\"\u003e#7213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/bcce67b1a6869229a0c74bcd93e4b8bcfde5cc7a\"\u003e\u003ccode\u003ebcce67b\u003c/code\u003e\u003c/a\u003e feat(wsgi): Gate request body collection on data_collection option (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7212\"\u003e#7212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/41220c4adba83c307aabae28057db830808adb3a\"\u003e\u003ccode\u003e41220c4\u003c/code\u003e\u003c/a\u003e fix(google_genai): Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, no...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.68.0...2.68.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.52.3 to 0.52.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\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.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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.4 to 7.16.0\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.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\u003c/blockquote\u003e\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.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\nreach the subprocesses.  The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as\nthe entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e\nslipped through and failed later with \u0026quot;Can't combine statement coverage\ndata with branch data\u0026quot;.  Each named concurrency library is now properly\nconsidered (\u003ccode\u003epull 2270\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any\nmeasured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on\nWindows.  The original extension is now restored on the annotated copy (\u003ccode\u003epull 2265\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2261: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003ecoveragepy/coveragepy#2261\u003c/a\u003e\n.. _pull 2262: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003ecoveragepy/coveragepy#2262\u003c/a\u003e\n.. _pull 2263: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003ecoveragepy/coveragepy#2263\u003c/a\u003e\n.. _pull 2265: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003ecoveragepy/coveragepy#2265\u003c/a\u003e\n.. _issue 2266: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003ecoveragepy/coveragepy#2266\u003c/a\u003e\n.. _pull 2268: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003ecoveragepy/coveragepy#2268\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3e9fc1653ef31089d02eb7618b9d9ac9414378fc\"\u003e\u003ccode\u003e3e9fc16\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/38be8d13afee6b6525492fc375c739cdfb675e9b\"\u003e\u003ccode\u003e38be8d1\u003c/code\u003e\u003c/a\u003e build: control check-manifest explicitly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8eb1266ead5c6d356d3437637a509ff86b566253\"\u003e\u003ccode\u003e8eb1266\u003c/code\u003e\u003c/a\u003e docs(build): no longer commit sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1a8b3fa57d56bb70bad62c93d224c18a0fbaae6f\"\u003e\u003ccode\u003e1a8b3fa\u003c/code\u003e\u003c/a\u003e docs: remove sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/aeaa79b812d1bc637ebb5582ab12c076e192c87e\"\u003e\u003ccode\u003eaeaa79b\u003c/code\u003e\u003c/a\u003e docs: linklint is now sphinx-linklint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d5eaf3f6d38f58746bc69e87e64c0b0277a9077d\"\u003e\u003ccode\u003ed5eaf3f\u003c/code\u003e\u003c/a\u003e test: a branchless way to re-add extensions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/57e52fd431cecc1ca03de2c5b1288e0b330c2ef4\"\u003e\u003ccode\u003e57e52fd\u003c/code\u003e\u003c/a\u003e docs: adjust CHANGES for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b9d304d77f7ce3d55df3a46339dbc56d1f49df58\"\u003e\u003ccode\u003eb9d304d\u003c/code\u003e\u003c/a\u003e fix: check for multiprocessing in a --concurrency list (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a6ef9284afbc7d1f392821864b64ddbda0051fc5\"\u003e\u003ccode\u003ea6ef928\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/070461fcfde0437b5b778c2c2a72e433a0a391aa\"\u003e\u003ccode\u003e070461f\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2271\"\u003e#2271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.4...7.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.18.0 to 3.18.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.1\u003c/h2\u003e\n\u003cp\u003eThis release dropped Python 3.10 support, following django-stubs upstream (requires Python 3.11+ now).\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark stub-only synthetic types with \u003ccode\u003e@type_check_only\u003c/code\u003e by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1038\"\u003etypeddjango/djangorestframework-stubs#1038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1047\"\u003etypeddjango/djangorestframework-stubs#1047\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e types by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1049\"\u003etypeddjango/djangorestframework-stubs#1049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.10 support by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1035\"\u003etypeddjango/djangorestframework-stubs#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCleanup Python 3.10 compatibility by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1036\"\u003etypeddjango/djangorestframework-stubs#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCategorize stubtest allowlist_todo.txt entries by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1037\"\u003etypeddjango/djangorestframework-stubs#1037\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1039\"\u003etypeddjango/djangorestframework-stubs#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.1 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1050\"\u003etypeddjango/djangorestframework-stubs#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/11062a8e197e9b003e0b1d1a63a930bf0ceed2c0\"\u003e\u003ccode\u003e11062a8\u003c/code\u003e\u003c/a\u003e Version 3.18.1 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/1d74beaf94c86427d4fe0f9269c46e1457881cfa\"\u003e\u003ccode\u003e1d74bea\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd11a58c5cecad38202d3b89c030182ab89596dd\"\u003e\u003ccode\u003efd11a58\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd549233349d09f98979e57812072e8909309b65\"\u003e\u003ccode\u003efd54923\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1047\"\u003e#1047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/33361020c2aecfee710c5a4e6c25dbf6d8603314\"\u003e\u003ccode\u003e3336102\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/e4c9d11557dacb19a3e34791e9c7908397fe318e\"\u003e\u003ccode\u003ee4c9d11\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/3410442d566a2d6ae8058b2881fb2adbf86c259a\"\u003e\u003ccode\u003e3410442\u003c/code\u003e\u003c/a\u003e Bump sqlparse from 0.5.5 to 0.6.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/36692fc5a7ee1c87df369c1dc64c84ea9879b4c7\"\u003e\u003ccode\u003e36692fc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1041\"\u003e#1041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/5247f84db1b5e2b47abc736b0164f4fc4cf58f72\"\u003e\u003ccode\u003e5247f84\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10.0.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/603aa1241e8175cc1cfbc1ade9020b047a9cae2d\"\u003e\u003ccode\u003e603aa12\u003c/code\u003e\u003c/a\u003e Fix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.16.3 to 0.16.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b\"\u003e\u003ccode\u003eeb78048\u003c/code\u003e\u003c/a\u003e [ty] Bump ecosystem-analyzer for HTML escaping (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28104\"\u003e#28104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.3...0.16.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/Muji-24/TeamBoards/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Muji-24%2FTeamBoards/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"},{"uuid":"5317136079","node_id":"PR_kwDOT1EvT88AAAABBz-G5w","number":16,"state":"closed","title":"Bump the python group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T21:36:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-01T21:43:46.000Z","updated_at":"2026-09-04T21:36:48.000Z","time_to_close":258780,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":12,"packages":[{"name":"django","old_version":"6.0.8","new_version":"6.1","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.19.0","new_version":"65.19.1"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"coverage","old_version":"7.15.4","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.9","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.13.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.16.2","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.8` | `6.1` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.19.0` | `65.19.1` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.2.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.4` | `7.16.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.9` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.1` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.13.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.2` | `0.16.5` |\n\n\nUpdates `django` from 6.0.8 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fe0a859f537d4238cf49fca39073513206f83122\"\u003e\u003ccode\u003efe0a859\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/62770454c1beb3e9b0ef1f7c35c5670b4df935d8\"\u003e\u003ccode\u003e6277045\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated man page for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fc78c5cdbb621dff3893c109433022896022fde1\"\u003e\u003ccode\u003efc78c5c\u003c/code\u003e\u003c/a\u003e [6.1.x] Finalized release notes for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c58d86162cd59602df96f0e716cae9849acb3ddb\"\u003e\u003ccode\u003ec58d861\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dc1b8deff467010aaae71471ae12ebc82188a8a3\"\u003e\u003ccode\u003edc1b8de\u003c/code\u003e\u003c/a\u003e [6.1.x] Added missing lang override in translation fetching helper for Serbia...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1f5bf635df6f0919191f649aef29acb3063978f2\"\u003e\u003ccode\u003e1f5bf63\u003c/code\u003e\u003c/a\u003e [6.1.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36735\"\u003e#36735\u003c/a\u003e -- Added DatabaseFeatures.supports_uuid4_function_in_defa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/809998448b45284aa6152112feb46d927b209019\"\u003e\u003ccode\u003e8099984\u003c/code\u003e\u003c/a\u003e [6.1.x] Added CVE-2026-15307, CVE-2026-15337, CVE-2026-15830, and CVE-2026-15...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a\"\u003e\u003ccode\u003e5a260d3\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15920 -- Made display_for_field() validate URLs before...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/9e4a3f186b6b07b483bfd9195ea06734663fcd06\"\u003e\u003ccode\u003e9e4a3f1\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15830 -- Mitigated potential DoS via nested geometry c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5b3523d29be25948e1dd90b3863a002f00fc865f\"\u003e\u003ccode\u003e5b3523d\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15337 -- Mitigated potential DoS in check_for_language().\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.8...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.19.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.4 to 7.16.0\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.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\u003c/blockquote\u003e\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.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\nreach the subprocesses.  The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as\nthe entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e\nslipped through and failed later with \u0026quot;Can't combine statement coverage\ndata with branch data\u0026quot;.  Each named concurrency library is now properly\nconsidered (\u003ccode\u003epull 2270\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any\nmeasured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on\nWindows.  The original extension is now restored on the annotated copy (\u003ccode\u003epull 2265\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2261: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003ecoveragepy/coveragepy#2261\u003c/a\u003e\n.. _pull 2262: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003ecoveragepy/coveragepy#2262\u003c/a\u003e\n.. _pull 2263: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003ecoveragepy/coveragepy#2263\u003c/a\u003e\n.. _pull 2265: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003ecoveragepy/coveragepy#2265\u003c/a\u003e\n.. _issue 2266: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003ecoveragepy/coveragepy#2266\u003c/a\u003e\n.. _pull 2268: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003ecoveragepy/coveragepy#2268\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3e9fc1653ef31089d02eb7618b9d9ac9414378fc\"\u003e\u003ccode\u003e3e9fc16\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/38be8d13afee6b6525492fc375c739cdfb675e9b\"\u003e\u003ccode\u003e38be8d1\u003c/code\u003e\u003c/a\u003e build: control check-manifest explicitly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8eb1266ead5c6d356d3437637a509ff86b566253\"\u003e\u003ccode\u003e8eb1266\u003c/code\u003e\u003c/a\u003e docs(build): no longer commit sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1a8b3fa57d56bb70bad62c93d224c18a0fbaae6f\"\u003e\u003ccode\u003e1a8b3fa\u003c/code\u003e\u003c/a\u003e docs: remove sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/aeaa79b812d1bc637ebb5582ab12c076e192c87e\"\u003e\u003ccode\u003eaeaa79b\u003c/code\u003e\u003c/a\u003e docs: linklint is now sphinx-linklint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d5eaf3f6d38f58746bc69e87e64c0b0277a9077d\"\u003e\u003ccode\u003ed5eaf3f\u003c/code\u003e\u003c/a\u003e test: a branchless way to re-add extensions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/57e52fd431cecc1ca03de2c5b1288e0b330c2ef4\"\u003e\u003ccode\u003e57e52fd\u003c/code\u003e\u003c/a\u003e docs: adjust CHANGES for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b9d304d77f7ce3d55df3a46339dbc56d1f49df58\"\u003e\u003ccode\u003eb9d304d\u003c/code\u003e\u003c/a\u003e fix: check for multiprocessing in a --concurrency list (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a6ef9284afbc7d1f392821864b64ddbda0051fc5\"\u003e\u003ccode\u003ea6ef928\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/070461fcfde0437b5b778c2c2a72e433a0a391aa\"\u003e\u003ccode\u003e070461f\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2271\"\u003e#2271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.4...7.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003cli\u003eImproved cache hit/miss reporting in the Cache panel for \u003ccode\u003ecache.get()\u003c/code\u003e\ncalls with a supplied default value, while documenting the remaining\nambiguity when a cached value equals the supplied default.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f307de14d1a533273b6de7bd39579b043eb54a99\"\u003e\u003ccode\u003ef307de1\u003c/code\u003e\u003c/a\u003e Version 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/73951a4c517bafa5369228f2fca8306510f1cbf1\"\u003e\u003ccode\u003e73951a4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2439\"\u003e#2439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/678b687e0a30c2657dc21b1d859d1141098997a0\"\u003e\u003ccode\u003e678b687\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/7627683d89fc1c77bc2dc4550f15eede9a86cee6\"\u003e\u003ccode\u003e7627683\u003c/code\u003e\u003c/a\u003e Serialize the TaskResult class for Tasks panel. (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2444\"\u003e#2444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.9 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/2ec3fd3ce48e7a92cbe09a114d512dcea50571f7\"\u003e\u003ccode\u003e2ec3fd3\u003c/code\u003e\u003c/a\u003e Version 6.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5868773c9fa5ba236c2cc263799a02acc67f7c0b\"\u003e\u003ccode\u003e5868773\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.69.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3588\"\u003e#3588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e888491e34e5b9073f1c09eb84e91ed7ce36c775\"\u003e\u003ccode\u003ee888491\u003c/code\u003e\u003c/a\u003e Support custom arguments in queryset update methods (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3586\"\u003e#3586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ffd15cac28c39690acd98c3f9af9370f9fadedce\"\u003e\u003ccode\u003effd15ca\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3583\"\u003e#3583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1af6dcf52f19837fdc47b26350d351dea0a139c1\"\u003e\u003ccode\u003e1af6dcf\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.68.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/709e864c79e03239be2234457f59eb66ce69e3c7\"\u003e\u003ccode\u003e709e864\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.69 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5da937c127b581501b5707b547d861b46d8af41c\"\u003e\u003ccode\u003e5da937c\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.68 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3579\"\u003e#3579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7afd2da77ed93d0b3164ea4d203648a6c972f161\"\u003e\u003ccode\u003e7afd2da\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.67 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/07e22f2e4918163d1f3aa1137142cf281b5fbcb1\"\u003e\u003ccode\u003e07e22f2\u003c/code\u003e\u003c/a\u003e Explicit through default manager (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3576\"\u003e#3576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/db47c3b32275b6d6abef915303fd80fde3dd59da\"\u003e\u003ccode\u003edb47c3b\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.17 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.31.1 to 1.32.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.32.0 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#681](https://github.com/adamchainz/django-upgrade/issues/681) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/681\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eutils_text \u0026lt;utils_text\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003eunescape_entities()\u003c/code\u003e calls with \u003ccode\u003ehtml.unescape()\u003c/code\u003e.\nPreviously it incorrectly used \u003ccode\u003ehtml.escape()\u003c/code\u003e, which performs the inverse operation.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#684](https://github.com/adamchainz/django-upgrade/issues/684) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/684\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer crash on empty \u003ccode\u003eindex_together\u003c/code\u003e declarations.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#685](https://github.com/adamchainz/django-upgrade/issues/685) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/685\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to not add a duplicate \u003ccode\u003eindexes\u003c/code\u003e declaration when the existing one is not a list or tuple literal.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#686](https://github.com/adamchainz/django-upgrade/issues/686) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/686\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to add a missing comma when extending a multiline \u003ccode\u003eindexes\u003c/code\u003e list that has no trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#687](https://github.com/adamchainz/django-upgrade/issues/687) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/687\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to keep an empty \u003ccode\u003eindexes\u003c/code\u003e tuple a tuple when extending it with a single index.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#716](https://github.com/adamchainz/django-upgrade/issues/716) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/716\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eformat_html \u0026lt;format_html\u0026gt;\u003c/code\u003e fixer to skip calls with a parenthesized argument, where removing the \u003ccode\u003e.format()\u003c/code\u003e call would create a tuple.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#717](https://github.com/adamchainz/django-upgrade/issues/717) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/717\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer to add a missing comma before \u003ccode\u003enull=True\u003c/code\u003e when the final argument contains commas within brackets.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#688](https://github.com/adamchainz/django-upgrade/issues/688) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/688\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix fixers that modify call arguments to not treat a comment inside otherwise empty parentheses as an argument, which made the :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer produce invalid syntax.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#718](https://github.com/adamchainz/django-upgrade/issues/718) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/718\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to avoid a double comma when the existing \u003ccode\u003eheaders=\u003c/code\u003e dict has a trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#689](https://github.com/adamchainz/django-upgrade/issues/689) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/689\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to insert converted headers at the start of an existing \u003ccode\u003eheaders=\u003c/code\u003e dict.\nDjango gives \u003ccode\u003eheaders=\u003c/code\u003e entries precedence over \u003ccode\u003eHTTP_\u003c/code\u003e arguments, and the last duplicate key wins in a dict literal, so appending converted entries at the end previously flipped which value took effect.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#723](https://github.com/adamchainz/django-upgrade/issues/723) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/723\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etestcase_databases \u0026lt;testcase_databases\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003emulti_db = False\u003c/code\u003e to \u003ccode\u003edatabases = [\u0026quot;default\u0026quot;]\u003c/code\u003e rather than \u003ccode\u003edatabases = []\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/423ab5081e037d3c692113d654d49ea9e3ee0066\"\u003e\u003ccode\u003e423ab50\u003c/code\u003e\u003c/a\u003e Version 1.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7b1224a970289729eb50a1fffca04844a8c1ab1f\"\u003e\u003ccode\u003e7b1224a\u003c/code\u003e\u003c/a\u003e Tidy changelog (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/63607890eb3090bded91c6432b43948a1757bd1e\"\u003e\u003ccode\u003e6360789\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eforms_model_multiple_choice_field\u003c/code\u003e corrupting concatenated keys (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/02a46831ceb213421761f312e1368fa7b7e796d9\"\u003e\u003ccode\u003e02a4683\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etestcase_databases\u003c/code\u003e mapping of \u003ccode\u003emulti_db = False\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/bc85eb958b63b752cbd7454d6378e51ca50d891d\"\u003e\u003ccode\u003ebc85eb9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_decorators\u003c/code\u003e hoisting values above their definitions (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/4eb5abf3734ba10c96dd53abdf98e50c78c4adae\"\u003e\u003ccode\u003e4eb5abf\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_register\u003c/code\u003e referencing models defined after the admin class (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d782084a4fe43286d6b4b2d11676efad0a1356cb\"\u003e\u003ccode\u003ed782084\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003esettings_storages\u003c/code\u003e erasing settings referenced elsewhere (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/2f3eb7571f87ae8c62389ac8f977935f81fbe58e\"\u003e\u003ccode\u003e2f3eb75\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etest_http_headers\u003c/code\u003e precedence when merging into \u003ccode\u003eheaders=\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/723\"\u003e#723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d750615a98098ff0c44477041932a04089d5aa47\"\u003e\u003ccode\u003ed750615\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003estringagg\u003c/code\u003e moving import despite bare \u003ccode\u003eStringAgg\u003c/code\u003e references (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/722\"\u003e#722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/49cb8b9c2297d329a8f858beb54fb34e7274830a\"\u003e\u003ccode\u003e49cb8b9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eutils_timezone\u003c/code\u003e matching aliased \u003ccode\u003eutc\u003c/code\u003e imports (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/720\"\u003e#720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/django-upgrade/compare/1.31.1...1.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.17.1 to 3.18.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.1\u003c/h2\u003e\n\u003cp\u003eThis release dropped Python 3.10 support, following django-stubs upstream (requires Python 3.11+ now).\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark stub-only synthetic types with \u003ccode\u003e@type_check_only\u003c/code\u003e by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1038\"\u003etypeddjango/djangorestframework-stubs#1038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1047\"\u003etypeddjango/djangorestframework-stubs#1047\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e types by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1049\"\u003etypeddjango/djangorestframework-stubs#1049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.10 support by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1035\"\u003etypeddjango/djangorestframework-stubs#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCleanup Python 3.10 compatibility by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1036\"\u003etypeddjango/djangorestframework-stubs#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCategorize stubtest allowlist_todo.txt entries by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1037\"\u003etypeddjango/djangorestframework-stubs#1037\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1039\"\u003etypeddjango/djangorestframework-stubs#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.1 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1050\"\u003etypeddjango/djangorestframework-stubs#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThis is the first version to be based on DRF 3.18\u003c/li\u003e\n\u003cli\u003eThis is the last version to support \u003ccode\u003edjango-stubs\u003c/code\u003e 6.0.x - next release will require 6.1.x\u003c/li\u003e\n\u003cli\u003eThis is the last version to support Python 3.10 - following django-stubs upstream\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop obsolete coreapi/coreschema from stubs (removed in DRF 3.17) by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1025\"\u003etypeddjango/djangorestframework-stubs#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate stubs for djangorestframework 3.18.0 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1030\"\u003etypeddjango/djangorestframework-stubs#1030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUnlock django-stubs dev dependency pinning in pyproject.toml by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1033\"\u003etypeddjango/djangorestframework-stubs#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1034\"\u003etypeddjango/djangorestframework-stubs#1034\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.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/typeddjango/djangorestframework-stubs/commit/11062a8e197e9b003e0b1d1a63a930bf0ceed2c0\"\u003e\u003ccode\u003e11062a8\u003c/code\u003e\u003c/a\u003e Version 3.18.1 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/1d74beaf94c86427d4fe0f9269c46e1457881cfa\"\u003e\u003ccode\u003e1d74bea\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd11a58c5cecad38202d3b89c030182ab89596dd\"\u003e\u003ccode\u003efd11a58\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd549233349d09f98979e57812072e8909309b65\"\u003e\u003ccode\u003efd54923\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1047\"\u003e#1047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/33361020c2aecfee710c5a4e6c25dbf6d8603314\"\u003e\u003ccode\u003e3336102\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/e4c9d11557dacb19a3e34791e9c7908397fe318e\"\u003e\u003ccode\u003ee4c9d11\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/3410442d566a2d6ae8058b2881fb2adbf86c259a\"\u003e\u003ccode\u003e3410442\u003c/code\u003e\u003c/a\u003e Bump sqlparse from 0.5.5 to 0.6.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/36692fc5a7ee1c87df369c1dc64c84ea9879b4c7\"\u003e\u003ccode\u003e36692fc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1041\"\u003e#1041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/5247f84db1b5e2b47abc736b0164f4fc4cf58f72\"\u003e\u003ccode\u003e5247f84\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10.0.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/603aa1241e8175cc1cfbc1ade9020b047a9cae2d\"\u003e\u003ccode\u003e603aa12\u003c/code\u003e\u003c/a\u003e Fix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.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.3.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\u003eSee full diff in \u003ca href=\"https://github.com/python/mypy/compare/v2.3.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 `pre-commit` from 4.6.1 to 4.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.2 - 2026-08-10\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/9767b6c8211a6bf683875a0afcf2b390457a4b66\"\u003e\u003ccode\u003e9767b6c\u003c/code\u003e\u003c/a\u003e v4.6.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/42ee3ff5ac1cae639613c9ad002d0502ae82384f\"\u003e\u003ccode\u003e42ee3ff\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e from pre-commit/npm-build-scripts-11-x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/30566198cb2d05201625f92b660a34c38ffe2dc7\"\u003e\u003ccode\u003e3056619\u003c/code\u003e\u003c/a\u003e fix \u003ccode\u003elanguage: node\u003c/code\u003e for hooks with build scripts and npm 11.x\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.6.1...v4.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-django` from 4.13.0 to 4.14.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-django/releases\"\u003epytest-django's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.14.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pytest-django.readthedocs.io/en/stable/changelog.html#v4-14-0-2026-08-10\"\u003ehttps://pytest-django.readthedocs.io/en/stable/changelog.html#v4-14-0-2026-08-10\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/pytest-dev/pytest-django/blob/main/docs/changelog.rst\"\u003epytest-django's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.14.0 (2026-08-10)\u003c/h2\u003e\n\u003cp\u003eCompatibility\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestored (unofficial) support for Django 5.0 and Django 5.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements\n^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003edjango\u003c/code\u003e extra to the package. By depending on this extra\n(e.g. \u003ccode\u003epip install pytest-django[django]\u003c/code\u003e), the dependency resolver\nwill ensure you get a version of pytest-django that is compatible with\nyour version of Django (lower bound only). At least from now on...\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-django/commit/1a6b6121c7f1f20e2a32c5f1ece7b6671160b968\"\u003e\u003ccode\u003e1a6b612\u003c/code\u003e\u003c/a\u003e Release 4.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/fffb11d199a4f59e5acec5cb42a8ca257ce987e2\"\u003e\u003ccode\u003efffb11d\u003c/code\u003e\u003c/a\u003e docs: remove $ for consistency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/e8c0606c3871db20f2273bd700c8a51337205622\"\u003e\u003ccode\u003ee8c0606\u003c/code\u003e\u003c/a\u003e docs: move the \u003ccode\u003edjango\u003c/code\u003e extra explanation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/b66deb68fd5820a763005b5e689821737031524a\"\u003e\u003ccode\u003eb66deb6\u003c/code\u003e\u003c/a\u003e tests: strict import to make pyright happy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/823db395089fe268641417de452404162580a7ce\"\u003e\u003ccode\u003e823db39\u003c/code\u003e\u003c/a\u003e tests: fix wrong type (typing only)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/a1eaf5dcdc191b6e95a4d552e30c0aa54d7febf2\"\u003e\u003ccode\u003ea1eaf5d\u003c/code\u003e\u003c/a\u003e Drop django\u0026lt;5 message asserts compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/2ea14230006228f0896b7c785400f17347bdf612\"\u003e\u003ccode\u003e2ea1423\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003e_pre_setup_ran_eagerly\u003c/code\u003e on Django 5.0 and 5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/903429ca05f98dd78b9f24c2ce84e80be24c01c2\"\u003e\u003ccode\u003e903429c\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003edjango\u003c/code\u003e extra to ensure Django dependency compatible lower bound\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/96615893af607fb89fb568445bfedb7783c7aeb0\"\u003e\u003ccode\u003e9661589\u003c/code\u003e\u003c/a\u003e docs: prefer newer pytest config TOML format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/76461962b11e3740dddf9185a4a4985e7f40cf63\"\u003e\u003ccode\u003e7646196\u003c/code\u003e\u003c/a\u003e docs: remove needless comment\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-django/compare/v4.13.0...v4.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.16.2 to 0.16.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commi...\n\n_Description has been truncated_","html_url":"https://github.com/athulya3404/EasyTechStore/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/athulya3404%2FEasyTechStore/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"},{"uuid":"5316081817","node_id":"PR_kwDOUCrC3M8AAAABBzIJog","number":11,"state":"closed","title":"Bump the python group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T19:38:27.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-01T19:44:00.000Z","updated_at":"2026-09-04T19:38:29.000Z","time_to_close":258867,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":5,"packages":[{"name":"gunicorn","old_version":"26.1.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"uvicorn","old_version":"0.52.3","new_version":"0.52.4"},{"name":"coverage","old_version":"7.15.4","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"djangorestframework-stubs","old_version":"3.18.0","new_version":"3.18.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.16.3","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.1.0` | `26.2.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.52.3` | `0.52.4` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.4` | `7.16.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.18.0` | `3.18.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.3` | `0.16.5` |\n\n\nUpdates `gunicorn` from 26.1.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.1.0...26.2.0\"\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.52.3 to 0.52.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\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.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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.4 to 7.16.0\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.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\u003c/blockquote\u003e\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.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\nreach the subprocesses.  The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as\nthe entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e\nslipped through and failed later with \u0026quot;Can't combine statement coverage\ndata with branch data\u0026quot;.  Each named concurrency library is now properly\nconsidered (\u003ccode\u003epull 2270\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any\nmeasured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on\nWindows.  The original extension is now restored on the annotated copy (\u003ccode\u003epull 2265\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2261: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003ecoveragepy/coveragepy#2261\u003c/a\u003e\n.. _pull 2262: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003ecoveragepy/coveragepy#2262\u003c/a\u003e\n.. _pull 2263: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003ecoveragepy/coveragepy#2263\u003c/a\u003e\n.. _pull 2265: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003ecoveragepy/coveragepy#2265\u003c/a\u003e\n.. _issue 2266: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003ecoveragepy/coveragepy#2266\u003c/a\u003e\n.. _pull 2268: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003ecoveragepy/coveragepy#2268\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3e9fc1653ef31089d02eb7618b9d9ac9414378fc\"\u003e\u003ccode\u003e3e9fc16\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/38be8d13afee6b6525492fc375c739cdfb675e9b\"\u003e\u003ccode\u003e38be8d1\u003c/code\u003e\u003c/a\u003e build: control check-manifest explicitly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8eb1266ead5c6d356d3437637a509ff86b566253\"\u003e\u003ccode\u003e8eb1266\u003c/code\u003e\u003c/a\u003e docs(build): no longer commit sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1a8b3fa57d56bb70bad62c93d224c18a0fbaae6f\"\u003e\u003ccode\u003e1a8b3fa\u003c/code\u003e\u003c/a\u003e docs: remove sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/aeaa79b812d1bc637ebb5582ab12c076e192c87e\"\u003e\u003ccode\u003eaeaa79b\u003c/code\u003e\u003c/a\u003e docs: linklint is now sphinx-linklint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d5eaf3f6d38f58746bc69e87e64c0b0277a9077d\"\u003e\u003ccode\u003ed5eaf3f\u003c/code\u003e\u003c/a\u003e test: a branchless way to re-add extensions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/57e52fd431cecc1ca03de2c5b1288e0b330c2ef4\"\u003e\u003ccode\u003e57e52fd\u003c/code\u003e\u003c/a\u003e docs: adjust CHANGES for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b9d304d77f7ce3d55df3a46339dbc56d1f49df58\"\u003e\u003ccode\u003eb9d304d\u003c/code\u003e\u003c/a\u003e fix: check for multiprocessing in a --concurrency list (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a6ef9284afbc7d1f392821864b64ddbda0051fc5\"\u003e\u003ccode\u003ea6ef928\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/070461fcfde0437b5b778c2c2a72e433a0a391aa\"\u003e\u003ccode\u003e070461f\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2271\"\u003e#2271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.4...7.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.18.0 to 3.18.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.1\u003c/h2\u003e\n\u003cp\u003eThis release dropped Python 3.10 support, following django-stubs upstream (requires Python 3.11+ now).\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark stub-only synthetic types with \u003ccode\u003e@type_check_only\u003c/code\u003e by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1038\"\u003etypeddjango/djangorestframework-stubs#1038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1047\"\u003etypeddjango/djangorestframework-stubs#1047\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e types by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1049\"\u003etypeddjango/djangorestframework-stubs#1049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.10 support by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1035\"\u003etypeddjango/djangorestframework-stubs#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCleanup Python 3.10 compatibility by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1036\"\u003etypeddjango/djangorestframework-stubs#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCategorize stubtest allowlist_todo.txt entries by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1037\"\u003etypeddjango/djangorestframework-stubs#1037\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1039\"\u003etypeddjango/djangorestframework-stubs#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.1 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1050\"\u003etypeddjango/djangorestframework-stubs#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/11062a8e197e9b003e0b1d1a63a930bf0ceed2c0\"\u003e\u003ccode\u003e11062a8\u003c/code\u003e\u003c/a\u003e Version 3.18.1 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/1d74beaf94c86427d4fe0f9269c46e1457881cfa\"\u003e\u003ccode\u003e1d74bea\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd11a58c5cecad38202d3b89c030182ab89596dd\"\u003e\u003ccode\u003efd11a58\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd549233349d09f98979e57812072e8909309b65\"\u003e\u003ccode\u003efd54923\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1047\"\u003e#1047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/33361020c2aecfee710c5a4e6c25dbf6d8603314\"\u003e\u003ccode\u003e3336102\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/e4c9d11557dacb19a3e34791e9c7908397fe318e\"\u003e\u003ccode\u003ee4c9d11\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/3410442d566a2d6ae8058b2881fb2adbf86c259a\"\u003e\u003ccode\u003e3410442\u003c/code\u003e\u003c/a\u003e Bump sqlparse from 0.5.5 to 0.6.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/36692fc5a7ee1c87df369c1dc64c84ea9879b4c7\"\u003e\u003ccode\u003e36692fc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1041\"\u003e#1041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/5247f84db1b5e2b47abc736b0164f4fc4cf58f72\"\u003e\u003ccode\u003e5247f84\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10.0.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/603aa1241e8175cc1cfbc1ade9020b047a9cae2d\"\u003e\u003ccode\u003e603aa12\u003c/code\u003e\u003c/a\u003e Fix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.16.3 to 0.16.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b\"\u003e\u003ccode\u003eeb78048\u003c/code\u003e\u003c/a\u003e [ty] Bump ecosystem-analyzer for HTML escaping (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28104\"\u003e#28104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.3...0.16.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/DARELLE26/mentorlink/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DARELLE26%2Fmentorlink/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"},{"uuid":"5243643953","node_id":"PR_kwDOUDghOM8AAAABA6DMVw","number":5,"state":"closed","title":"Bump the python group with 15 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T14:38:03.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-25T08:22:03.000Z","updated_at":"2026-09-04T14:38:05.000Z","time_to_close":886560,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":15,"packages":[{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"flower","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/mher/flower"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"coverage","old_version":"7.15.3","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.7","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.43.2","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.16.1","new_version":"0.16.4","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 15 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [flower](https://github.com/mher/flower) | `2.0.1` | `2.1.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.3` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.7` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.43.2` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.1` | `0.16.4` |\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flower` from 2.0.1 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/mher/flower/releases\"\u003eflower's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the GitLab authentication handler name by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented database filename by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented max tasks default by \u003ca href=\"https://github.com/masahiro331\"\u003e\u003ccode\u003e@​masahiro331\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1415\"\u003e#1415\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/mher/flower/blob/v2.1.0/CHANGELOG.md\"\u003eflower's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlower 2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design.\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options.\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters.\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard.\u003c/li\u003e\n\u003cli\u003eEnabled API access in the Docker Compose demo.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop.\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined.\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections.\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files.\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the GitLab authentication handler name \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the documented database filename \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\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/mher/flower/commit/3597bd1a94280cb3a3f2cbe53d0b6616f56cbde8\"\u003e\u003ccode\u003e3597bd1\u003c/code\u003e\u003c/a\u003e Set release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/d083f7317e4e273ff62de59082b89ce390cecf50\"\u003e\u003ccode\u003ed083f73\u003c/code\u003e\u003c/a\u003e Update documentation for 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b58869bcdcceb46d37d806fee8698fefd9d94bd9\"\u003e\u003ccode\u003eb58869b\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/e6cf8ef78776098bf8d3f1674056fc00dd62e388\"\u003e\u003ccode\u003ee6cf8ef\u003c/code\u003e\u003c/a\u003e Add Python 3.13 and 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/8ecede927b87e49ddb2856fbf61f7577d3c87273\"\u003e\u003ccode\u003e8ecede9\u003c/code\u003e\u003c/a\u003e Document custom authentication providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/00d310bb92914a21318052aa4ed02a996a95ca00\"\u003e\u003ccode\u003e00d310b\u003c/code\u003e\u003c/a\u003e Persist dashboard counters across restarts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/0a5116087085596a466caee4caa473da1a8b8394\"\u003e\u003ccode\u003e0a51160\u003c/code\u003e\u003c/a\u003e Purge offline workers from metrics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/72a09c8795d29b4a8e042285bff4e9ac2b7afda4\"\u003e\u003ccode\u003e72a09c8\u003c/code\u003e\u003c/a\u003e Prevent duplicate worker inspections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/17ead90a68a2eec82be3e03c9f0350f02ddc60dd\"\u003e\u003ccode\u003e17ead90\u003c/code\u003e\u003c/a\u003e Make Redis queue inspection non-blocking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b11ddcb2175c47ac0001b3744d4e3bad41bc6ba4\"\u003e\u003ccode\u003eb11ddcb\u003c/code\u003e\u003c/a\u003e Update blocking operation handling\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mher/flower/compare/v2.0.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.3 to 7.15.4\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.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\u003c/blockquote\u003e\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.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in the HTML report, a source file name containing a double quote (legal\non POSIX) wasn't escaped where it's dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index\nand prev/next links, so it could close the attribute early and inject markup.\nPage URLs are now escaped. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2227_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report wrote file names and other fields into its\nline-oriented records without neutralizing control characters. A measured\nfile whose name contained a newline (legal on POSIX) could forge extra\nrecords, inflating the coverage seen by tools that read the report. Control\ncharacters in a field are now replaced. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2226_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels are now provided for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2226: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003ecoveragepy/coveragepy#2226\u003c/a\u003e\n.. _pull 2227: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003ecoveragepy/coveragepy#2227\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-3:\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/4c0e7ff425ecbb33e2b994b41118a71eb4e39021\"\u003e\u003ccode\u003e4c0e7ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/db4cc3216ca5bb436eba697aaa74d886e4ea82c8\"\u003e\u003ccode\u003edb4cc32\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c33085c3fcec4dd01fc3a0419c90de7ee6b869a7\"\u003e\u003ccode\u003ec33085c\u003c/code\u003e\u003c/a\u003e style: start gradual move to ruff 0.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53a0fd51ba05047624baf58bf8f288d56185df93\"\u003e\u003ccode\u003e53a0fd5\u003c/code\u003e\u003c/a\u003e fix: neutralize control characters in lcov report fields (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b64d53dd6f113b68a19ac6c1b855e34bbebfad4e\"\u003e\u003ccode\u003eb64d53d\u003c/code\u003e\u003c/a\u003e build: make 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53792ab496adf740a38d1f67e0162705b4d67c07\"\u003e\u003ccode\u003e53792ab\u003c/code\u003e\u003c/a\u003e build: show the python version for kits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f6b03c77ffb8d58b25950bae63d36b7a1c585a70\"\u003e\u003ccode\u003ef6b03c7\u003c/code\u003e\u003c/a\u003e chore: make upgrade_one package=cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d9b660ac2a6bc64a39c4a2e7f195bb6bd6f7af89\"\u003e\u003ccode\u003ed9b660a\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b128a3172ec0cc4d70398f663e56d0362f5de4ea\"\u003e\u003ccode\u003eb128a31\u003c/code\u003e\u003c/a\u003e docs: oops, move this entry to the correct place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a7a2c15669cc6e8fdb46e5012954c795a63e9a27\"\u003e\u003ccode\u003ea7a2c15\u003c/code\u003e\u003c/a\u003e fix: escape filename urls in html report href attributes (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.3...7.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f307de14d1a533273b6de7bd39579b043eb54a99\"\u003e\u003ccode\u003ef307de1\u003c/code\u003e\u003c/a\u003e Version 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/73951a4c517bafa5369228f2fca8306510f1cbf1\"\u003e\u003ccode\u003e73951a4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2439\"\u003e#2439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/678b687e0a30c2657dc21b1d859d1141098997a0\"\u003e\u003ccode\u003e678b687\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/7627683d89fc1c77bc2dc4550f15eede9a86cee6\"\u003e\u003ccode\u003e7627683\u003c/code\u003e\u003c/a\u003e Serialize the TaskResult class for Tasks panel. (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2444\"\u003e#2444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.7 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\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/typeddjango/django-stubs/commit/2ec3fd3ce48e7a92cbe09a114d512dcea50571f7\"\u003e\u003ccode\u003e2ec3fd3\u003c/code\u003e\u003c/a\u003e Version 6.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5868773c9fa5ba236c2cc263799a02acc67f7c0b\"\u003e\u003ccode\u003e5868773\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.69.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3588\"\u003e#3588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e888491e34e5b9073f1c09eb84e91ed7ce36c775\"\u003e\u003ccode\u003ee888491\u003c/code\u003e\u003c/a\u003e Support custom arguments in queryset update methods (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3586\"\u003e#3586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ffd15cac28c39690acd98c3f9af9370f9fadedce\"\u003e\u003ccode\u003effd15ca\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3583\"\u003e#3583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1af6dcf52f19837fdc47b26350d351dea0a139c1\"\u003e\u003ccode\u003e1af6dcf\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.68.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/709e864c79e03239be2234457f59eb66ce69e3c7\"\u003e\u003ccode\u003e709e864\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.69 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5da937c127b581501b5707b547d861b46d8af41c\"\u003e\u003ccode\u003e5da937c\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.68 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3579\"\u003e#3579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7afd2da77ed93d0b3164ea4d203648a6c972f161\"\u003e\u003ccode\u003e7afd2da\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.67 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/07e22f2e4918163d1f3aa1137142cf281b5fbcb1\"\u003e\u003ccode\u003e07e22f2\u003c/code\u003e\u003c/a\u003e Explicit through default manager (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3576\"\u003e#3576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/db47c3b32275b6d6abef915303fd80fde3dd59da\"\u003e\u003ccode\u003edb47c3b\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.17 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.7...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.31.1 to 1.32.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.32.0 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#681](https://github.com/adamchainz/django-upgrade/issues/681) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/681\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eutils_text \u0026lt;utils_text\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003eunescape_entities()\u003c/code\u003e calls with \u003ccode\u003ehtml.unescape()\u003c/code\u003e.\nPreviously it incorrectly used \u003ccode\u003ehtml.escape()\u003c/code\u003e, which performs the inverse operation.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#684](https://github.com/adamchainz/django-upgrade/issues/684) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/684\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer crash on empty \u003ccode\u003eindex_together\u003c/code\u003e declarations.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#685](https://github.com/adamchainz/django-upgrade/issues/685) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/685\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to not add a duplicate \u003ccode\u003eindexes\u003c/code\u003e declaration when the existing one is not a list or tuple literal.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#686](https://github.com/adamchainz/django-upgrade/issues/686) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/686\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to add a missing comma when extending a multiline \u003ccode\u003eindexes\u003c/code\u003e list that has no trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#687](https://github.com/adamchainz/django-upgrade/issues/687) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/687\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to keep an empty \u003ccode\u003eindexes\u003c/code\u003e tuple a tuple when extending it with a single index.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#716](https://github.com/adamchainz/django-upgrade/issues/716) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/716\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eformat_html \u0026lt;format_html\u0026gt;\u003c/code\u003e fixer to skip calls with a parenthesized argument, where removing the \u003ccode\u003e.format()\u003c/code\u003e call would create a tuple.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#717](https://github.com/adamchainz/django-upgrade/issues/717) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/717\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer to add a missing comma before \u003ccode\u003enull=True\u003c/code\u003e when the final argument contains commas within brackets.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#688](https://github.com/adamchainz/django-upgrade/issues/688) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/688\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix fixers that modify call arguments to not treat a comment inside otherwise empty parentheses as an argument, which made the :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer produce invalid syntax.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#718](https://github.com/adamchainz/django-upgrade/issues/718) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/718\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to avoid a double comma when the existing \u003ccode\u003eheaders=\u003c/code\u003e dict has a trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#689](https://github.com/adamchainz/django-upgrade/issues/689) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/689\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to insert converted headers at the start of an existing \u003ccode\u003eheaders=\u003c/code\u003e dict.\nDjango gives \u003ccode\u003eheaders=\u003c/code\u003e entries precedence over \u003ccode\u003eHTTP_\u003c/code\u003e arguments, and the last duplicate key wins in a dict literal, so appending converted entries at the end previously flipped which value took effect.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#723](https://github.com/adamchainz/django-upgrade/issues/723) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/723\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etestcase_databases \u0026lt;testcase_databases\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003emulti_db = False\u003c/code\u003e to \u003ccode\u003edatabases = [\u0026quot;default\u0026quot;]\u003c/code\u003e rather than \u003ccode\u003edatabases = []\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/423ab5081e037d3c692113d654d49ea9e3ee0066\"\u003e\u003ccode\u003e423ab50\u003c/code\u003e\u003c/a\u003e Version 1.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7b1224a970289729eb50a1fffca04844a8c1ab1f\"\u003e\u003ccode\u003e7b1224a\u003c/code\u003e\u003c/a\u003e Tidy changelog (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/63607890eb3090bded91c6432b43948a1757bd1e\"\u003e\u003ccode\u003e6360789\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eforms_model_multiple_choice_field\u003c/code\u003e corrupting concatenated keys (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/02a46831ceb213421761f312e1368fa7b7e796d9\"\u003e\u003ccode\u003e02a4683\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etestcase_databases\u003c/code\u003e mapping of \u003ccode\u003emulti_db = False\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/bc85eb958b63b752cbd7454d6378e51ca50d891d\"\u003e\u003ccode\u003ebc85eb9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_decorators\u003c/code\u003e hoisting values above their definitions (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/4eb5abf3734ba10c96dd53abdf98e50c78c4adae\"\u003e\u003ccode\u003e4eb5abf\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_register\u003c/code\u003e referencing models defined after the admin class (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d782084a4fe43286d6b4b2d11676efad0a1356cb\"\u003e\u003ccode\u003ed782084\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003esettings_storages\u003c/code\u003e erasing settings referenced elsewhere (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/2f3eb7571f87ae8c62389ac8f977935f81fbe58e\"\u003e\u003ccode\u003e2f3eb75\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etest_http_headers\u003c/code\u003e precedence when merging into \u003ccode\u003eheaders=\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/723\"\u003e#723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d750615a98098ff0c44477041932a04089d5aa47\"\u003e\u003ccode\u003ed750615\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003estringagg\u003c/code\u003e moving import despite bare \u003ccode\u003eStringAgg\u003c/code\u003e references (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/722\"\u003e#722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/49cb8b9c2297d329a8f858beb54fb34e7274830a\"\u003e\u003ccode\u003e49cb8b9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eutils_timezone\u003c/code\u003e matching aliased \u003ccode\u003eutc\u003c/code\u003e imports (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/720\"\u003e#720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/django-upgrade/compare/1.31.1...1.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThis is the first version to be based on DRF 3.18\u003c/li\u003e\n\u003cli\u003eThis is the last version to support \u003ccode\u003edjango-stubs\u003c/code\u003e 6.0.x - next release will require 6.1.x\u003c/li\u003e\n\u003cli\u003eThis is the last ver...\n\n_Description has been truncated_","html_url":"https://github.com/rl-institut/SustAgriTool/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rl-institut%2FSustAgriTool/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"},{"uuid":"5233154581","node_id":"PR_kwDOS9VYHs8AAAABAxtqTQ","number":66,"state":"closed","title":"chore(deps): bump the python group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T09:11:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-24T09:25:58.000Z","updated_at":"2026-09-04T09:11:11.000Z","time_to_close":949511,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":20,"packages":[{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1"},{"name":"django-crispy-forms","old_version":"2.6","new_version":"2.7","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"drf-spectacular","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/tfranzel/drf-spectacular"},{"name":"flower","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/mher/flower"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"redis","old_version":"8.0.0","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.14.1","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.5","new_version":"6.1.0"},{"name":"djangorestframework-stubs","old_version":"3.17.0","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.39.2","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.0","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest","old_version":"9.1.0","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.15.18","new_version":"0.16.4","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 20 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [django-anymail[mailgun]](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.6` | `2.7` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [drf-spectacular](https://github.com/tfranzel/drf-spectacular) | `0.29.0` | `0.30.0` |\n| [flower](https://github.com/mher/flower) | `2.0.1` | `2.1.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [redis](https://github.com/redis/redis-py) | `8.0.0` | `8.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.14.1` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.5` | `6.1.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.0` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.39.2` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.0` | `4.6.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.1.0` | `9.1.1` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.18` | `0.16.4` |\n\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail[mailgun]` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail[mailgun]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail[mailgun]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\nin Django's documentation for recommendations.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.6 to 2.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/e7fbb538595dde3a4598b4403e60ecca0905fa74\"\u003e\u003ccode\u003ee7fbb53\u003c/code\u003e\u003c/a\u003e Release 2.7. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1438\"\u003e#1438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/9d6b32129dea4c89caa87218a11192503646b9da\"\u003e\u003ccode\u003e9d6b321\u003c/code\u003e\u003c/a\u003e Bumped github actions versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/974b5b7390c0b11698c348128b164990cb6f044b\"\u003e\u003ccode\u003e974b5b7\u003c/code\u003e\u003c/a\u003e Bumped RTD OS and Python versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/5218268f520ca19c665e6f02a49df647eb977af6\"\u003e\u003ccode\u003e5218268\u003c/code\u003e\u003c/a\u003e Confirmed support for Django 6.1. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/847873cf09f0ee96beb38273190860008a6712dd\"\u003e\u003ccode\u003e847873c\u003c/code\u003e\u003c/a\u003e docs: replace 'basestring' with 'str' (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.6...2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tfranzel/drf-spectacular/releases\"\u003edrf-spectacular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.30.0\u003c/h2\u003e\n\u003cp\u003eAfter working through the backlog for several week, we are finally in a comfortable place again. Thank you to all contributors and users that waited patiently for me the catch up. It does not include all the PRs that were opened, but imho the most critical ones.\u003c/p\u003e\n\u003cp\u003eThis release includes many small improvement, a few bug fixes, updates to the test suite and a renovated test matrix. Some minor schema corrections are to be expected, but nothing drastic. It is mostly fixing small inconsistencies and improving corner cases.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression introduced in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1450\"\u003e#1450\u003c/a\u003e by \u003ca href=\"https://github.com/hoefling\"\u003e\u003ccode\u003e@​hoefling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1469\"\u003etfranzel/drf-spectacular#1469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dependency definition for Django 5.2 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1487\"\u003etfranzel/drf-spectacular#1487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for Django 6.0 and and DRF 3.17 by \u003ca href=\"https://github.com/vgrozdanic\"\u003e\u003ccode\u003e@​vgrozdanic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1496\"\u003etfranzel/drf-spectacular#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Support for unsigned integers uint16, uint32 and uint64 by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1483\"\u003etfranzel/drf-spectacular#1483\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement x-spec-enum-id for type hint Choices. by \u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1486\"\u003etfranzel/drf-spectacular#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClarifies Docs in Customizations.rst by \u003ca href=\"https://github.com/APCBoston\"\u003e\u003ccode\u003e@​APCBoston\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1489\"\u003etfranzel/drf-spectacular#1489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd setting to disable docstring extraction by \u003ca href=\"https://github.com/philipstarkey\"\u003e\u003ccode\u003e@​philipstarkey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1491\"\u003etfranzel/drf-spectacular#1491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for polymorphic built-in drf support by \u003ca href=\"https://github.com/mastacheata\"\u003e\u003ccode\u003e@​mastacheata\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1490\"\u003etfranzel/drf-spectacular#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument \u003ccode\u003edjango-rest-knox\u003c/code\u003e support by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1503\"\u003etfranzel/drf-spectacular#1503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd help text to spectacular management command arguments \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1175\"\u003e#1175\u003c/a\u003e by \u003ca href=\"https://github.com/jbbqqf\"\u003e\u003ccode\u003e@​jbbqqf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1502\"\u003etfranzel/drf-spectacular#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange conflicting license field for 3.8 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1504\"\u003etfranzel/drf-spectacular#1504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1438 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1505\"\u003etfranzel/drf-spectacular#1505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd blueprint for django-rest-knox by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1506\"\u003etfranzel/drf-spectacular#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1499 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1511\"\u003etfranzel/drf-spectacular#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType hint build_bearer_security_scheme_object by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1509\"\u003etfranzel/drf-spectacular#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHousekeeping by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1512\"\u003etfranzel/drf-spectacular#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1501 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1514\"\u003etfranzel/drf-spectacular#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nullable FileField response schema when blank=True (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1493\"\u003e#1493\u003c/a\u003e) by \u003ca href=\"https://github.com/mojtabasohrabi\"\u003e\u003ccode\u003e@​mojtabasohrabi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1501\"\u003etfranzel/drf-spectacular#1501\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/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1487\"\u003etfranzel/drf-spectacular#1487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vgrozdanic\"\u003e\u003ccode\u003e@​vgrozdanic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1496\"\u003etfranzel/drf-spectacular#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1486\"\u003etfranzel/drf-spectacular#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/APCBoston\"\u003e\u003ccode\u003e@​APCBoston\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1489\"\u003etfranzel/drf-spectacular#1489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/philipstarkey\"\u003e\u003ccode\u003e@​philipstarkey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1491\"\u003etfranzel/drf-spectacular#1491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mastacheata\"\u003e\u003ccode\u003e@​mastacheata\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1490\"\u003etfranzel/drf-spectacular#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jbbqqf\"\u003e\u003ccode\u003e@​jbbqqf\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1502\"\u003etfranzel/drf-spectacular#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mojtabasohrabi\"\u003e\u003ccode\u003e@​mojtabasohrabi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1501\"\u003etfranzel/drf-spectacular#1501\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.0\"\u003ehttps://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.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/tfranzel/drf-spectacular/blob/master/CHANGELOG.rst\"\u003edrf-spectacular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.30.0 (2026-07-06)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd OAS 3.2 schema for validation \u0026amp; test\u003c/li\u003e\n\u003cli\u003eType hint build_bearer_security_scheme_object (\u003ccode\u003e[#1509](https://github.com/tfranzel/drf-spectacular/issues/1509) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1509\u0026gt;\u003c/code\u003e_) [johnthagen]\u003c/li\u003e\n\u003cli\u003eFix formatted CharField allow_blank handling (\u003ccode\u003e[#1511](https://github.com/tfranzel/drf-spectacular/issues/1511) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1511\u0026gt;\u003c/code\u003e\u003cem\u003e, (\u003ccode\u003e[#1499](https://github.com/tfranzel/drf-spectacular/issues/1499) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1499\u0026gt;\u003c/code\u003e\u003c/em\u003e)) [Luciano de la Iglesia]\u003c/li\u003e\n\u003cli\u003eConsider allOf anyOf with nullable on OAS3.1 \u003ccode\u003e[#1480](https://github.com/tfranzel/drf-spectacular/issues/1480) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1480\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eProper handling for OAS 3.2\u003c/li\u003e\n\u003cli\u003efix modification of user-provided schematas \u003ccode\u003e[#1500](https://github.com/tfranzel/drf-spectacular/issues/1500) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1500\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003erelax contraint on oneOf null case with OAS3.1 \u003ccode\u003e[#1480](https://github.com/tfranzel/drf-spectacular/issues/1480) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1480\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eAdd blueprint for django-rest-knox (\u003ccode\u003e[#1506](https://github.com/tfranzel/drf-spectacular/issues/1506) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1506\u0026gt;\u003c/code\u003e_) [johnthagen]\u003c/li\u003e\n\u003cli\u003eMitigate GeneratedField lost arguments and special case for DecimalField \u003ccode\u003e[#1166](https://github.com/tfranzel/drf-spectacular/issues/1166) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1166\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eWebhook explicit operationId (\u003ccode\u003e[#1505](https://github.com/tfranzel/drf-spectacular/issues/1505) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1505\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003echange conflicting license field for 3.8 (\u003ccode\u003e[#1504](https://github.com/tfranzel/drf-spectacular/issues/1504) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1504\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eDocument django-rest-knox support [johnthagen]\u003c/li\u003e\n\u003cli\u003eadd help text to spectacular management command arguments \u003ccode\u003e[#1175](https://github.com/tfranzel/drf-spectacular/issues/1175) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1175\u0026gt;\u003c/code\u003e_ [Jean-Baptiste Braun]\u003c/li\u003e\n\u003cli\u003eMark FileField as nullable in response when not required \u003ccode\u003e[#1493](https://github.com/tfranzel/drf-spectacular/issues/1493) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1493\u0026gt;\u003c/code\u003e_ [mojtaba sohrabi]\u003c/li\u003e\n\u003cli\u003eExtend Choices hint fix with generated label description \u003ccode\u003e[#1486](https://github.com/tfranzel/drf-spectacular/issues/1486) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1486\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eSuppress py\u0026lt;=3.14 deprecation warning \u003ccode\u003e[#1497](https://github.com/tfranzel/drf-spectacular/issues/1497) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1497\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eRemove ancient DRF3.11 and Django2.2 due to contrib packages failing\u003c/li\u003e\n\u003cli\u003efeat: add support for django 6.0 and and drf 3.17 [Vjeran Grozdanic]\u003c/li\u003e\n\u003cli\u003eAdd setting to disable docstring extraction [Phil Starkey]\u003c/li\u003e\n\u003cli\u003efeat: add support for polymorphic built-in drf support [Benedikt Bauer]\u003c/li\u003e\n\u003cli\u003eClarifies post-processing hooks [Andy Piltser-Cowan]\u003c/li\u003e\n\u003cli\u003eClarifies customizations step 5 [Andy Piltser-Cowan]\u003c/li\u003e\n\u003cli\u003eFix dependency definition for Django 5.2 [Ülgen Sarıkavak]\u003c/li\u003e\n\u003cli\u003eImplement x-spec-enum-id for type hint Choices. [Noam Kushinsky]\u003c/li\u003e\n\u003cli\u003eAdd Support for unsigned integers uint16, uint32 and uint64 [Nicolas Delaby]\u003c/li\u003e\n\u003cli\u003eFix regression introduced in \u003ccode\u003e[#1450](https://github.com/tfranzel/drf-spectacular/issues/1450) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1450\u0026gt;\u003c/code\u003e_ (\u003ccode\u003e[#1469](https://github.com/tfranzel/drf-spectacular/issues/1469) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1469\u0026gt;\u003c/code\u003e_) [Oleg Höfling]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBreaking changes / important additions:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMany small improvement, bug fixes, updates to the test suite and renovated test matrix. Some minor schema corrections are to be expected, but nothing drastic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/1a5c44a15b2d06744f49285f1f58992f938a05fa\"\u003e\u003ccode\u003e1a5c44a\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/6ba553fc827613d7b36efc9d9f53043e4a2e5443\"\u003e\u003ccode\u003e6ba553f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1514\"\u003e#1514\u003c/a\u003e from tfranzel/pr1501\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d4787a4e2ef0ff4b7c6a72fe3dddf1ea8e8a963c\"\u003e\u003ccode\u003ed4787a4\u003c/code\u003e\u003c/a\u003e Adapt FileField null handling \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d8679422975c68bc3a2c97c278957ec043d915c1\"\u003e\u003ccode\u003ed867942\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1512\"\u003e#1512\u003c/a\u003e from tfranzel/housekeeping26\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/5685cf8b731f9a93d9c66003ac2569d4ef7540a8\"\u003e\u003ccode\u003e5685cf8\u003c/code\u003e\u003c/a\u003e Add OAS 3.2 schema for validation \u0026amp; test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/9fa6f7c1f8d99ef14d9dfa11b89f432ba370242f\"\u003e\u003ccode\u003e9fa6f7c\u003c/code\u003e\u003c/a\u003e minor cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/69033ea1e371fb254731c9e9164fd403ace3c5d4\"\u003e\u003ccode\u003e69033ea\u003c/code\u003e\u003c/a\u003e update linting version due to misleading security warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d9e0de6717c9953b3e9c66da6a5bc6aefb714827\"\u003e\u003ccode\u003ed9e0de6\u003c/code\u003e\u003c/a\u003e Type hint build_bearer_security_scheme_object (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1509\"\u003e#1509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/9b18b302b697ba1a5e86271a7e4d090a5995cc21\"\u003e\u003ccode\u003e9b18b30\u003c/code\u003e\u003c/a\u003e Pr1499 (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1511\"\u003e#1511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/6e3c72ea5df8e8452a2b8c3e792a7cab23814446\"\u003e\u003ccode\u003e6e3c72e\u003c/code\u003e\u003c/a\u003e Consider allOf anyOf with nullable on OAS3.1 \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1480\"\u003e#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flower` from 2.0.1 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/mher/flower/releases\"\u003eflower's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the GitLab authentication handler name by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented database filename by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented max tasks default by \u003ca href=\"https://github.com/masahiro331\"\u003e\u003ccode\u003e@​masahiro331\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1415\"\u003e#1415\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/mher/flower/blob/v2.1.0/CHANGELOG.md\"\u003eflower's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlower 2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design.\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options.\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters.\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard.\u003c/li\u003e\n\u003cli\u003eEnabled API access in the Docker Compose demo.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop.\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined.\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections.\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files.\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the GitLab authentication handler name \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the documented database filename \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\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/mher/flower/commit/3597bd1a94280cb3a3f2cbe53d0b6616f56cbde8\"\u003e\u003ccode\u003e3597bd1\u003c/code\u003e\u003c/a\u003e Set release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/d083f7317e4e273ff62de59082b89ce390cecf50\"\u003e\u003ccode\u003ed083f73\u003c/code\u003e\u003c/a\u003e Update documentation for 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b58869bcdcceb46d37d806fee8698fefd9d94bd9\"\u003e\u003ccode\u003eb58869b\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/e6cf8ef78776098bf8d3f1674056fc00dd62e388\"\u003e\u003ccode\u003ee6cf8ef\u003c/code\u003e\u003c/a\u003e Add Python 3.13 and 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/8ecede927b87e49ddb2856fbf61f7577d3c87273\"\u003e\u003ccode\u003e8ecede9\u003c/code\u003e\u003c/a\u003e Document custom authentication providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/00d310bb92914a21318052aa4ed02a996a95ca00\"\u003e\u003ccode\u003e00d310b\u003c/code\u003e\u003c/a\u003e Persist dashboard counters across restarts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/0a5116087085596a466caee4caa473da1a8b8394\"\u003e\u003ccode\u003e0a51160\u003c/code\u003e\u003c/a\u003e Purge offline workers from metrics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/72a09c8795d29b4a8e042285bff4e9ac2b7afda4\"\u003e\u003ccode\u003e72a09c8\u003c/code\u003e\u003c/a\u003e Prevent duplicate worker inspections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/17ead90a68a2eec82be3e03c9f0350f02ddc60dd\"\u003e\u003ccode\u003e17ead90\u003c/code\u003e\u003c/a\u003e Make Redis queue inspection non-blocking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b11ddcb2175c47ac0001b3744d4e3bad41bc6ba4\"\u003e\u003ccode\u003eb11ddcb\u003c/code\u003e\u003c/a\u003e Update blocking operation handling\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mher/flower/compare/v2.0.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.2.0 to 12.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove non-image ImageCms modes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9697\"\u003e#9697\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd release notes for SBOM and performance improvements \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd security release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9741\"\u003e#9741\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd release notes for Python 3.15 beta wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9696\"\u003e#9696\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eImageFont can also be used with ImageText \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9597\"\u003e#9597\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdditional guidelines for security reports \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9659\"\u003e#9659\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFixed typo \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9636\"\u003e#9636\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9591\"\u003e#9591\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRevise development support information in README \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9583\"\u003e#9583\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd INCIDENT_RESPONSE.md \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9555\"\u003e#9555\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd STRIDE threat model to security docs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9562\"\u003e#9562\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9556\"\u003e#9556\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate README with revised security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9553\"\u003e#9553\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9552\"\u003e#9552\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9534\"\u003e#9534\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9720\"\u003e#9720\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9653\"\u003e#9653\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v4 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9665\"\u003e#9665\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9655\"\u003e#9655\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libavif to v1.4.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9652\"\u003e#9652\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9651\"\u003e#9651\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency check-jsonschema to v0.37.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9650\"\u003e#9650\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate google/oss-fuzz digest to d872252 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9614\"\u003e#9614\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9609\"\u003e#9609\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libpng to v1.6.58 - autoclosed \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9608\"\u003e#9608\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9610\"\u003e#9610\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.20.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9599\"\u003e#9599\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9611\"\u003e#9611\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9607\"\u003e#9607\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMove dependency versions to single JSON and enable Renovate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9559\"\u003e#9559\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated raqm to 0.10.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9557\"\u003e#9557\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9532\"\u003e#9532\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTesting\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove matrix.os from benchmark \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9735\"\u003e#9735\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRemove references to libavif patch \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9734\"\u003e#9734\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd benchmark tests \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9654\"\u003e#9654\u003c/a\u003e [\u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUse reshape() instead of setting NumPy array shape directly \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9728\"\u003e#9728\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d\"\u003e\u003ccode\u003ebb1d8e8\u003c/code\u003e\u003c/a\u003e 12.3.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e63fc481dc2e07e21d5403deafb8f1ed98a513af\"\u003e\u003ccode\u003ee63fc48\u003c/code\u003e\u003c/a\u003e Add release notes for SBOM and performance improvements (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/13b701bbab291eec4bc87ea17ba06c94e5fe3054\"\u003e\u003ccode\u003e13b701b\u003c/code\u003e\u003c/a\u003e Add release notes for \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5564ca72fcd59d040e270af5dcf17a0d7161c364\"\u003e\u003ccode\u003e5564ca7\u003c/code\u003e\u003c/a\u003e List methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a0920fd384f800b5d0ba3dd29ecdeae4f1d4043b\"\u003e\u003ccode\u003ea0920fd\u003c/code\u003e\u003c/a\u003e Speed up ImageChops operations (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9738\"\u003e#9738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/07e9a6cd5336dc6cf8cae9165cd70cdd2b3e42fc\"\u003e\u003ccode\u003e07e9a6c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.filter()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9736\"\u003e#9736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a94578cf9649ea13e426cf7fb2b71b39ffc0dd50\"\u003e\u003ccode\u003ea94578c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.getchannel()\u003c/code\u003e, \u003ccode\u003eImage.merge()\u003c/code\u003e, \u003ccode\u003eImage.putalpha()\u003c/code\u003e and `Image...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/53e02c43c919d149b2a154a5180079f9df18fbbb\"\u003e\u003ccode\u003e53e02c4\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.fill()\u003c/code\u003e, \u003ccode\u003eImage.linear_gradient()\u003c/code\u003e and `Image.radial_gradient...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/af037475be8634ba739744243164ba9e2c8346a6\"\u003e\u003ccode\u003eaf03747\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.resample()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9739\"\u003e#9739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5c9ca56c3e5fba52b647809fbb0986c87e73a571\"\u003e\u003ccode\u003e5c9ca56\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003ealpha_composite\u003c/code\u003e, \u003ccode\u003ematrix\u003c/code\u003e, \u003ccode\u003enegative\u003c/code\u003e, \u003ccode\u003equantize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9740\"\u003e#9740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.2.0...12.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.0 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDI...\n\n_Description has been truncated_","html_url":"https://github.com/hhhylaiii/maiagent_reply_platform/pull/66","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhhylaiii%2Fmaiagent_reply_platform/issues/66","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/66/packages"},{"uuid":"5232428120","node_id":"PR_kwDOToTEA88AAAABAxIriw","number":20,"state":"closed","title":"build(deps): bump the python group across 1 directory with 16 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T07:57:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-24T08:00:08.000Z","updated_at":"2026-09-04T07:58:01.000Z","time_to_close":950271,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":16,"packages":[{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"flower","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/mher/flower"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"yfinance","old_version":"1.5.2","new_version":"1.6.0","repository_url":"https://github.com/ranaroussi/yfinance"},{"name":"coverage","old_version":"7.15.2","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.7","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.43.1","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.16.1","new_version":"0.16.4","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 16 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [flower](https://github.com/mher/flower) | `2.0.1` | `2.1.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [yfinance](https://github.com/ranaroussi/yfinance) | `1.5.2` | `1.6.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.2` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.7` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.43.1` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.1` | `0.16.4` |\n\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flower` from 2.0.1 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/mher/flower/releases\"\u003eflower's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the GitLab authentication handler name by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented database filename by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented max tasks default by \u003ca href=\"https://github.com/masahiro331\"\u003e\u003ccode\u003e@​masahiro331\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1415\"\u003e#1415\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/mher/flower/blob/v2.1.0/CHANGELOG.md\"\u003eflower's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlower 2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design.\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options.\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters.\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard.\u003c/li\u003e\n\u003cli\u003eEnabled API access in the Docker Compose demo.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop.\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined.\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections.\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files.\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the GitLab authentication handler name \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the documented database filename \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\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/mher/flower/commit/3597bd1a94280cb3a3f2cbe53d0b6616f56cbde8\"\u003e\u003ccode\u003e3597bd1\u003c/code\u003e\u003c/a\u003e Set release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/d083f7317e4e273ff62de59082b89ce390cecf50\"\u003e\u003ccode\u003ed083f73\u003c/code\u003e\u003c/a\u003e Update documentation for 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b58869bcdcceb46d37d806fee8698fefd9d94bd9\"\u003e\u003ccode\u003eb58869b\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/e6cf8ef78776098bf8d3f1674056fc00dd62e388\"\u003e\u003ccode\u003ee6cf8ef\u003c/code\u003e\u003c/a\u003e Add Python 3.13 and 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/8ecede927b87e49ddb2856fbf61f7577d3c87273\"\u003e\u003ccode\u003e8ecede9\u003c/code\u003e\u003c/a\u003e Document custom authentication providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/00d310bb92914a21318052aa4ed02a996a95ca00\"\u003e\u003ccode\u003e00d310b\u003c/code\u003e\u003c/a\u003e Persist dashboard counters across restarts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/0a5116087085596a466caee4caa473da1a8b8394\"\u003e\u003ccode\u003e0a51160\u003c/code\u003e\u003c/a\u003e Purge offline workers from metrics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/72a09c8795d29b4a8e042285bff4e9ac2b7afda4\"\u003e\u003ccode\u003e72a09c8\u003c/code\u003e\u003c/a\u003e Prevent duplicate worker inspections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/17ead90a68a2eec82be3e03c9f0350f02ddc60dd\"\u003e\u003ccode\u003e17ead90\u003c/code\u003e\u003c/a\u003e Make Redis queue inspection non-blocking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b11ddcb2175c47ac0001b3744d4e3bad41bc6ba4\"\u003e\u003ccode\u003eb11ddcb\u003c/code\u003e\u003c/a\u003e Update blocking operation handling\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mher/flower/compare/v2.0.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `yfinance` from 1.5.2 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ranaroussi/yfinance/releases\"\u003eyfinance's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003cp\u003eMain changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrice repair improvements\u003c/li\u003e\n\u003cli\u003eFew new fields to Balance Sheet and Screener\u003c/li\u003e\n\u003cli\u003eMany little fixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull changelog \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2935\"\u003e#2935\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/foley40\"\u003e\u003ccode\u003e@​foley40\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/dokson\"\u003e\u003ccode\u003e@​dokson\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vignesh-nagarajan-vn\"\u003e\u003ccode\u003e@​vignesh-nagarajan-vn\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/shanehull\"\u003e\u003ccode\u003e@​shanehull\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/DogInfantry\"\u003e\u003ccode\u003e@​DogInfantry\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Kaif10\"\u003e\u003ccode\u003e@​Kaif10\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/DMZ22\"\u003e\u003ccode\u003e@​DMZ22\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Aaritp\"\u003e\u003ccode\u003e@​Aaritp\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/etbala\"\u003e\u003ccode\u003e@​etbala\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/aleks-drozy\"\u003e\u003ccode\u003e@​aleks-drozy\u003c/code\u003e\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/ranaroussi/yfinance/blob/main/CHANGELOG.rst\"\u003eyfinance's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003cp\u003eFeatures / improvements\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing balance sheet keys: FixedMaturityInvestments, EquityInves… \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://github.com/foley40\"\u003e\u003ccode\u003e@​foley40\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Screener: add dividendyield and dividendpershare.lasttwelvemonths \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2888\"\u003e#2888\u003c/a\u003e \u003ca href=\"https://github.com/shanehull\"\u003e\u003ccode\u003e@​shanehull\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't claim 'possibly delisted' when Yahoo explains the missing data \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2903\"\u003e#2903\u003c/a\u003e \u003ca href=\"https://github.com/vignesh-nagarajan-vn\"\u003e\u003ccode\u003e@​vignesh-nagarajan-vn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error messages showing internal 15m interval for 30m requests \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2900\"\u003e#2900\u003c/a\u003e \u003ca href=\"https://github.com/vignesh-nagarajan-vn\"\u003e\u003ccode\u003e@​vignesh-nagarajan-vn\u003c/code\u003e\u003c/a\u003e\nFixes:\u003c/li\u003e\n\u003cli\u003eFix generic-unit timedelta DeprecationWarning for sub-day intervals (\u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2882\"\u003e#2882\u003c/a\u003e) \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2891\"\u003e#2891\u003c/a\u003e \u003ca href=\"https://github.com/DogInfantry\"\u003e\u003ccode\u003e@​DogInfantry\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: read-only 'Adj Close' array crash in dividend-adjust repair \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2897\"\u003e#2897\u003c/a\u003e \u003ca href=\"https://github.com/Kaif10\"\u003e\u003ccode\u003e@​Kaif10\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AttributeError in Lookup error handling (self.ticker -\u0026gt; self.query) \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2896\"\u003e#2896\u003c/a\u003e \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: handle null result from Yahoo API in _fetch_info \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2906\"\u003e#2906\u003c/a\u003e \u003ca href=\"https://github.com/foley40\"\u003e\u003ccode\u003e@​foley40\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix multi-day interval TypeError and actually silence the numpy\u0026gt;=2.5 Timedelta warning \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2915\"\u003e#2915\u003c/a\u003e \u003ca href=\"https://github.com/DMZ22\"\u003e\u003ccode\u003e@​DMZ22\u003c/code\u003e\u003c/a\u003e\nPrice repair:\u003c/li\u003e\n\u003cli\u003ePrice repair fixes \u0026amp; improvements \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2908\"\u003e#2908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: repair=True should not permanently convert GBp/ZAc/ILA prices to main currency \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2907\"\u003e#2907\u003c/a\u003e \u003ca href=\"https://github.com/foley40\"\u003e\u003ccode\u003e@​foley40\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrice repair improvements \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2943\"\u003e#2943\u003c/a\u003e\nDocs / maintenance\u003c/li\u003e\n\u003cli\u003eFix pandas 3 timezone assertion in test_download_multi_small_interval \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2901\"\u003e#2901\u003c/a\u003e \u003ca href=\"https://github.com/vignesh-nagarajan-vn\"\u003e\u003ccode\u003e@​vignesh-nagarajan-vn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix grammar and formatting in advanced documentation \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2909\"\u003e#2909\u003c/a\u003e \u003ca href=\"https://github.com/Aaritp\"\u003e\u003ccode\u003e@​Aaritp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-enable test_no_expensive_calls_introduced without requests_cache \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://github.com/dokson\"\u003e\u003ccode\u003e@​dokson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin ruff ruleset for deterministic CI \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2919\"\u003e#2919\u003c/a\u003e \u003ca href=\"https://github.com/dokson\"\u003e\u003ccode\u003e@​dokson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate packaging to pyproject.toml \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2920\"\u003e#2920\u003c/a\u003e \u003ca href=\"https://github.com/dokson\"\u003e\u003ccode\u003e@​dokson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: NaN equality comparison  \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2933\"\u003e#2933\u003c/a\u003e \u003ca href=\"https://github.com/foley40\"\u003e\u003ccode\u003e@​foley40\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate to pyproject.toml \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2849\"\u003e#2849\u003c/a\u003e \u003ca href=\"https://github.com/etbala\"\u003e\u003ccode\u003e@​etbala\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: state download()'s actual returned index timezone contract \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2936\"\u003e#2936\u003c/a\u003e \u003ca href=\"https://github.com/aleks-drozy\"\u003e\u003ccode\u003e@​aleks-drozy\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/ranaroussi/yfinance/commit/93eb4c234acc7d0cf9d176e602b8443179546253\"\u003e\u003ccode\u003e93eb4c2\u003c/code\u003e\u003c/a\u003e Update GH actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/0af231f6a47eee5e773290830d228de0c20d5ee1\"\u003e\u003ccode\u003e0af231f\u003c/code\u003e\u003c/a\u003e Version 1.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/777dc546a2464ae1f8716fd1991da157d251575c\"\u003e\u003ccode\u003e777dc54\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2935\"\u003e#2935\u003c/a\u003e from ranaroussi/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/9b3fcbcd1a43481611c04daf990e2032275306a5\"\u003e\u003ccode\u003e9b3fcbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2943\"\u003e#2943\u003c/a\u003e from ranaroussi/price-repair-improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/8b85f90ff92d6f90c5f31fca4cb21235dfadbfc9\"\u003e\u003ccode\u003e8b85f90\u003c/code\u003e\u003c/a\u003e Price repair improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/f85430919a8c6f1876e35931aee529ed8ecf8f98\"\u003e\u003ccode\u003ef854309\u003c/code\u003e\u003c/a\u003e Fix regression in PR \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2907\"\u003e#2907\u003c/a\u003e (see last comment)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/984a687ac18fb864ffd3cd99b953a47e406d256d\"\u003e\u003ccode\u003e984a687\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2936\"\u003e#2936\u003c/a\u003e from aleks-drozy/docs/download-tz-contract\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/24ee2ff842515d730cac56c847a155981f7c03fe\"\u003e\u003ccode\u003e24ee2ff\u003c/code\u003e\u003c/a\u003e docs: state download()'s actual returned index timezone contract\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/d611015d485bee175bede120d6638066fef12d05\"\u003e\u003ccode\u003ed611015\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2915\"\u003e#2915\u003c/a\u003e from DMZ22/fix-timedelta-deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/61780c70e9bf1a8cb896e7ebdf48d22e9679545a\"\u003e\u003ccode\u003e61780c7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2849\"\u003e#2849\u003c/a\u003e from etbala/dependency-management\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ranaroussi/yfinance/compare/1.5.2...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.2 to 7.15.4\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.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\u003c/blockquote\u003e\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.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in the HTML report, a source file name containing a double quote (legal\non POSIX) wasn't escaped where it's dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index\nand prev/next links, so it could close the attribute early and inject markup.\nPage URLs are now escaped. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2227_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report wrote file names and other fields into its\nline-oriented records without neutralizing control characters. A measured\nfile whose name contained a newline (legal on POSIX) could forge extra\nrecords, inflating the coverage seen by tools that read the report. Control\ncharacters in a field are now replaced. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2226_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels are now provided for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2226: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003ecoveragepy/coveragepy#2226\u003c/a\u003e\n.. _pull 2227: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003ecoveragepy/coveragepy#2227\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the\ncombination would be prevented when read from the coverage.py configuration.\nBut using the context API as pytest-cov does, contexts would be silently\ndropped. Now a warning is issued, thanks to \u003ccode\u003eJisang Han \u0026lt;pull 2234_\u0026gt;\u003c/code\u003e\u003cem\u003e.\nCloses \u003ccode\u003eissue 2200\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA performance improvement in the low-level line number bookkeeping when\ncombining data files, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2239_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance improvement in HTML reporting by reducing the number of times\nfiles have to be parsed, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2240_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2200: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003ecoveragepy/coveragepy#2200\u003c/a\u003e\n.. _pull 2234: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003ecoveragepy/coveragepy#2234\u003c/a\u003e\n.. _pull 2239: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003ecoveragepy/coveragepy#2239\u003c/a\u003e\n.. _pull 2240: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2240\"\u003ecoveragepy/coveragepy#2240\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-2:\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/4c0e7ff425ecbb33e2b994b41118a71eb4e39021\"\u003e\u003ccode\u003e4c0e7ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/db4cc3216ca5bb436eba697aaa74d886e4ea82c8\"\u003e\u003ccode\u003edb4cc32\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c33085c3fcec4dd01fc3a0419c90de7ee6b869a7\"\u003e\u003ccode\u003ec33085c\u003c/code\u003e\u003c/a\u003e style: start gradual move to ruff 0.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53a0fd51ba05047624baf58bf8f288d56185df93\"\u003e\u003ccode\u003e53a0fd5\u003c/code\u003e\u003c/a\u003e fix: neutralize control characters in lcov report fields (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b64d53dd6f113b68a19ac6c1b855e34bbebfad4e\"\u003e\u003ccode\u003eb64d53d\u003c/code\u003e\u003c/a\u003e build: make 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53792ab496adf740a38d1f67e0162705b4d67c07\"\u003e\u003ccode\u003e53792ab\u003c/code\u003e\u003c/a\u003e build: show the python version for kits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f6b03c77ffb8d58b25950bae63d36b7a1c585a70\"\u003e\u003ccode\u003ef6b03c7\u003c/code\u003e\u003c/a\u003e chore: make upgrade_one package=cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d9b660ac2a6bc64a39c4a2e7f195bb6bd6f7af89\"\u003e\u003ccode\u003ed9b660a\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b128a3172ec0cc4d70398f663e56d0362f5de4ea\"\u003e\u003ccode\u003eb128a31\u003c/code\u003e\u003c/a\u003e docs: oops, move this entry to the correct place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a7a2c15669cc6e8fdb46e5012954c795a63e9a27\"\u003e\u003ccode\u003ea7a2c15\u003c/code\u003e\u003c/a\u003e fix: escape filename urls in html report href attributes (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.2...7.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f307de14d1a533273b6de7bd39579b043eb54a99\"\u003e\u003ccode\u003ef307de1\u003c/code\u003e\u003c/a\u003e Version 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/73951a4c517bafa5369228f2fca8306510f1cbf1\"\u003e\u003ccode\u003e73951a4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2439\"\u003e#2439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/678b687e0a30c2657dc21b1d859d1141098997a0\"\u003e\u003ccode\u003e678b687\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/7627683d89fc1c77bc2dc4550f15eede9a86cee6\"\u003e\u003ccode\u003e7627683\u003c/code\u003e\u003c/a\u003e Serialize the TaskResult class for Tasks panel. (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2444\"\u003e#2444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.7 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\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/summ...\n\n_Description has been truncated_","html_url":"https://github.com/santhoshkannan-dev/TradeLoom/pull/20","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/santhoshkannan-dev%2FTradeLoom/issues/20","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/20/packages"},{"uuid":"5219007422","node_id":"PR_kwDOTs1Bhs8AAAABAnD6VA","number":15,"state":"closed","title":"Bump the python group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-03T23:38:00.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-21T23:38:18.000Z","updated_at":"2026-09-03T23:38:02.000Z","time_to_close":1123182,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":15,"packages":[{"name":"django","old_version":"6.0.7","new_version":"6.1","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"coverage","old_version":"7.15.2","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.7","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.43.1","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.16.1","new_version":"0.16.3","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.7` | `6.1` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.2` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.7` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.43.1` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.1` | `0.16.3` |\n\n\nUpdates `django` from 6.0.7 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fe0a859f537d4238cf49fca39073513206f83122\"\u003e\u003ccode\u003efe0a859\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/62770454c1beb3e9b0ef1f7c35c5670b4df935d8\"\u003e\u003ccode\u003e6277045\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated man page for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fc78c5cdbb621dff3893c109433022896022fde1\"\u003e\u003ccode\u003efc78c5c\u003c/code\u003e\u003c/a\u003e [6.1.x] Finalized release notes for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c58d86162cd59602df96f0e716cae9849acb3ddb\"\u003e\u003ccode\u003ec58d861\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dc1b8deff467010aaae71471ae12ebc82188a8a3\"\u003e\u003ccode\u003edc1b8de\u003c/code\u003e\u003c/a\u003e [6.1.x] Added missing lang override in translation fetching helper for Serbia...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1f5bf635df6f0919191f649aef29acb3063978f2\"\u003e\u003ccode\u003e1f5bf63\u003c/code\u003e\u003c/a\u003e [6.1.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36735\"\u003e#36735\u003c/a\u003e -- Added DatabaseFeatures.supports_uuid4_function_in_defa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/809998448b45284aa6152112feb46d927b209019\"\u003e\u003ccode\u003e8099984\u003c/code\u003e\u003c/a\u003e [6.1.x] Added CVE-2026-15307, CVE-2026-15337, CVE-2026-15830, and CVE-2026-15...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a\"\u003e\u003ccode\u003e5a260d3\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15920 -- Made display_for_field() validate URLs before...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/9e4a3f186b6b07b483bfd9195ea06734663fcd06\"\u003e\u003ccode\u003e9e4a3f1\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15830 -- Mitigated potential DoS via nested geometry c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5b3523d29be25948e1dd90b3863a002f00fc865f\"\u003e\u003ccode\u003e5b3523d\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15337 -- Mitigated potential DoS in check_for_language().\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.7...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.2 to 7.15.4\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.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\u003c/blockquote\u003e\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.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in the HTML report, a source file name containing a double quote (legal\non POSIX) wasn't escaped where it's dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index\nand prev/next links, so it could close the attribute early and inject markup.\nPage URLs are now escaped. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2227_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report wrote file names and other fields into its\nline-oriented records without neutralizing control characters. A measured\nfile whose name contained a newline (legal on POSIX) could forge extra\nrecords, inflating the coverage seen by tools that read the report. Control\ncharacters in a field are now replaced. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2226_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels are now provided for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2226: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003ecoveragepy/coveragepy#2226\u003c/a\u003e\n.. _pull 2227: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003ecoveragepy/coveragepy#2227\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the\ncombination would be prevented when read from the coverage.py configuration.\nBut using the context API as pytest-cov does, contexts would be silently\ndropped. Now a warning is issued, thanks to \u003ccode\u003eJisang Han \u0026lt;pull 2234_\u0026gt;\u003c/code\u003e\u003cem\u003e.\nCloses \u003ccode\u003eissue 2200\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA performance improvement in the low-level line number bookkeeping when\ncombining data files, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2239_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance improvement in HTML reporting by reducing the number of times\nfiles have to be parsed, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2240_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2200: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003ecoveragepy/coveragepy#2200\u003c/a\u003e\n.. _pull 2234: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003ecoveragepy/coveragepy#2234\u003c/a\u003e\n.. _pull 2239: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003ecoveragepy/coveragepy#2239\u003c/a\u003e\n.. _pull 2240: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2240\"\u003ecoveragepy/coveragepy#2240\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-2:\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/4c0e7ff425ecbb33e2b994b41118a71eb4e39021\"\u003e\u003ccode\u003e4c0e7ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/db4cc3216ca5bb436eba697aaa74d886e4ea82c8\"\u003e\u003ccode\u003edb4cc32\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c33085c3fcec4dd01fc3a0419c90de7ee6b869a7\"\u003e\u003ccode\u003ec33085c\u003c/code\u003e\u003c/a\u003e style: start gradual move to ruff 0.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53a0fd51ba05047624baf58bf8f288d56185df93\"\u003e\u003ccode\u003e53a0fd5\u003c/code\u003e\u003c/a\u003e fix: neutralize control characters in lcov report fields (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b64d53dd6f113b68a19ac6c1b855e34bbebfad4e\"\u003e\u003ccode\u003eb64d53d\u003c/code\u003e\u003c/a\u003e build: make 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53792ab496adf740a38d1f67e0162705b4d67c07\"\u003e\u003ccode\u003e53792ab\u003c/code\u003e\u003c/a\u003e build: show the python version for kits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f6b03c77ffb8d58b25950bae63d36b7a1c585a70\"\u003e\u003ccode\u003ef6b03c7\u003c/code\u003e\u003c/a\u003e chore: make upgrade_one package=cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d9b660ac2a6bc64a39c4a2e7f195bb6bd6f7af89\"\u003e\u003ccode\u003ed9b660a\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b128a3172ec0cc4d70398f663e56d0362f5de4ea\"\u003e\u003ccode\u003eb128a31\u003c/code\u003e\u003c/a\u003e docs: oops, move this entry to the correct place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a7a2c15669cc6e8fdb46e5012954c795a63e9a27\"\u003e\u003ccode\u003ea7a2c15\u003c/code\u003e\u003c/a\u003e fix: escape filename urls in html report href attributes (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.2...7.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f307de14d1a533273b6de7bd39579b043eb54a99\"\u003e\u003ccode\u003ef307de1\u003c/code\u003e\u003c/a\u003e Version 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/73951a4c517bafa5369228f2fca8306510f1cbf1\"\u003e\u003ccode\u003e73951a4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2439\"\u003e#2439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/678b687e0a30c2657dc21b1d859d1141098997a0\"\u003e\u003ccode\u003e678b687\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/7627683d89fc1c77bc2dc4550f15eede9a86cee6\"\u003e\u003ccode\u003e7627683\u003c/code\u003e\u003c/a\u003e Serialize the TaskResult class for Tasks panel. (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2444\"\u003e#2444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.7 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\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/typeddjango/django-stubs/commit/2ec3fd3ce48e7a92cbe09a114d512dcea50571f7\"\u003e\u003ccode\u003e2ec3fd3\u003c/code\u003e\u003c/a\u003e Version 6.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5868773c9fa5ba236c2cc263799a02acc67f7c0b\"\u003e\u003ccode\u003e5868773\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.69.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3588\"\u003e#3588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e888491e34e5b9073f1c09eb84e91ed7ce36c775\"\u003e\u003ccode\u003ee888491\u003c/code\u003e\u003c/a\u003e Support custom arguments in queryset update methods (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3586\"\u003e#3586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ffd15cac28c39690acd98c3f9af9370f9fadedce\"\u003e\u003ccode\u003effd15ca\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3583\"\u003e#3583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1af6dcf52f19837fdc47b26350d351dea0a139c1\"\u003e\u003ccode\u003e1af6dcf\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.68.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/709e864c79e03239be2234457f59eb66ce69e3c7\"\u003e\u003ccode\u003e709e864\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.69 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5da937c127b581501b5707b547d861b46d8af41c\"\u003e\u003ccode\u003e5da937c\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.68 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3579\"\u003e#3579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7afd2da77ed93d0b3164ea4d203648a6c972f161\"\u003e\u003ccode\u003e7afd2da\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.67 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/07e22f2e4918163d1f3aa1137142cf281b5fbcb1\"\u003e\u003ccode\u003e07e22f2\u003c/code\u003e\u003c/a\u003e Explicit through default manager (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3576\"\u003e#3576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/db47c3b32275b6d6abef915303fd80fde3dd59da\"\u003e\u003ccode\u003edb47c3b\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.17 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.7...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.31.1 to 1.32.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.32.0 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#681](https://github.com/adamchainz/django-upgrade/issues/681) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/681\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eutils_text \u0026lt;utils_text\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003eunescape_entities()\u003c/code\u003e calls with \u003ccode\u003ehtml.unescape()\u003c/code\u003e.\nPreviously it incorrectly used \u003ccode\u003ehtml.escape()\u003c/code\u003e, which performs the inverse operation.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#684](https://github.com/adamchainz/django-upgrade/issues/684) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/684\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer crash on empty \u003ccode\u003eindex_together\u003c/code\u003e declarations.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#685](https://github.com/adamchainz/django-upgrade/issues/685) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/685\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to not add a duplicate \u003ccode\u003eindexes\u003c/code\u003e declaration when the existing one is not a list or tuple literal.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#686](https://github.com/adamchainz/django-upgrade/issues/686) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/686\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to add a missing comma when extending a multiline \u003ccode\u003eindexes\u003c/code\u003e list that has no trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#687](https://github.com/adamchainz/django-upgrade/issues/687) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/687\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to keep an empty \u003ccode\u003eindexes\u003c/code\u003e tuple a tuple when extending it with a single index.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#716](https://github.com/adamchainz/django-upgrade/issues/716) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/716\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eformat_html \u0026lt;format_html\u0026gt;\u003c/code\u003e fixer to skip calls with a parenthesized argument, where removing the \u003ccode\u003e.format()\u003c/code\u003e call would create a tuple.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#717](https://github.com/adamchainz/django-upgrade/issues/717) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/717\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer to add a missing comma before \u003ccode\u003enull=True\u003c/code\u003e when the final argument contains commas within brackets.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#688](https://github.com/adamchainz/django-upgrade/issues/688) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/688\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix fixers that modify call arguments to not treat a comment inside otherwise empty parentheses as an argument, which made the :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer produce invalid syntax.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#718](https://github.com/adamchainz/django-upgrade/issues/718) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/718\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to avoid a double comma when the existing \u003ccode\u003eheaders=\u003c/code\u003e dict has a trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#689](https://github.com/adamchainz/django-upgrade/issues/689) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/689\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to insert converted headers at the start of an existing \u003ccode\u003eheaders=\u003c/code\u003e dict.\nDjango gives \u003ccode\u003eheaders=\u003c/code\u003e entries precedence over \u003ccode\u003eHTTP_\u003c/code\u003e arguments, and the last duplicate key wins in a dict literal, so appending converted entries at the end previously flipped which value took effect.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#723](https://github.com/adamchainz/django-upgrade/issues/723) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/723\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etestcase_databases \u0026lt;testcase_databases\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003emulti_db = False\u003c/code\u003e to \u003ccode\u003edatabases = [\u0026quot;default\u0026quot;]\u003c/code\u003e rather than \u003ccode\u003edatabases = []\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/423ab5081e037d3c692113d654d49ea9e3ee0066\"\u003e\u003ccode\u003e423ab50\u003c/code\u003e\u003c/a\u003e Version 1.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7b1224a970289729eb50a1fffca04844a8c1ab1f\"\u003e\u003ccode\u003e7b1224a\u003c/code\u003e\u003c/a\u003e Tidy changelog (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/63607890eb3090bded91c6432b43948a1757bd1e\"\u003e\u003ccode\u003e6360789\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eforms_model_multiple_choice_field\u003c/code\u003e corrupting concatenated keys (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/02a46831ceb213421761f312e1368fa7b7e796d9\"\u003e\u003ccode\u003e02a4683\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etestcase_databases\u003c/code\u003e mapping of \u003ccode\u003emulti_db = False\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/bc85eb958b63b752cbd7454d6378e51ca50d891d\"\u003e\u003ccode\u003ebc85eb9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_decorators\u003c/code\u003e hoisting values above their definitions (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/4eb5abf3734ba10c96dd53abdf98e50c78c4adae\"\u003e\u003ccode\u003e4eb5abf\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_register\u003c/code\u003e referencing models defined after the admin class (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d782084a4fe43286d6b4b2d11676efad0a1356cb\"\u003e\u003ccode\u003ed782084\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003esettings_storages\u003c/code\u003e erasing settings referenced elsewhere (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/2f3eb7571f87ae8c62389ac8f977935f81fbe58e\"\u003e\u003ccode\u003e2f3eb75\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etest_http_headers\u003c/code\u003e precedence when merging into \u003ccode\u003eheaders=\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/723\"\u003e#723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d750615a98098ff0c44477041932a04089d5aa47\"\u003e\u003ccode\u003ed750615\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003estringagg\u003c/code\u003e moving import despite bare \u003ccode\u003eStringAgg\u003c/code\u003e references (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/722\"\u003e#722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/49cb8b9c2297d329a8f858beb54fb34e7274830a\"\u003e\u003ccode\u003e49cb8b9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eutils_timezone\u003c/code\u003e matching aliased \u003ccode\u003eutc\u003c/code\u003e imports (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/720\"\u003e#720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/django-upgrade/compare/1.31.1...1.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThis is the first version to be based on DRF 3.18\u003c/li\u003e\n\u003cli\u003eThis is the last version to support \u003ccode\u003edjango-stubs\u003c/code\u003e 6.0.x - next release will require 6.1.x\u003c/li\u003e\n\u003cli\u003eThis is the last version to support Python 3.10 - following django-stubs upstream\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop obsolete coreapi/coreschema from stubs (removed in DRF 3.17) by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1025\"\u003etypeddjango/djangorestframework-stubs#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate stubs for djangorestframework 3.18.0 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1030\"\u003etypeddjango/djangorestframework-stubs#1030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUnlock django-stubs dev dependency pinning in pyproject.toml by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1033\"\u003etypeddjango/djangorestframework-stubs#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1034\"\u003etypeddjango/djangorestframework-stubs#1034\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.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/typeddjango/djangorestframework-stubs/commit/18a30a10d0f0f6811fbd52c27a68d5a0396ae3bb\"\u003e\u003ccode\u003e18a30a1\u003c/code\u003e\u003c/a\u003e Version 3.18.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/31c54035164fd91bc60cb384519ed34bf255e8fa\"\u003e\u003ccode\u003e31c5403\u003c/code\u003e\u003c/a\u003e Update stubs for djangorestframework 3.18.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/40522032009bc3fb8914b5858ffc62979969c4d8\"\u003e\u003ccode\u003e4052203\u003c/code\u003e\u003c/a\u003e Unlock django-stubs pinning in pyproject.toml (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/ebb2bcc45fcdf9304d85efc7e8b2f477c4482b95\"\u003e\u003ccode\u003eebb2bcc\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1031\"\u003e#1031\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/c34d9bb79ada9af7293302c7fcb66ff344a56b69\"\u003e\u003ccode\u003ec34d9bb\u003c/code\u003e\u003c/a\u003e Update dependency django to ==6.1.* (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1023\"\u003e#1023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/762c2d1de8722c640b18afbc4dbf1b3423bd2b5b\"\u003e\u003ccode\u003e762c2d1\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1028\"\u003e#1028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/135195b6d8d52b3c833c65d010df8b4be5fae4ea\"\u003e\u003ccode\u003e135195b\u003c/code\u003e\u003c/a\u003e Update dependency pre-commit to v4.6.2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1027\"\u003e#1027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/41decd6d3de29391fd2aed96aa7750dab572bf40\"\u003e\u003ccode\u003e41decd6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/f5ced24033de0cd0ae75c8f3bbe76753ed2527d4\"\u003e\u003ccode\u003ef5ced24\u003c/code\u003e\u003c/a\u003e Remove coreapi/coreschema from stubs (DRF 3.17+) (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b7ef8fb3a3654cb40f6352f0514050b3ed5a941b\"\u003e\u003ccode\u003eb7ef8fb\u003c/code\u003e\u003c/a\u003e Update dependency djangorestframework to v3.18.0 \u0026amp; create new allowlist (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1024\"\u003e#1024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djlint` from 1.43.1 to 1.44.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/djlint/djLint/releases\"\u003edjlint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.44.2\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eH037\u003c/code\u003e no longer reports two attributes whose names differ only before a \u003ccode\u003e.\u003c/code\u003e as duplicates (\u003ccode\u003edata-a.checked\u003c/code\u003e and \u003ccode\u003edata-b.checked\u003c/code\u003e, or alpine's \u003ccode\u003ex-on:click.prevent\u003c/code\u003e and \u003ccode\u003ex-on:keyup.prevent\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAn attribute whose name merely ends in the name a rule looks for is no longer mistaken for it. \u003ccode\u003edata-alt\u003c/code\u003e and \u003ccode\u003edata-x.alt\u003c/code\u003e left \u003ccode\u003eH013\u003c/code\u003e silent on an image with no \u003ccode\u003ealt\u003c/code\u003e, \u003ccode\u003edata-lang\u003c/code\u003e and \u003ccode\u003exml:lang\u003c/code\u003e silenced \u003ccode\u003eH005\u003c/code\u003e, \u003ccode\u003edata-height\u003c/code\u003e and \u003ccode\u003edata-width\u003c/code\u003e silenced \u003ccode\u003eH006\u003c/code\u003e, \u003ccode\u003edata-name=\u0026quot;description\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH030\u003c/code\u003e and \u003ccode\u003edata-name=\u0026quot;keywords\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH031\u003c/code\u003e, and \u003ccode\u003edata-x.id\u003c/code\u003e satisfied a \u003ccode\u003e\u0026lt;label for\u0026gt;\u003c/code\u003e for \u003ccode\u003eH042\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eA name written inside an attribute value is no longer read as an attribute. \u003ccode\u003etitle=\u0026quot;alt=x\u0026quot;\u003c/code\u003e left \u003ccode\u003eH013\u003c/code\u003e silent, \u003ccode\u003eclass=\u0026quot;language-en\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH005\u003c/code\u003e, and \u003ccode\u003etitle=\u0026quot;the ID=5\u0026quot;\u003c/code\u003e was reported by \u003ccode\u003eH010\u003c/code\u003e as an uppercase attribute name.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eH005\u003c/code\u003e no longer reports a tag whose name only starts with \u003ccode\u003ehtml\u003c/code\u003e, such as \u003ccode\u003e\u0026lt;htmlx\u0026gt;\u003c/code\u003e, and points at the \u003ccode\u003e\u0026lt;html\u0026gt;\u003c/code\u003e tag itself rather than at everything up to the last \u003ccode\u003e\u0026gt;\u003c/code\u003e in the file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.44.1\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFormatting no longer changes what the page renders. A space that shows was dropped (\u003ccode\u003e\u0026lt;span\u0026gt;a\u0026lt;/span\u0026gt;\u0026lt;span\u0026gt; b \u0026lt;/span\u0026gt;\u003c/code\u003e rendered as \u003ccode\u003eab\u003c/code\u003e, \u003ccode\u003ea{% if x %} b {% endif %}c\u003c/code\u003e as \u003ccode\u003eabc\u003c/code\u003e), a space that shows nothing was added (\u003ccode\u003e\u0026lt;span\u0026gt;     \u0026lt;/span\u0026gt;\u003c/code\u003e became \u003ccode\u003e\u0026lt;span\u0026gt; \u0026lt;/span\u0026gt;\u003c/code\u003e), and moving a tag onto its own line could add one (\u003ccode\u003ex\u0026lt;img\u0026gt;y\u003c/code\u003e, or across a comment as in \u003ccode\u003ea{# c #}\u0026lt;img\u0026gt;\u003c/code\u003e). Whitespace is now kept where it renders and dropped where it does not.\u003c/li\u003e\n\u003cli\u003eA line break inside an attribute value is kept, so a \u003ccode\u003etitle\u003c/code\u003e tooltip no longer loses a line and a \u003ccode\u003edata-\u003c/code\u003e value read by script no longer comes back different. Line breaks in \u003ccode\u003eclass\u003c/code\u003e, \u003ccode\u003estyle\u003c/code\u003e, \u003ccode\u003esrcset\u003c/code\u003e and \u003ccode\u003esizes\u003c/code\u003e mean nothing and are still joined.\u003c/li\u003e\n\u003cli\u003eIndentation inside \u003ccode\u003e\u0026lt;pre\u0026gt;\u003c/code\u003e and \u003ccode\u003e\u0026lt;textarea\u0026gt;\u003c/code\u003e is left alone when the closing tag has something after it on its line (\u003ccode\u003e\u0026lt;pre\u0026gt;  a\\n  b\u0026lt;/pre\u0026gt; tail\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWhitespace css does not collapse, such as U+2005, is text, and is no longer stripped from the edges of an element or of the file.\u003c/li\u003e\n\u003cli\u003eTwo indenting fixes: a line that closes one tag and opens another (\u003ccode\u003e\u0026lt;/b\u0026gt;\u0026lt;i\u0026gt;\u003c/code\u003e) indents its contents again, and a line that closes more tags than it opens unindents even when a whole tag ends it (\u003ccode\u003e\u0026lt;/b\u0026gt;\u0026lt;small\u0026gt;\u0026lt;/small\u0026gt;\u003c/code\u003e). Both left the lines after them at the wrong level.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--line-break-after-multiline-tag\u003c/code\u003e now applies only to tags actually written over several lines, as its help says. It was holding back the content of every element, splitting tags that fit on one line.\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003eclass\u003c/code\u003e value is tidied wherever it was written: \u003ccode\u003eclass=\u0026quot; a  b \u0026quot;\u003c/code\u003e becomes \u003ccode\u003eclass=\u0026quot;a b\u0026quot;\u003c/code\u003e. A tag whose attribute value holds a line break is spread over lines, since it cannot fit on one.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.44.0\u003c/h2\u003e\n\u003ch3\u003eFeature\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ccode\u003e--allow-empty-input\u003c/code\u003e option, and the matching \u003ccode\u003eallow_empty_input\u003c/code\u003e config key, exits \u003ccode\u003e0\u003c/code\u003e instead o...\n\n_Description has been truncated_","html_url":"https://github.com/kathalsahab/expense_tracker/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kathalsahab%2Fexpense_tracker/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"},{"uuid":"5217114662","node_id":"PR_kwDOToIJA88AAAABAlj9Qg","number":15,"state":"closed","title":"Bump the python group across 1 directory with 17 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T18:36:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-21T18:38:25.000Z","updated_at":"2026-09-04T18:36:24.000Z","time_to_close":1209477,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":17,"packages":[{"name":"django","old_version":"6.0.7","new_version":"6.1","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"redis","old_version":"8.0.1","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.15.2","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.7","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.43.1","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.16.0","new_version":"0.16.3","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 17 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.7` | `6.1` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [django-anymail[sendgrid]](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [redis](https://github.com/redis/redis-py) | `8.0.1` | `8.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.2` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.7` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.43.1` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.0` | `0.16.3` |\n\n\nUpdates `django` from 6.0.7 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fe0a859f537d4238cf49fca39073513206f83122\"\u003e\u003ccode\u003efe0a859\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/62770454c1beb3e9b0ef1f7c35c5670b4df935d8\"\u003e\u003ccode\u003e6277045\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated man page for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fc78c5cdbb621dff3893c109433022896022fde1\"\u003e\u003ccode\u003efc78c5c\u003c/code\u003e\u003c/a\u003e [6.1.x] Finalized release notes for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c58d86162cd59602df96f0e716cae9849acb3ddb\"\u003e\u003ccode\u003ec58d861\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dc1b8deff467010aaae71471ae12ebc82188a8a3\"\u003e\u003ccode\u003edc1b8de\u003c/code\u003e\u003c/a\u003e [6.1.x] Added missing lang override in translation fetching helper for Serbia...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1f5bf635df6f0919191f649aef29acb3063978f2\"\u003e\u003ccode\u003e1f5bf63\u003c/code\u003e\u003c/a\u003e [6.1.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36735\"\u003e#36735\u003c/a\u003e -- Added DatabaseFeatures.supports_uuid4_function_in_defa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/809998448b45284aa6152112feb46d927b209019\"\u003e\u003ccode\u003e8099984\u003c/code\u003e\u003c/a\u003e [6.1.x] Added CVE-2026-15307, CVE-2026-15337, CVE-2026-15830, and CVE-2026-15...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a\"\u003e\u003ccode\u003e5a260d3\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15920 -- Made display_for_field() validate URLs before...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/9e4a3f186b6b07b483bfd9195ea06734663fcd06\"\u003e\u003ccode\u003e9e4a3f1\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15830 -- Mitigated potential DoS via nested geometry c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5b3523d29be25948e1dd90b3863a002f00fc865f\"\u003e\u003ccode\u003e5b3523d\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15337 -- Mitigated potential DoS in check_for_language().\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.7...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail[sendgrid]` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail[sendgrid]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail[sendgrid]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\nin Django's documentation for recommendations.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.1 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreams\u003c/strong\u003e — \u003ccode\u003eMAXCOUNT\u003c/code\u003e / \u003ccode\u003eMAXSIZE\u003c/code\u003e options for \u003ccode\u003eXREAD\u003c/code\u003e and \u003ccode\u003eXREADGROUP\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTime Series\u003c/strong\u003e — \u003ccode\u003eTS.READ\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e), \u003ccode\u003eTS.QUERYLABELS\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e), \u003ccode\u003eTS.NRANGE\u003c/code\u003e / \u003ccode\u003eTS.NREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e),\nand an \u003ccode\u003eexclude_empty\u003c/code\u003e (\u003ccode\u003eEXCLUDEEMPTY\u003c/code\u003e) option for \u003ccode\u003eTS.MRANGE\u003c/code\u003e / \u003ccode\u003eTS.MREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSearch\u003c/strong\u003e — \u003ccode\u003eFT.ALIASLIST\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e) and a \u003ccode\u003eCOLLECT\u003c/code\u003e reducer for aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSentinel\u003c/strong\u003e — replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TS.NRANGE and TS.NREVRANGE support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.READ command support to the timeseries module (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add SDIFFCARD and SUNIONCARD command support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add LMOVEM and BLMOVEM commands for moving multiple list elements (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add async maintenance-notifications support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add COLLECT reducer support to search aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and TS.MREVRANGE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.QUERYLABELS support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Experimental\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add client-side HIMPORT fieldset support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe feature considered unstable and \u003cstrong\u003epublic API might be changed in the future minor version\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: detect closed pooled connection without consuming pending push data (RESP3 + hiredis) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4156\"\u003e#4156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Sentinel pool capacity loss after failover (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4193\"\u003e#4193\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683\"\u003e\u003ccode\u003ee013126\u003c/code\u003e\u003c/a\u003e Testing with 8.10 GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4227\"\u003e#4227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1\"\u003e\u003ccode\u003e059d1e9\u003c/code\u003e\u003c/a\u003e Fixed TS.NRANGE commands to correctly apply aggregators (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4225\"\u003e#4225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f\"\u003e\u003ccode\u003ed486a0a\u003c/code\u003e\u003c/a\u003e Fix FIELDNAME alias dropping first character of un-prefixed fields (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4224\"\u003e#4224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2\"\u003e\u003ccode\u003efb93104\u003c/code\u003e\u003c/a\u003e feat: add client-side HIMPORT fieldset support for standalone and cluster cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9\"\u003e\u003ccode\u003e9197609\u003c/code\u003e\u003c/a\u003e Fix lat/lon swap in search querystring geo() helper (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb\"\u003e\u003ccode\u003e14714a0\u003c/code\u003e\u003c/a\u003e fix: Fixed double decoding issue with unquote() (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a\"\u003e\u003ccode\u003e227280a\u003c/code\u003e\u003c/a\u003e Update lib version to 8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056\"\u003e\u003ccode\u003e88d16d0\u003c/code\u003e\u003c/a\u003e Decode ACL LOG string values on the default RESP3 legacy callback (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4201\"\u003e#4201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76\"\u003e\u003ccode\u003e599fd75\u003c/code\u003e\u003c/a\u003e feat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7\"\u003e\u003ccode\u003e71e275e\u003c/code\u003e\u003c/a\u003e test: add VectorField RERANK serialization tests for sync and async search (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v8.0.1...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.2 to 7.15.4\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.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\u003c/blockquote\u003e\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.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in the HTML report, a source file name containing a double quote (legal\non POSIX) wasn't escaped where it's dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index\nand prev/next links, so it could close the attribute early and inject markup.\nPage URLs are now escaped. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2227_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report wrote file names and other fields into its\nline-oriented records without neutralizing control characters. A measured\nfile whose name contained a newline (legal on POSIX) could forge extra\nrecords, inflating the coverage seen by tools that read the report. Control\ncharacters in a field are now replaced. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2226_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels are now provided for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2226: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003ecoveragepy/coveragepy#2226\u003c/a\u003e\n.. _pull 2227: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003ecoveragepy/coveragepy#2227\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the\ncombination would be prevented when read from the coverage.py configuration.\nBut using the context API as pytest-cov does, contexts would be silently\ndropped. Now a warning is issued, thanks to \u003ccode\u003eJisang Han \u0026lt;pull 2234_\u0026gt;\u003c/code\u003e\u003cem\u003e.\nCloses \u003ccode\u003eissue 2200\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA performance improvement in the low-level line number bookkeeping when\ncombining data files, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2239_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance improvement in HTML reporting by reducing the number of times\nfiles have to be parsed, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2240_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2200: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003ecoveragepy/coveragepy#2200\u003c/a\u003e\n.. _pull 2234: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003ecoveragepy/coveragepy#2234\u003c/a\u003e\n.. _pull 2239: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003ecoveragepy/coveragepy#2239\u003c/a\u003e\n.. _pull 2240: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2240\"\u003ecoveragepy/coveragepy#2240\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-2:\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/4c0e7ff425ecbb33e2b994b41118a71eb4e39021\"\u003e\u003ccode\u003e4c0e7ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/db4cc3216ca5bb436eba697aaa74d886e4ea82c8\"\u003e\u003ccode\u003edb4cc32\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c33085c3fcec4dd01fc3a0419c90de7ee6b869a7\"\u003e\u003ccode\u003ec33085c\u003c/code\u003e\u003c/a\u003e style: start gradual move to ruff 0.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53a0fd51ba05047624baf58bf8f288d56185df93\"\u003e\u003ccode\u003e53a0fd5\u003c/code\u003e\u003c/a\u003e fix: neutralize control characters in lcov report fields (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b64d53dd6f113b68a19ac6c1b855e34bbebfad4e\"\u003e\u003ccode\u003eb64d53d\u003c/code\u003e\u003c/a\u003e build: make 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53792ab496adf740a38d1f67e0162705b4d67c07\"\u003e\u003ccode\u003e53792ab\u003c/code\u003e\u003c/a\u003e build: show the python version for kits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f6b03c77ffb8d58b25950bae63d36b7a1c585a70\"\u003e\u003ccode\u003ef6b03c7\u003c/code\u003e\u003c/a\u003e chore: make upgrade_one package=cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d9b660ac2a6bc64a39c4a2e7f195bb6bd6f7af89\"\u003e\u003ccode\u003ed9b660a\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b128a3172ec0cc4d70398f663e56d0362f5de4ea\"\u003e\u003ccode\u003eb128a31\u003c/code\u003e\u003c/a\u003e docs: oops, move this entry to the correct place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a7a2c15669cc6e8fdb46e5012954c795a63e9a27\"\u003e\u003ccode\u003ea7a2c15\u003c/code\u003e\u003c/a\u003e fix: escape filename urls in html report href attributes (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.2...7.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f307de14d1a533273b6de7bd39579b043eb54a99\"\u003e\u003ccode\u003ef307de1\u003c/code\u003e\u003c/a\u003e Version 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/73951a4c517bafa5369228f2fca8306510f1cbf1\"\u003e\u003ccode\u003e73951a4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2439\"\u003e#2439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/678b687e0a30c2657dc21b1d859d1141098997a0\"\u003e\u003ccode\u003e678b687\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/7627683d89fc1c77bc2dc4550f15eede9a86cee6\"\u003e\u003ccode\u003e7627683\u003c/code\u003e\u003c/a\u003e Serialize the TaskResult class for Tasks panel. (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2444\"\u003e#2444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.7 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\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/typeddjango/django-stubs/commit/2ec3fd3ce48e7a92cbe09a114d512dcea50571f7\"\u003e\u003ccode\u003e2ec3fd3\u003c/code\u003e\u003c/a\u003e Version 6.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5868773c9fa5ba236c2cc263799a02acc67f7c0b\"\u003e\u003ccode\u003e5868773\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.69.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3588\"\u003e#3588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e888491e34e5b9073f1c09eb84e91ed7ce36c775\"\u003e\u003ccode\u003ee888491\u003c/code\u003e\u003c/a\u003e Support custom arguments in queryset update methods (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3586\"\u003e#3586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ffd15cac28c39690acd98c3f9af9370f9fadedce\"\u003e\u003ccode\u003effd15ca\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3583\"\u003e#3583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1af6dcf52f19837fdc47b26350d351dea0a139c1\"\u003e\u003ccode\u003e1af6dcf\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.68.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/709e864c79e03239be2234457f59eb66ce69e3c7\"\u003e\u003ccode\u003e709e864\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.69 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5da937c127b581501b5707b547d861b46d8af41c\"\u003e\u003ccode\u003e5da937c\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.68 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3579\"\u003e#3579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7afd2da77ed93d0b3164ea4d203648a6c972f161\"\u003e\u003ccode\u003e7afd2da\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.67 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/07e22f2e4918163d1f3aa1137142cf281b5fbcb1\"\u003e\u003ccode\u003e07e22f2\u003c/code\u003e\u003c/a\u003e Explicit through default manager (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3576\"\u003e#3576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/db47c3b32275b6d6abef915303fd80fde3dd59da\"\u003e\u003ccode\u003edb47c3b\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.17 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.7...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.31.1 to 1.32.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.32.0 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#681](https://github.com/adamchainz/django-upgrade/issues/681) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/681\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eutils_text \u0026lt;utils_text\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003eunescape_entities()\u003c/code\u003e calls with \u003ccode\u003ehtml.unescape()\u003c/code\u003e.\nPreviously it incorrectly used \u003ccode\u003ehtml.escape()\u003c/code\u003e, which performs the inverse operation.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#684](https://github.com/adamchainz/django-upgrade/issues/684) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/684\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer crash on empty \u003ccode\u003eindex_together\u003c/code\u003e declarations.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#685](https://github.com/adamchainz/django-upgrade/issues/685) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/685\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to not add a duplicate \u003ccode\u003eindexes\u003c/code\u003e declaration when the existing one is not a list or tuple literal.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#686](https://github.com/adamchainz/django-upgrade/issues/686) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/686\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to add a missing comma when extending a multiline \u003ccode\u003eindexes\u003c/code\u003e list that has no trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#687](https://github.com/adamchainz/django-upgrade/issues/687) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/687\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to keep an empty \u003ccode\u003eindexes\u003c/code\u003e tuple a tuple when extending it with a single index.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#716](https://github.com/adamchainz/django-upgrade/issues/716) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/716\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eformat_html \u0026lt;format_html\u0026gt;\u003c/code\u003e fixer to skip calls with a parenthesized argument, where removing the \u003ccode\u003e.format()\u003c/code\u003e call would create a tuple.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#717](https://github.com/adamchainz/django-upgrade/issues/717) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/717\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer to add a missing comma before \u003ccode\u003enull=True\u003c/code\u003e when the final argument contains commas within brackets.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#688](https://github.com/adamchainz/django-upgrade/issues/688) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/688\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix fixers that modify call arguments to not treat a comment inside otherwise empty parentheses as an argument, which made the :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer produce invalid syntax.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#718](https://github.com/adamchainz/django-upgrade/issues/718) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/718\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to avoid a double comma when the existing \u003ccode\u003eheaders=\u003c/code\u003e dict has a trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#689](https://github.com/adamchainz/django-upgrade/issues/689) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/689\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to insert converted headers at the start of an existing \u003ccode\u003eheaders=\u003c/code\u003e dict.\nDjango gives \u003ccode\u003eheaders=\u003c/code\u003e entries precedence over \u003ccode\u003eHTTP_\u003c/code\u003e arguments, and the last duplicate key wins in a dict literal, so appending converted entries at the end previously flipped which value took effect.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#723](https://github.com/adamchainz/django-upgrade/issues/723) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/723\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etestcase_databases \u0026lt;testcase_databases\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003emulti_db = False\u003c/code\u003e to \u003ccode\u003edatabases = [\u0026quot;default\u0026quot;]\u003c/code\u003e rather than \u003ccode\u003edatabases = []\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/423ab5081e037d3c692113d654d49ea9e3ee0066\"\u003e\u003ccode\u003e423ab50\u003c/code\u003e\u003c/a\u003e Version 1.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7b1224a970289729eb50a1fffca04844a8c1ab1f\"\u003e\u003ccode\u003e7b1224a\u003c/code\u003e\u003c/a\u003e Tidy changelog (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/63607890eb3090bded91c6432b43948a1757bd1e\"\u003e\u003ccode\u003e6360789\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eforms_model_multiple_choice_field...\n\n_Description has been truncated_","html_url":"https://github.com/tchongwangbakayoko619-star/api_gestion_biblotheque/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tchongwangbakayoko619-star%2Fapi_gestion_biblotheque/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"},{"uuid":"5216433842","node_id":"PR_kwDOTJHTL88AAAABAlBHzQ","number":96,"state":"closed","title":"chore(deps): bump the python group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T17:08:05.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-21T17:08:34.000Z","updated_at":"2026-09-04T17:08:07.000Z","time_to_close":1209571,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":19,"packages":[{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1"},{"name":"django-crispy-forms","old_version":"2.6","new_version":"2.7","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"drf-spectacular","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/tfranzel/drf-spectacular"},{"name":"flower","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/mher/flower"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"redis","old_version":"8.0.1","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.14.3","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.6","new_version":"6.1.0"},{"name":"djangorestframework-stubs","old_version":"3.17.0","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.39.5","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.0","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.15.20","new_version":"0.16.3","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [django-anymail[mailgun]](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.6` | `2.7` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [drf-spectacular](https://github.com/tfranzel/drf-spectacular) | `0.29.0` | `0.30.0` |\n| [flower](https://github.com/mher/flower) | `2.0.1` | `2.1.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [redis](https://github.com/redis/redis-py) | `8.0.1` | `8.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.14.3` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.6` | `6.1.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.0` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.39.5` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.0` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.20` | `0.16.3` |\n\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail[mailgun]` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail[mailgun]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail[mailgun]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\nin Django's documentation for recommendations.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.6 to 2.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/e7fbb538595dde3a4598b4403e60ecca0905fa74\"\u003e\u003ccode\u003ee7fbb53\u003c/code\u003e\u003c/a\u003e Release 2.7. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1438\"\u003e#1438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/9d6b32129dea4c89caa87218a11192503646b9da\"\u003e\u003ccode\u003e9d6b321\u003c/code\u003e\u003c/a\u003e Bumped github actions versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/974b5b7390c0b11698c348128b164990cb6f044b\"\u003e\u003ccode\u003e974b5b7\u003c/code\u003e\u003c/a\u003e Bumped RTD OS and Python versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/5218268f520ca19c665e6f02a49df647eb977af6\"\u003e\u003ccode\u003e5218268\u003c/code\u003e\u003c/a\u003e Confirmed support for Django 6.1. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/847873cf09f0ee96beb38273190860008a6712dd\"\u003e\u003ccode\u003e847873c\u003c/code\u003e\u003c/a\u003e docs: replace 'basestring' with 'str' (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.6...2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tfranzel/drf-spectacular/releases\"\u003edrf-spectacular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.30.0\u003c/h2\u003e\n\u003cp\u003eAfter working through the backlog for several week, we are finally in a comfortable place again. Thank you to all contributors and users that waited patiently for me the catch up. It does not include all the PRs that were opened, but imho the most critical ones.\u003c/p\u003e\n\u003cp\u003eThis release includes many small improvement, a few bug fixes, updates to the test suite and a renovated test matrix. Some minor schema corrections are to be expected, but nothing drastic. It is mostly fixing small inconsistencies and improving corner cases.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression introduced in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1450\"\u003e#1450\u003c/a\u003e by \u003ca href=\"https://github.com/hoefling\"\u003e\u003ccode\u003e@​hoefling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1469\"\u003etfranzel/drf-spectacular#1469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dependency definition for Django 5.2 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1487\"\u003etfranzel/drf-spectacular#1487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for Django 6.0 and and DRF 3.17 by \u003ca href=\"https://github.com/vgrozdanic\"\u003e\u003ccode\u003e@​vgrozdanic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1496\"\u003etfranzel/drf-spectacular#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Support for unsigned integers uint16, uint32 and uint64 by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1483\"\u003etfranzel/drf-spectacular#1483\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement x-spec-enum-id for type hint Choices. by \u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1486\"\u003etfranzel/drf-spectacular#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClarifies Docs in Customizations.rst by \u003ca href=\"https://github.com/APCBoston\"\u003e\u003ccode\u003e@​APCBoston\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1489\"\u003etfranzel/drf-spectacular#1489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd setting to disable docstring extraction by \u003ca href=\"https://github.com/philipstarkey\"\u003e\u003ccode\u003e@​philipstarkey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1491\"\u003etfranzel/drf-spectacular#1491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for polymorphic built-in drf support by \u003ca href=\"https://github.com/mastacheata\"\u003e\u003ccode\u003e@​mastacheata\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1490\"\u003etfranzel/drf-spectacular#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument \u003ccode\u003edjango-rest-knox\u003c/code\u003e support by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1503\"\u003etfranzel/drf-spectacular#1503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd help text to spectacular management command arguments \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1175\"\u003e#1175\u003c/a\u003e by \u003ca href=\"https://github.com/jbbqqf\"\u003e\u003ccode\u003e@​jbbqqf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1502\"\u003etfranzel/drf-spectacular#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange conflicting license field for 3.8 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1504\"\u003etfranzel/drf-spectacular#1504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1438 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1505\"\u003etfranzel/drf-spectacular#1505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd blueprint for django-rest-knox by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1506\"\u003etfranzel/drf-spectacular#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1499 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1511\"\u003etfranzel/drf-spectacular#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType hint build_bearer_security_scheme_object by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1509\"\u003etfranzel/drf-spectacular#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHousekeeping by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1512\"\u003etfranzel/drf-spectacular#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1501 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1514\"\u003etfranzel/drf-spectacular#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nullable FileField response schema when blank=True (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1493\"\u003e#1493\u003c/a\u003e) by \u003ca href=\"https://github.com/mojtabasohrabi\"\u003e\u003ccode\u003e@​mojtabasohrabi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1501\"\u003etfranzel/drf-spectacular#1501\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/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1487\"\u003etfranzel/drf-spectacular#1487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vgrozdanic\"\u003e\u003ccode\u003e@​vgrozdanic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1496\"\u003etfranzel/drf-spectacular#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1486\"\u003etfranzel/drf-spectacular#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/APCBoston\"\u003e\u003ccode\u003e@​APCBoston\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1489\"\u003etfranzel/drf-spectacular#1489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/philipstarkey\"\u003e\u003ccode\u003e@​philipstarkey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1491\"\u003etfranzel/drf-spectacular#1491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mastacheata\"\u003e\u003ccode\u003e@​mastacheata\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1490\"\u003etfranzel/drf-spectacular#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jbbqqf\"\u003e\u003ccode\u003e@​jbbqqf\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1502\"\u003etfranzel/drf-spectacular#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mojtabasohrabi\"\u003e\u003ccode\u003e@​mojtabasohrabi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1501\"\u003etfranzel/drf-spectacular#1501\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.0\"\u003ehttps://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.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/tfranzel/drf-spectacular/blob/master/CHANGELOG.rst\"\u003edrf-spectacular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.30.0 (2026-07-06)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd OAS 3.2 schema for validation \u0026amp; test\u003c/li\u003e\n\u003cli\u003eType hint build_bearer_security_scheme_object (\u003ccode\u003e[#1509](https://github.com/tfranzel/drf-spectacular/issues/1509) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1509\u0026gt;\u003c/code\u003e_) [johnthagen]\u003c/li\u003e\n\u003cli\u003eFix formatted CharField allow_blank handling (\u003ccode\u003e[#1511](https://github.com/tfranzel/drf-spectacular/issues/1511) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1511\u0026gt;\u003c/code\u003e\u003cem\u003e, (\u003ccode\u003e[#1499](https://github.com/tfranzel/drf-spectacular/issues/1499) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1499\u0026gt;\u003c/code\u003e\u003c/em\u003e)) [Luciano de la Iglesia]\u003c/li\u003e\n\u003cli\u003eConsider allOf anyOf with nullable on OAS3.1 \u003ccode\u003e[#1480](https://github.com/tfranzel/drf-spectacular/issues/1480) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1480\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eProper handling for OAS 3.2\u003c/li\u003e\n\u003cli\u003efix modification of user-provided schematas \u003ccode\u003e[#1500](https://github.com/tfranzel/drf-spectacular/issues/1500) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1500\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003erelax contraint on oneOf null case with OAS3.1 \u003ccode\u003e[#1480](https://github.com/tfranzel/drf-spectacular/issues/1480) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1480\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eAdd blueprint for django-rest-knox (\u003ccode\u003e[#1506](https://github.com/tfranzel/drf-spectacular/issues/1506) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1506\u0026gt;\u003c/code\u003e_) [johnthagen]\u003c/li\u003e\n\u003cli\u003eMitigate GeneratedField lost arguments and special case for DecimalField \u003ccode\u003e[#1166](https://github.com/tfranzel/drf-spectacular/issues/1166) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1166\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eWebhook explicit operationId (\u003ccode\u003e[#1505](https://github.com/tfranzel/drf-spectacular/issues/1505) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1505\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003echange conflicting license field for 3.8 (\u003ccode\u003e[#1504](https://github.com/tfranzel/drf-spectacular/issues/1504) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1504\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eDocument django-rest-knox support [johnthagen]\u003c/li\u003e\n\u003cli\u003eadd help text to spectacular management command arguments \u003ccode\u003e[#1175](https://github.com/tfranzel/drf-spectacular/issues/1175) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1175\u0026gt;\u003c/code\u003e_ [Jean-Baptiste Braun]\u003c/li\u003e\n\u003cli\u003eMark FileField as nullable in response when not required \u003ccode\u003e[#1493](https://github.com/tfranzel/drf-spectacular/issues/1493) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1493\u0026gt;\u003c/code\u003e_ [mojtaba sohrabi]\u003c/li\u003e\n\u003cli\u003eExtend Choices hint fix with generated label description \u003ccode\u003e[#1486](https://github.com/tfranzel/drf-spectacular/issues/1486) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1486\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eSuppress py\u0026lt;=3.14 deprecation warning \u003ccode\u003e[#1497](https://github.com/tfranzel/drf-spectacular/issues/1497) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1497\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eRemove ancient DRF3.11 and Django2.2 due to contrib packages failing\u003c/li\u003e\n\u003cli\u003efeat: add support for django 6.0 and and drf 3.17 [Vjeran Grozdanic]\u003c/li\u003e\n\u003cli\u003eAdd setting to disable docstring extraction [Phil Starkey]\u003c/li\u003e\n\u003cli\u003efeat: add support for polymorphic built-in drf support [Benedikt Bauer]\u003c/li\u003e\n\u003cli\u003eClarifies post-processing hooks [Andy Piltser-Cowan]\u003c/li\u003e\n\u003cli\u003eClarifies customizations step 5 [Andy Piltser-Cowan]\u003c/li\u003e\n\u003cli\u003eFix dependency definition for Django 5.2 [Ülgen Sarıkavak]\u003c/li\u003e\n\u003cli\u003eImplement x-spec-enum-id for type hint Choices. [Noam Kushinsky]\u003c/li\u003e\n\u003cli\u003eAdd Support for unsigned integers uint16, uint32 and uint64 [Nicolas Delaby]\u003c/li\u003e\n\u003cli\u003eFix regression introduced in \u003ccode\u003e[#1450](https://github.com/tfranzel/drf-spectacular/issues/1450) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1450\u0026gt;\u003c/code\u003e_ (\u003ccode\u003e[#1469](https://github.com/tfranzel/drf-spectacular/issues/1469) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1469\u0026gt;\u003c/code\u003e_) [Oleg Höfling]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBreaking changes / important additions:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMany small improvement, bug fixes, updates to the test suite and renovated test matrix. Some minor schema corrections are to be expected, but nothing drastic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/1a5c44a15b2d06744f49285f1f58992f938a05fa\"\u003e\u003ccode\u003e1a5c44a\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/6ba553fc827613d7b36efc9d9f53043e4a2e5443\"\u003e\u003ccode\u003e6ba553f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1514\"\u003e#1514\u003c/a\u003e from tfranzel/pr1501\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d4787a4e2ef0ff4b7c6a72fe3dddf1ea8e8a963c\"\u003e\u003ccode\u003ed4787a4\u003c/code\u003e\u003c/a\u003e Adapt FileField null handling \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d8679422975c68bc3a2c97c278957ec043d915c1\"\u003e\u003ccode\u003ed867942\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1512\"\u003e#1512\u003c/a\u003e from tfranzel/housekeeping26\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/5685cf8b731f9a93d9c66003ac2569d4ef7540a8\"\u003e\u003ccode\u003e5685cf8\u003c/code\u003e\u003c/a\u003e Add OAS 3.2 schema for validation \u0026amp; test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/9fa6f7c1f8d99ef14d9dfa11b89f432ba370242f\"\u003e\u003ccode\u003e9fa6f7c\u003c/code\u003e\u003c/a\u003e minor cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/69033ea1e371fb254731c9e9164fd403ace3c5d4\"\u003e\u003ccode\u003e69033ea\u003c/code\u003e\u003c/a\u003e update linting version due to misleading security warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d9e0de6717c9953b3e9c66da6a5bc6aefb714827\"\u003e\u003ccode\u003ed9e0de6\u003c/code\u003e\u003c/a\u003e Type hint build_bearer_security_scheme_object (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1509\"\u003e#1509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/9b18b302b697ba1a5e86271a7e4d090a5995cc21\"\u003e\u003ccode\u003e9b18b30\u003c/code\u003e\u003c/a\u003e Pr1499 (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1511\"\u003e#1511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/6e3c72ea5df8e8452a2b8c3e792a7cab23814446\"\u003e\u003ccode\u003e6e3c72e\u003c/code\u003e\u003c/a\u003e Consider allOf anyOf with nullable on OAS3.1 \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1480\"\u003e#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flower` from 2.0.1 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/mher/flower/releases\"\u003eflower's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the GitLab authentication handler name by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented database filename by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented max tasks default by \u003ca href=\"https://github.com/masahiro331\"\u003e\u003ccode\u003e@​masahiro331\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1415\"\u003e#1415\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/mher/flower/blob/v2.1.0/CHANGELOG.md\"\u003eflower's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlower 2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design.\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options.\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters.\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard.\u003c/li\u003e\n\u003cli\u003eEnabled API access in the Docker Compose demo.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop.\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined.\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections.\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files.\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the GitLab authentication handler name \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the documented database filename \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\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/mher/flower/commit/3597bd1a94280cb3a3f2cbe53d0b6616f56cbde8\"\u003e\u003ccode\u003e3597bd1\u003c/code\u003e\u003c/a\u003e Set release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/d083f7317e4e273ff62de59082b89ce390cecf50\"\u003e\u003ccode\u003ed083f73\u003c/code\u003e\u003c/a\u003e Update documentation for 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b58869bcdcceb46d37d806fee8698fefd9d94bd9\"\u003e\u003ccode\u003eb58869b\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/e6cf8ef78776098bf8d3f1674056fc00dd62e388\"\u003e\u003ccode\u003ee6cf8ef\u003c/code\u003e\u003c/a\u003e Add Python 3.13 and 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/8ecede927b87e49ddb2856fbf61f7577d3c87273\"\u003e\u003ccode\u003e8ecede9\u003c/code\u003e\u003c/a\u003e Document custom authentication providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/00d310bb92914a21318052aa4ed02a996a95ca00\"\u003e\u003ccode\u003e00d310b\u003c/code\u003e\u003c/a\u003e Persist dashboard counters across restarts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/0a5116087085596a466caee4caa473da1a8b8394\"\u003e\u003ccode\u003e0a51160\u003c/code\u003e\u003c/a\u003e Purge offline workers from metrics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/72a09c8795d29b4a8e042285bff4e9ac2b7afda4\"\u003e\u003ccode\u003e72a09c8\u003c/code\u003e\u003c/a\u003e Prevent duplicate worker inspections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/17ead90a68a2eec82be3e03c9f0350f02ddc60dd\"\u003e\u003ccode\u003e17ead90\u003c/code\u003e\u003c/a\u003e Make Redis queue inspection non-blocking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b11ddcb2175c47ac0001b3744d4e3bad41bc6ba4\"\u003e\u003ccode\u003eb11ddcb\u003c/code\u003e\u003c/a\u003e Update blocking operation handling\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mher/flower/compare/v2.0.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.2.0 to 12.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove non-image ImageCms modes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9697\"\u003e#9697\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd release notes for SBOM and performance improvements \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd security release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9741\"\u003e#9741\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd release notes for Python 3.15 beta wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9696\"\u003e#9696\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eImageFont can also be used with ImageText \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9597\"\u003e#9597\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdditional guidelines for security reports \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9659\"\u003e#9659\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFixed typo \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9636\"\u003e#9636\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9591\"\u003e#9591\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRevise development support information in README \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9583\"\u003e#9583\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd INCIDENT_RESPONSE.md \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9555\"\u003e#9555\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd STRIDE threat model to security docs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9562\"\u003e#9562\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9556\"\u003e#9556\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate README with revised security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9553\"\u003e#9553\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9552\"\u003e#9552\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9534\"\u003e#9534\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9720\"\u003e#9720\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9653\"\u003e#9653\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v4 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9665\"\u003e#9665\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9655\"\u003e#9655\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libavif to v1.4.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9652\"\u003e#9652\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9651\"\u003e#9651\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency check-jsonschema to v0.37.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9650\"\u003e#9650\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate google/oss-fuzz digest to d872252 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9614\"\u003e#9614\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9609\"\u003e#9609\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libpng to v1.6.58 - autoclosed \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9608\"\u003e#9608\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9610\"\u003e#9610\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.20.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9599\"\u003e#9599\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9611\"\u003e#9611\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9607\"\u003e#9607\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMove dependency versions to single JSON and enable Renovate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9559\"\u003e#9559\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated raqm to 0.10.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9557\"\u003e#9557\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9532\"\u003e#9532\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTesting\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove matrix.os from benchmark \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9735\"\u003e#9735\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRemove references to libavif patch \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9734\"\u003e#9734\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd benchmark tests \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9654\"\u003e#9654\u003c/a\u003e [\u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUse reshape() instead of setting NumPy array shape directly \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9728\"\u003e#9728\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d\"\u003e\u003ccode\u003ebb1d8e8\u003c/code\u003e\u003c/a\u003e 12.3.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e63fc481dc2e07e21d5403deafb8f1ed98a513af\"\u003e\u003ccode\u003ee63fc48\u003c/code\u003e\u003c/a\u003e Add release notes for SBOM and performance improvements (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/13b701bbab291eec4bc87ea17ba06c94e5fe3054\"\u003e\u003ccode\u003e13b701b\u003c/code\u003e\u003c/a\u003e Add release notes for \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5564ca72fcd59d040e270af5dcf17a0d7161c364\"\u003e\u003ccode\u003e5564ca7\u003c/code\u003e\u003c/a\u003e List methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a0920fd384f800b5d0ba3dd29ecdeae4f1d4043b\"\u003e\u003ccode\u003ea0920fd\u003c/code\u003e\u003c/a\u003e Speed up ImageChops operations (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9738\"\u003e#9738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/07e9a6cd5336dc6cf8cae9165cd70cdd2b3e42fc\"\u003e\u003ccode\u003e07e9a6c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.filter()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9736\"\u003e#9736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a94578cf9649ea13e426cf7fb2b71b39ffc0dd50\"\u003e\u003ccode\u003ea94578c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.getchannel()\u003c/code\u003e, \u003ccode\u003eImage.merge()\u003c/code\u003e, \u003ccode\u003eImage.putalpha()\u003c/code\u003e and `Image...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/53e02c43c919d149b2a154a5180079f9df18fbbb\"\u003e\u003ccode\u003e53e02c4\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.fill()\u003c/code\u003e, \u003ccode\u003eImage.linear_gradient()\u003c/code\u003e and `Image.radial_gradient...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/af037475be8634ba739744243164ba9e2c8346a6\"\u003e\u003ccode\u003eaf03747\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.resample()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9739\"\u003e#9739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5c9ca56c3e5fba52b647809fbb0986c87e73a571\"\u003e\u003ccode\u003e5c9ca56\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003ealpha_composite\u003c/code\u003e, \u003ccode\u003ematrix\u003c/code\u003e, \u003ccode\u003enegative\u003c/code\u003e, \u003ccode\u003equantize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9740\"\u003e#9740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.2.0...12.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.1 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href...\n\n_Description has been truncated_","html_url":"https://github.com/shaoqian-dev/ConvoCore/pull/96","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaoqian-dev%2FConvoCore/issues/96","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/96/packages"},{"uuid":"5174264670","node_id":"PR_kwDOISxU_88AAAABADJM4g","number":2260,"state":"open","title":"Bump djangorestframework-stubs from 3.17.1 to 3.18.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-08-17T18:36:31.000Z","updated_at":"2026-08-30T04:15:55.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"}],"path":null,"ecosystem":"pip"},"body":"Bumps [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) from 3.17.1 to 3.18.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThis is the first version to be based on DRF 3.18\u003c/li\u003e\n\u003cli\u003eThis is the last version to support \u003ccode\u003edjango-stubs\u003c/code\u003e 6.0.x - next release will require 6.1.x\u003c/li\u003e\n\u003cli\u003eThis is the last version to support Python 3.10 - following django-stubs upstream\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop obsolete coreapi/coreschema from stubs (removed in DRF 3.17) by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1025\"\u003etypeddjango/djangorestframework-stubs#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate stubs for djangorestframework 3.18.0 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1030\"\u003etypeddjango/djangorestframework-stubs#1030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUnlock django-stubs dev dependency pinning in pyproject.toml by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1033\"\u003etypeddjango/djangorestframework-stubs#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1034\"\u003etypeddjango/djangorestframework-stubs#1034\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.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/typeddjango/djangorestframework-stubs/commit/18a30a10d0f0f6811fbd52c27a68d5a0396ae3bb\"\u003e\u003ccode\u003e18a30a1\u003c/code\u003e\u003c/a\u003e Version 3.18.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/31c54035164fd91bc60cb384519ed34bf255e8fa\"\u003e\u003ccode\u003e31c5403\u003c/code\u003e\u003c/a\u003e Update stubs for djangorestframework 3.18.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/40522032009bc3fb8914b5858ffc62979969c4d8\"\u003e\u003ccode\u003e4052203\u003c/code\u003e\u003c/a\u003e Unlock django-stubs pinning in pyproject.toml (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/ebb2bcc45fcdf9304d85efc7e8b2f477c4482b95\"\u003e\u003ccode\u003eebb2bcc\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1031\"\u003e#1031\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/c34d9bb79ada9af7293302c7fcb66ff344a56b69\"\u003e\u003ccode\u003ec34d9bb\u003c/code\u003e\u003c/a\u003e Update dependency django to ==6.1.* (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1023\"\u003e#1023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/762c2d1de8722c640b18afbc4dbf1b3423bd2b5b\"\u003e\u003ccode\u003e762c2d1\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1028\"\u003e#1028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/135195b6d8d52b3c833c65d010df8b4be5fae4ea\"\u003e\u003ccode\u003e135195b\u003c/code\u003e\u003c/a\u003e Update dependency pre-commit to v4.6.2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1027\"\u003e#1027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/41decd6d3de29391fd2aed96aa7750dab572bf40\"\u003e\u003ccode\u003e41decd6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/f5ced24033de0cd0ae75c8f3bbe76753ed2527d4\"\u003e\u003ccode\u003ef5ced24\u003c/code\u003e\u003c/a\u003e Remove coreapi/coreschema from stubs (DRF 3.17+) (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b7ef8fb3a3654cb40f6352f0514050b3ed5a941b\"\u003e\u003ccode\u003eb7ef8fb\u003c/code\u003e\u003c/a\u003e Update dependency djangorestframework to v3.18.0 \u0026amp; create new allowlist (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1024\"\u003e#1024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=djangorestframework-stubs\u0026package-manager=pip\u0026previous-version=3.17.1\u0026new-version=3.18.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Open-Source-Legal/OpenContracts/pull/2260","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-Source-Legal%2FOpenContracts/issues/2260","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2260/packages"},{"uuid":"5149801503","node_id":"PR_kwDOTXBVTc7_AKkz","number":36,"state":"closed","title":"Bump the python group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-08-19T08:27:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-14T08:28:56.000Z","updated_at":"2026-08-19T08:27:06.000Z","time_to_close":431885,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":15,"packages":[{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.0"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1","repository_url":"https://github.com/anymail/django-anymail"},{"name":"django-crispy-forms","old_version":"2.6","new_version":"2.7","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"redis","old_version":"8.0.1","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.15.1","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.6","new_version":"6.0.9"},{"name":"djangorestframework-stubs","old_version":"3.17.0","new_version":"3.17.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.40.5","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.0","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.15.21","new_version":"0.16.2","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.0` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.6` | `2.7` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [redis](https://github.com/redis/redis-py) | `8.0.1` | `8.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.1` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.0` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.6` | `6.0.9` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.0` | `3.17.1` |\n| [djlint](https://github.com/djlint/djLint) | `1.40.5` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.0` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.21` | `0.16.2` |\n\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\u003cbr /\u003e\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\u003cbr /\u003e\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\u003cbr /\u003e\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\u003cbr /\u003e\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\u003cbr /\u003e\nin Django's documentation for recommendations.\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.6 to 2.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/e7fbb538595dde3a4598b4403e60ecca0905fa74\"\u003e\u003ccode\u003ee7fbb53\u003c/code\u003e\u003c/a\u003e Release 2.7. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1438\"\u003e#1438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/9d6b32129dea4c89caa87218a11192503646b9da\"\u003e\u003ccode\u003e9d6b321\u003c/code\u003e\u003c/a\u003e Bumped github actions versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/974b5b7390c0b11698c348128b164990cb6f044b\"\u003e\u003ccode\u003e974b5b7\u003c/code\u003e\u003c/a\u003e Bumped RTD OS and Python versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/5218268f520ca19c665e6f02a49df647eb977af6\"\u003e\u003ccode\u003e5218268\u003c/code\u003e\u003c/a\u003e Confirmed support for Django 6.1. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/847873cf09f0ee96beb38273190860008a6712dd\"\u003e\u003ccode\u003e847873c\u003c/code\u003e\u003c/a\u003e docs: replace 'basestring' with 'str' (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.6...2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.1 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreams\u003c/strong\u003e — \u003ccode\u003eMAXCOUNT\u003c/code\u003e / \u003ccode\u003eMAXSIZE\u003c/code\u003e options for \u003ccode\u003eXREAD\u003c/code\u003e and \u003ccode\u003eXREADGROUP\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTime Series\u003c/strong\u003e — \u003ccode\u003eTS.READ\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e), \u003ccode\u003eTS.QUERYLABELS\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e), \u003ccode\u003eTS.NRANGE\u003c/code\u003e / \u003ccode\u003eTS.NREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e),\nand an \u003ccode\u003eexclude_empty\u003c/code\u003e (\u003ccode\u003eEXCLUDEEMPTY\u003c/code\u003e) option for \u003ccode\u003eTS.MRANGE\u003c/code\u003e / \u003ccode\u003eTS.MREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSearch\u003c/strong\u003e — \u003ccode\u003eFT.ALIASLIST\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e) and a \u003ccode\u003eCOLLECT\u003c/code\u003e reducer for aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSentinel\u003c/strong\u003e — replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TS.NRANGE and TS.NREVRANGE support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.READ command support to the timeseries module (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add SDIFFCARD and SUNIONCARD command support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add LMOVEM and BLMOVEM commands for moving multiple list elements (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add async maintenance-notifications support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add COLLECT reducer support to search aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and TS.MREVRANGE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.QUERYLABELS support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Experimental\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add client-side HIMPORT fieldset support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe feature considered unstable and \u003cstrong\u003epublic API might be changed in the future minor version\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: detect closed pooled connection without consuming pending push data (RESP3 + hiredis) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4156\"\u003e#4156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Sentinel pool capacity loss after failover (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4193\"\u003e#4193\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683\"\u003e\u003ccode\u003ee013126\u003c/code\u003e\u003c/a\u003e Testing with 8.10 GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4227\"\u003e#4227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1\"\u003e\u003ccode\u003e059d1e9\u003c/code\u003e\u003c/a\u003e Fixed TS.NRANGE commands to correctly apply aggregators (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4225\"\u003e#4225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f\"\u003e\u003ccode\u003ed486a0a\u003c/code\u003e\u003c/a\u003e Fix FIELDNAME alias dropping first character of un-prefixed fields (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4224\"\u003e#4224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2\"\u003e\u003ccode\u003efb93104\u003c/code\u003e\u003c/a\u003e feat: add client-side HIMPORT fieldset support for standalone and cluster cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9\"\u003e\u003ccode\u003e9197609\u003c/code\u003e\u003c/a\u003e Fix lat/lon swap in search querystring geo() helper (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb\"\u003e\u003ccode\u003e14714a0\u003c/code\u003e\u003c/a\u003e fix: Fixed double decoding issue with unquote() (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a\"\u003e\u003ccode\u003e227280a\u003c/code\u003e\u003c/a\u003e Update lib version to 8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056\"\u003e\u003ccode\u003e88d16d0\u003c/code\u003e\u003c/a\u003e Decode ACL LOG string values on the default RESP3 legacy callback (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4201\"\u003e#4201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76\"\u003e\u003ccode\u003e599fd75\u003c/code\u003e\u003c/a\u003e feat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7\"\u003e\u003ccode\u003e71e275e\u003c/code\u003e\u003c/a\u003e test: add VectorField RERANK serialization tests for sync and async search (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v8.0.1...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.1 to 7.15.4\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.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\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.15.2\"\u003ecoverage 7.15.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.15.2\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.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in the HTML report, a source file name containing a double quote (legal\non POSIX) wasn't escaped where it's dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index\nand prev/next links, so it could close the attribute early and inject markup.\nPage URLs are now escaped. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2227_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report wrote file names and other fields into its\nline-oriented records without neutralizing control characters. A measured\nfile whose name contained a newline (legal on POSIX) could forge extra\nrecords, inflating the coverage seen by tools that read the report. Control\ncharacters in a field are now replaced. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2226_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels are now provided for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2226: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003ecoveragepy/coveragepy#2226\u003c/a\u003e\n.. _pull 2227: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003ecoveragepy/coveragepy#2227\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the\ncombination would be prevented when read from the coverage.py configuration.\nBut using the context API as pytest-cov does, contexts would be silently\ndropped. Now a warning is issued, thanks to \u003ccode\u003eJisang Han \u0026lt;pull 2234_\u0026gt;\u003c/code\u003e\u003cem\u003e.\nCloses \u003ccode\u003eissue 2200\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA performance improvement in the low-level line number bookkeeping when\ncombining data files, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2239_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance improvement in HTML reporting by reducing the number of times\nfiles have to be parsed, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2240_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2200: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003ecoveragepy/coveragepy#2200\u003c/a\u003e\n.. _pull 2234: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003ecoveragepy/coveragepy#2234\u003c/a\u003e\n.. _pull 2239: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003ecoveragepy/coveragepy#2239\u003c/a\u003e\n.. _pull 2240: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2240\"\u003ecoveragepy/coveragepy#2240\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-2:\u003c/p\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\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/4c0e7ff425ecbb33e2b994b41118a71eb4e39021\"\u003e\u003ccode\u003e4c0e7ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/db4cc3216ca5bb436eba697aaa74d886e4ea82c8\"\u003e\u003ccode\u003edb4cc32\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c33085c3fcec4dd01fc3a0419c90de7ee6b869a7\"\u003e\u003ccode\u003ec33085c\u003c/code\u003e\u003c/a\u003e style: start gradual move to ruff 0.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53a0fd51ba05047624baf58bf8f288d56185df93\"\u003e\u003ccode\u003e53a0fd5\u003c/code\u003e\u003c/a\u003e fix: neutralize control characters in lcov report fields (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b64d53dd6f113b68a19ac6c1b855e34bbebfad4e\"\u003e\u003ccode\u003eb64d53d\u003c/code\u003e\u003c/a\u003e build: make 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53792ab496adf740a38d1f67e0162705b4d67c07\"\u003e\u003ccode\u003e53792ab\u003c/code\u003e\u003c/a\u003e build: show the python version for kits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f6b03c77ffb8d58b25950bae63d36b7a1c585a70\"\u003e\u003ccode\u003ef6b03c7\u003c/code\u003e\u003c/a\u003e chore: make upgrade_one package=cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d9b660ac2a6bc64a39c4a2e7f195bb6bd6f7af89\"\u003e\u003ccode\u003ed9b660a\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b128a3172ec0cc4d70398f663e56d0362f5de4ea\"\u003e\u003ccode\u003eb128a31\u003c/code\u003e\u003c/a\u003e docs: oops, move this entry to the correct place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a7a2c15669cc6e8fdb46e5012954c795a63e9a27\"\u003e\u003ccode\u003ea7a2c15\u003c/code\u003e\u003c/a\u003e fix: escape filename urls in html report href attributes (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.1...7.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/b63f4fa366405f77304e8df35f1329307c7c65ca\"\u003e\u003ccode\u003eb63f4fa\u003c/code\u003e\u003c/a\u003e Actually run the Selenium tests in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/263eb79e955b9ac1cddd8c5f99d0d039711f19fa\"\u003e\u003ccode\u003e263eb79\u003c/code\u003e\u003c/a\u003e Find the toolbar window inside the shadow root when a panel errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/08151f299c5379ff8c722d1df0e169ced3373661\"\u003e\u003ccode\u003e08151f2\u003c/code\u003e\u003c/a\u003e Show the SQL select and explain buttons for queries without parameters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/b10582ef24548bb5440c5d5f17d99f2bcbed1253\"\u003e\u003ccode\u003eb10582e\u003c/code\u003e\u003c/a\u003e Assert on table textContent in the Selenium tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.6 to 6.0.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect form base classes with \u003ccode\u003ehas_base\u003c/code\u003e instead of a metadata registry by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3520\"\u003etypeddjango/django-stubs#3520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType args files contenttypes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3523\"\u003etypeddjango/django-stubs#3523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd helper to generate synthetic manager/queryset classes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3518\"\u003etypeddjango/django-stubs#3518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic \u003ccode\u003eField\u003c/code\u003e's by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3522\"\u003etypeddjango/django-stubs#3522\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType admin site as DefaultAdminSite inheriting from Adminsite by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3296\"\u003etypeddjango/django-stubs#3296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeclare fields of \u003ccode\u003eLogEntry\u003c/code\u003e, \u003ccode\u003eFlatPage\u003c/code\u003e and \u003ccode\u003eRedirect\u003c/code\u003e as assignments by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3524\"\u003etypeddjango/django-stubs#3524\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate \u003ccode\u003edistinct\u003c/code\u003e / \u003ccode\u003eupdate\u003c/code\u003e / \u003ccode\u003ein_bulk\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3168\"\u003etypeddjango/django-stubs#3168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure ORM expressions return params as a tuple by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3527\"\u003etypeddjango/django-stubs#3527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove comment for attributes added by model metaclass by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3529\"\u003etypeddjango/django-stubs#3529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved typing of the checks framework by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3528\"\u003etypeddjango/django-stubs#3528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse typeshed aliases where possible by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3533\"\u003etypeddjango/django-stubs#3533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GIS as_sql stub signatures to match runtime by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3212\"\u003etypeddjango/django-stubs#3212\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eView\u003c/code\u003e, \u003ccode\u003eTemplateView\u003c/code\u003e, and \u003ccode\u003eTemplateResponseMixin\u003c/code\u003e generic on response type by \u003ca href=\"https://github.com/samueljsb\"\u003e\u003ccode\u003e@​samueljsb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/2874\"\u003etypeddjango/django-stubs#2874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd attributes set by application/middleware to \u003ccode\u003eHttpRequest\u003c/code\u003e by \u003ca href=\"https://github.com/bigfootjon\"\u003e\u003ccode\u003e@​bigfootjon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/2239\"\u003etypeddjango/django-stubs#2239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisallow any generics in our stubs \u0026amp; plugin by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3535\"\u003etypeddjango/django-stubs#3535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange test Client headers parameter to Mapping[str, str] by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/1534\"\u003etypeddjango/django-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ngettext/npgettext number parameter type mismatch by \u003ca href=\"https://github.com/usamashehab\"\u003e\u003ccode\u003e@​usamashehab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3477\"\u003etypeddjango/django-stubs#3477\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix middleware callable composition typing by \u003ca href=\"https://github.com/yassinbahri\"\u003e\u003ccode\u003e@​yassinbahri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3538\"\u003etypeddjango/django-stubs#3538\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow all supported types in GeneratedField.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3541\"\u003etypeddjango/django-stubs#3541\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/typeddjango/django-stubs/commit/942bca5e63f897a157f5d8ee649ca90e9a69003b\"\u003e\u003ccode\u003e942bca5\u003c/code\u003e\u003c/a\u003e Version 6.0.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7215810a3f7804acabae28db5320043cf84f18cd\"\u003e\u003ccode\u003e7215810\u003c/code\u003e\u003c/a\u003e Version 6.0.9 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3573\"\u003e#3573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/44429cd35e97c4f132be764a48a8b613c8b79156\"\u003e\u003ccode\u003e44429cd\u003c/code\u003e\u003c/a\u003e Don't crash on a many-to-many through model that can't be resolved (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3571\"\u003e#3571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/04375103fec37e1d2f3e9f2c3c03e759f7c70880\"\u003e\u003ccode\u003e0437510\u003c/code\u003e\u003c/a\u003e Detect every generic stub class in the generic consistency test (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3572\"\u003e#3572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a76719f4afe2fa03b197ad90be83b1830de80d55\"\u003e\u003ccode\u003ea76719f\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.66 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3569\"\u003e#3569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/2caa0e7e7b491cb23ed115366fbf12be4806cf54\"\u003e\u003ccode\u003e2caa0e7\u003c/code\u003e\u003c/a\u003e Version 6.0.8 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/085ae56c4fb116673909e0ecf5b35a62e238047d\"\u003e\u003ccode\u003e085ae56\u003c/code\u003e\u003c/a\u003e State \u003ccode\u003epyrefly\u003c/code\u003e, \u003ccode\u003epyright\u003c/code\u003e, and \u003ccode\u003ety\u003c/code\u003e support (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3562\"\u003e#3562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/92aee733390f9310f1dd775b0af7243e29d78b48\"\u003e\u003ccode\u003e92aee73\u003c/code\u003e\u003c/a\u003e Expand override manager create test + move to \u003ccode\u003eassert_type\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3559\"\u003e#3559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f50446be88f4f1e8c5e6445f15de1e85b9118c33\"\u003e\u003ccode\u003ef50446b\u003c/code\u003e\u003c/a\u003e Support pyrefly 1.2.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3561\"\u003e#3561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7a66e64f1a0c9ac52198d0726f3b22723f0a2c12\"\u003e\u003ccode\u003e7a66e64\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3558\"\u003e#3558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.6...6.0.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.17.0 to 3.17.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/988\"\u003etypeddjango/djangorestframework-stubs#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eSequence\u003c/code\u003e in \u003ccode\u003epaginate_queryset\u003c/code\u003e, not just \u003ccode\u003eQuerySet\u003c/code\u003e by \u003ca href=\"https://github.com/bvedad\"\u003e\u003ccode\u003e@​bvedad\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1001\"\u003etypeddjango/djangorestframework-stubs#1001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003erequest.data\u003c/code\u003e type to include \u003ccode\u003elist[Any]\u003c/code\u003e for JSON bulk payloads by \u003ca href=\"https://github.com/alanjds\"\u003e\u003ccode\u003e@​alanjds\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1016\"\u003etypeddjango/djangorestframework-stubs#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.1 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1019\"\u003etypeddjango/djangorestframework-stubs#1019\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/bvedad\"\u003e\u003ccode\u003e@​bvedad\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1001\"\u003etypeddjango/djangorestframework-stubs#1001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanjds\"\u003e\u003ccode\u003e@​alanjds\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1016\"\u003etypeddjango/djangorestframework-stubs#1016\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/f3b1cd6a17fcaf07923c707f10726599085c7a00\"\u003e\u003ccode\u003ef3b1cd6\u003c/code\u003e\u003c/a\u003e Version 3.17.1 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1019\"\u003e#1019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/692a47d5f739e970379cc0696df6c5e126a6140e\"\u003e\u003ccode\u003e692a47d\u003c/code\u003e\u003c/a\u003e Update dependency uv_build to \u0026gt;=0.12.0,\u0026lt;0.13.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1018\"\u003e#1018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/c13591825b93bf249a479320599c4568fa80df03\"\u003e\u003ccode\u003ec135918\u003c/code\u003e\u003c/a\u003e Fix Request.data type to include list[Any] for JSON bulk payloads (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1016\"\u003e#1016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/21acef29907215977f72224df3881ce3d23b39eb\"\u003e\u003ccode\u003e21acef2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1017\"\u003e#1017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/2edc257f7ec5afbfed1ea4f421a1951d2b23b969\"\u003e\u003ccode\u003e2edc257\u003c/code\u003e\u003c/a\u003e Update dependency pre-commit to v4.6.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/070ad4513134dfbf04500cc8a0f1773a483d45c0\"\u003e\u003ccode\u003e070ad45\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v9 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1014\"\u003e#1014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/217bd0bd14c8df1ef30d6a8913860fff62ae600a\"\u003e\u003ccode\u003e217bd0b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1013\"\u003e#1013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/33ffd2054733d8b8ef24062962bb2c8b3ca14afa\"\u003e\u003ccode\u003e33ffd20\u003c/code\u003e\u003c/a\u003e Update pypa/gh-action-pypi-publish action to v1.14.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1012\"\u003e#1012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/2100f01dcb0abddf6c04d52b2cdd20decac49127\"\u003e\u003ccode\u003e2100f01\u003c/code\u003e\u003c/a\u003e Update dependency mypy to \u0026gt;=1.13,\u0026lt;2.4 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/e373120b36c2c29679cc403933afda3dce687dfa\"\u003e\u003ccode\u003ee373120\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1011\"\u003e#1011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djlint` from 1.40.5 to 1.44.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/djlint/djLint/releases\"\u003edjlint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.44.2\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eH037\u003c/code\u003e no longer reports two attributes whose names differ only before a \u003ccode\u003e.\u003c/code\u003e as duplicates (\u003ccode\u003edata-a.checked\u003c/code\u003e and \u003ccode\u003edata-b.checked\u003c/code\u003e, or alpine's \u003ccode\u003ex-on:click.prevent\u003c/code\u003e and \u003ccode\u003ex-on:keyup.prevent\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAn attribute whose name merely ends in the name a rule looks for is no longer mistaken for it. \u003ccode\u003edata-alt\u003c/code\u003e and \u003ccode\u003edata-x.alt\u003c/code\u003e left \u003ccode\u003eH013\u003c/code\u003e silent on an image with no \u003ccode\u003ealt\u003c/code\u003e, \u003ccode\u003edata-lang\u003c/code\u003e and \u003ccode\u003exml:lang\u003c/code\u003e silenced \u003ccode\u003eH005\u003c/code\u003e, \u003ccode\u003edata-height\u003c/code\u003e and \u003ccode\u003edata-width\u003c/code\u003e silenced \u003ccode\u003eH006\u003c/code\u003e, \u003ccode\u003edata-name=\u0026quot;description\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH030\u003c/code\u003e and \u003ccode\u003edata-name=\u0026quot;keywords\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH031\u003c/code\u003e, and \u003ccode\u003edata-x.id\u003c/code\u003e satisfied a \u003ccode\u003e\u0026lt;label for\u0026gt;\u003c/code\u003e for \u003ccode\u003eH042\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eA name written inside an attribute value is no longer read as an attribute. \u003ccode\u003etitle=\u0026quot;alt=x\u0026quot;\u003c/code\u003e left \u003ccode\u003eH013\u003c/code\u003e silent, \u003ccode\u003eclass=\u0026quot;language-en\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH005\u003c/code\u003e, and \u003ccode\u003etitle=\u0026quot;the ID=5\u0026quot;\u003c/code\u003e was reported by \u003ccode\u003eH010\u003c/code\u003e as an uppercase attribute name.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eH005\u003c/code\u003e no longer reports a tag whose name only starts with \u003ccode\u003ehtml\u003c/code\u003e, such as \u003ccode\u003e\u0026lt;htmlx\u0026gt;\u003c/code\u003e, and points at the \u003ccode\u003e\u0026lt;html\u0026gt;\u003c/code\u003e tag itself rather than at everything up to the last \u003ccode\u003e\u0026gt;\u003c/code\u003e in the file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.44.1\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFormatting no longer changes what the page renders. A space that shows was dropped (\u003ccode\u003e\u0026lt;span\u0026gt;a\u0026lt;/span\u0026gt;\u0026lt;span\u0026gt; b \u0026lt;/span\u0026gt;\u003c/code\u003e rendered as \u003ccode\u003eab\u003c/code\u003e, \u003ccode\u003ea{% if x %} b {% endif %}c\u003c/code\u003e as \u003ccode\u003eabc\u003c/code\u003e), a space that shows nothing was added (\u003ccode\u003e\u0026lt;span\u0026gt;     \u0026lt;/span\u0026gt;\u003c/code\u003e became \u003ccode\u003e\u0026lt;span\u0026gt; \u0026lt;/span\u0026gt;\u003c/code\u003e), and moving a tag onto its own line could add one (\u003ccode\u003ex\u0026lt;img\u0026gt;y\u003c/code\u003e, or across a comment as in \u003ccode\u003ea{# c #}\u0026lt;img\u0026gt;\u003c/code\u003e). Whitespace is now kept where it renders and dropped where it does not.\u003c/li\u003e\n\u003cli\u003eA line break inside an attribute value is kept, so a \u003ccode\u003etitle\u003c/code\u003e tooltip no longer loses a line and a \u003ccode\u003edata-\u003c/code\u003e value read by script no longer comes back different. Line breaks in \u003ccode\u003eclass\u003c/code\u003e, \u003ccode\u003estyle\u003c/code\u003e, \u003ccode\u003esrcset\u003c/code\u003e and \u003ccode\u003esizes\u003c/code\u003e mean nothing and are still joined.\u003c/li\u003e\n\u003cli\u003eIndentation inside \u003ccode\u003e\u0026lt;pre\u0026gt;\u003c/code\u003e and \u003ccode\u003e\u0026lt;textarea\u0026gt;\u003c/code\u003e is left alone when the closing tag has something after it on its line (\u003ccode\u003e\u0026lt;pre\u0026gt;  a\\n  b\u0026lt;/pre\u0026gt; tail\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWhitespace css does not collapse, such as U+2005, is text, and is no longer stripped from the edges of an element or of the file.\u003c/li\u003e\n\u003cli\u003eTwo indenting fixes: a line that closes one tag and opens another (\u003ccode\u003e\u0026lt;/b\u0026gt;\u0026lt;i\u0026gt;\u003c/code\u003e) indents its contents again...\n\n_Description has been truncated_","html_url":"https://github.com/klhenams/studious-octo-goggles/pull/36","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/klhenams%2Fstudious-octo-goggles/issues/36","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/36/packages"},{"uuid":"5042341589","node_id":"PR_kwDOTDvPPs75oqk-","number":35,"state":"closed","title":"chore(deps-dev): bump the python group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-08-07T17:22:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-02T12:16:10.000Z","updated_at":"2026-08-07T17:22:02.000Z","time_to_close":450351,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"python","update_count":8,"packages":[{"name":"pydantic-ai-slim","old_version":"2.6.0","new_version":"2.21.0","repository_url":"https://github.com/pydantic/pydantic-ai"},{"name":"django-filter","old_version":"25.2","new_version":"26.1","repository_url":"https://github.com/carltongibson/django-filter"},{"name":"ruff","old_version":"0.15.20","new_version":"0.16.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"ty","old_version":"0.0.56","new_version":"0.0.65","repository_url":"https://github.com/astral-sh/ty"},{"name":"pre-commit","old_version":"4.6.0","new_version":"4.6.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-stubs","old_version":"6.0.6","new_version":"6.0.7","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"djangorestframework-stubs","old_version":"3.17.0","new_version":"3.17.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"mkdocs-material","old_version":"9.7.6","new_version":"9.7.7","repository_url":"https://github.com/squidfunk/mkdocs-material"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 8 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pydantic-ai-slim](https://github.com/pydantic/pydantic-ai) | `2.6.0` | `2.21.0` |\n| [django-filter](https://github.com/carltongibson/django-filter) | `25.2` | `26.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.20` | `0.16.0` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.56` | `0.0.65` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.0` | `4.6.1` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `6.0.6` | `6.0.7` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.0` | `3.17.1` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.6` | `9.7.7` |\n\n\nUpdates `pydantic-ai-slim` from 2.6.0 to 2.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-ai/releases\"\u003epydantic-ai-slim's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.21.0 (2026-07-29)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(usage): add \u003ccode\u003eper_request_input_tokens_limit\u003c/code\u003e to \u003ccode\u003eUsageLimits\u003c/code\u003e by \u003ca href=\"https://github.com/Oxygen56\"\u003e\u003ccode\u003e@​Oxygen56\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/5907\"\u003epydantic/pydantic-ai#5907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefresh \u003ccode\u003eKnownModelName\u003c/code\u003e from Gateway probes and stable Google image IDs by \u003ca href=\"https://github.com/adtyavrdhn\"\u003e\u003ccode\u003e@​adtyavrdhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6806\"\u003epydantic/pydantic-ai#6806\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-ai/compare/v2.20.0...v2.21.0\"\u003ehttps://github.com/pydantic/pydantic-ai/compare/v2.20.0...v2.21.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.20.0 (2026-07-28)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Claude Opus 5 (\u003ccode\u003eclaude-opus-5\u003c/code\u003e) support by \u003ca href=\"https://github.com/dsfaccini\"\u003e\u003ccode\u003e@​dsfaccini\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6723\"\u003epydantic/pydantic-ai#6723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd OpenAI Responses API \u003ccode\u003ereasoning.context\u003c/code\u003e support (default \u003ccode\u003eall_turns\u003c/code\u003e) for the \u003ccode\u003egpt-5.4\u003c/code\u003e/\u003ccode\u003egpt-5.5\u003c/code\u003e/\u003ccode\u003egpt-5.6\u003c/code\u003e families by \u003ca href=\"https://github.com/pydanty\"\u003e\u003ccode\u003e@​pydanty\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6673\"\u003epydantic/pydantic-ai#6673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve arbitrary \u003ccode\u003eRequestUsage\u003c/code\u003e fields across serialization by \u003ca href=\"https://github.com/alexmojaki\"\u003e\u003ccode\u003e@​alexmojaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6685\"\u003epydantic/pydantic-ai#6685\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCapture Anthropic thinking tokens in usage details by \u003ca href=\"https://github.com/jakub-orsula-parrot\"\u003e\u003ccode\u003e@​jakub-orsula-parrot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6753\"\u003epydantic/pydantic-ai#6753\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eALLOW_MODEL_REQUESTS\u003c/code\u003e guards for embeddings by \u003ca href=\"https://github.com/zcxGGmu\"\u003e\u003ccode\u003e@​zcxGGmu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6774\"\u003epydantic/pydantic-ai#6774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip \u003ccode\u003einclude_server_side_tool_invocations\u003c/code\u003e for Vertex on Gemini 3+ by \u003ca href=\"https://github.com/pydanty\"\u003e\u003ccode\u003e@​pydanty\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6773\"\u003epydantic/pydantic-ai#6773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_openrouter_settings_to_openai_settings\u003c/code\u003e mutating caller's settings dict by \u003ca href=\"https://github.com/pydanty\"\u003e\u003ccode\u003e@​pydanty\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6743\"\u003epydantic/pydantic-ai#6743\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplay tool-search history across provider boundaries instead of dropping it by \u003ca href=\"https://github.com/DouweM\"\u003e\u003ccode\u003e@​DouweM\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6780\"\u003epydantic/pydantic-ai#6780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve zero-valued OpenTelemetry usage details by \u003ca href=\"https://github.com/dsfaccini\"\u003e\u003ccode\u003e@​dsfaccini\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6796\"\u003epydantic/pydantic-ai#6796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose OpenAI Responses phase on the streamed \u003ccode\u003ePartStartEvent\u003c/code\u003e by \u003ca href=\"https://github.com/Jonas1312\"\u003e\u003ccode\u003e@​Jonas1312\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6785\"\u003epydantic/pydantic-ai#6785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake a bare \u003ccode\u003eMcpError\u003c/code\u003e from an MCP server recoverable instead of fatal by \u003ca href=\"https://github.com/dsfaccini\"\u003e\u003ccode\u003e@​dsfaccini\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6787\"\u003epydantic/pydantic-ai#6787\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/jakub-orsula-parrot\"\u003e\u003ccode\u003e@​jakub-orsula-parrot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6753\"\u003epydantic/pydantic-ai#6753\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Jonas1312\"\u003e\u003ccode\u003e@​Jonas1312\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6785\"\u003epydantic/pydantic-ai#6785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dexhunter\"\u003e\u003ccode\u003e@​dexhunter\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6485\"\u003epydantic/pydantic-ai#6485\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-ai/compare/v2.19.0...v2.20.0\"\u003ehttps://github.com/pydantic/pydantic-ai/compare/v2.19.0...v2.20.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.19.0 (2026-07-27)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eheaders\u003c/code\u003e and \u003ccode\u003eretry_after\u003c/code\u003e to \u003ccode\u003eModelHTTPError\u003c/code\u003e, populate from all provider SDKs by \u003ca href=\"https://github.com/dmontagu\"\u003e\u003ccode\u003e@​dmontagu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6733\"\u003epydantic/pydantic-ai#6733\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRe-assert absorbed external cancellation at run step boundaries by \u003ca href=\"https://github.com/DouweM\"\u003e\u003ccode\u003e@​DouweM\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6496\"\u003epydantic/pydantic-ai#6496\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate FastMCP dependency range to \u003ccode\u003e\u0026lt;4\u003c/code\u003e by \u003ca href=\"https://github.com/adtyavrdhn\"\u003e\u003ccode\u003e@​adtyavrdhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6737\"\u003epydantic/pydantic-ai#6737\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-ai/compare/v2.18.0...v2.19.0\"\u003ehttps://github.com/pydantic/pydantic-ai/compare/v2.18.0...v2.19.0\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/abed399f2db734b4e8588db9c32e710bb928368e\"\u003e\u003ccode\u003eabed399\u003c/code\u003e\u003c/a\u003e Fix minor format issues for the DBOS doc and add custom serializer (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6873\"\u003e#6873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/f5577efa6dea7bf226d65ea6171a6c250153a002\"\u003e\u003ccode\u003ef5577ef\u003c/code\u003e\u003c/a\u003e feat(usage): add \u003ccode\u003eper_request_input_tokens_limit\u003c/code\u003e to \u003ccode\u003eUsageLimits\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/5907\"\u003e#5907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/3d6641895ee3ee4df45ffe116bba2d6f2b5f534f\"\u003e\u003ccode\u003e3d66418\u003c/code\u003e\u003c/a\u003e Refresh \u003ccode\u003eKnownModelName\u003c/code\u003e from Gateway probes and stable Google image IDs (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6806\"\u003e#6806\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/251de3d42d56e29d0c74aa844f29f03250d641d4\"\u003e\u003ccode\u003e251de3d\u003c/code\u003e\u003c/a\u003e Derive \u003ccode\u003eModelSettings\u003c/code\u003e prefix test from dynamic discovery so it can't rot (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6\"\u003e#6\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/1e269edcd3c63d2f81658048e43c63ba46af51ae\"\u003e\u003ccode\u003e1e269ed\u003c/code\u003e\u003c/a\u003e Document the trust boundary for client-supplied \u003ccode\u003emessage_history\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6800\"\u003e#6800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/699810cedc10e48733cb8fee2a618d2ef160fd50\"\u003e\u003ccode\u003e699810c\u003c/code\u003e\u003c/a\u003e Add the \u003ccode\u003ezai\u003c/code\u003e optional group to \u003ccode\u003edocs/install.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6802\"\u003e#6802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/35cd29a3a36496721c7ac0e5cadccc6732752cfe\"\u003e\u003ccode\u003e35cd29a\u003c/code\u003e\u003c/a\u003e Make a bare \u003ccode\u003eMcpError\u003c/code\u003e from an MCP server recoverable instead of fatal (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6787\"\u003e#6787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/d8a1254a5ad1a86d0164d497f43f12616069d6cf\"\u003e\u003ccode\u003ed8a1254\u003c/code\u003e\u003c/a\u003e Remove trailing \u003ccode\u003epragma\u003c/code\u003e comments and backfill \u003ccode\u003eTODO(v3)\u003c/code\u003e deprecation markers...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/3f9c104f05a7011c98a56db9e4b91d4998f72a39\"\u003e\u003ccode\u003e3f9c104\u003c/code\u003e\u003c/a\u003e perf(streaming): buffer streamed response strings (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6485\"\u003e#6485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/e77681bd61cea2b9c10c3a380a5643426eb98636\"\u003e\u003ccode\u003ee77681b\u003c/code\u003e\u003c/a\u003e Expose OpenAI Responses phase on the streamed \u003ccode\u003ePartStartEvent\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6785\"\u003e#6785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-ai/compare/v2.6.0...v2.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-filter` from 25.2 to 26.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/carltongibson/django-filter/blob/main/CHANGES.rst\"\u003edjango-filter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.1 (2026-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded testing for Django 6.1.\u003c/p\u003e\n\u003cp\u003eDRF integration will require the upcoming DRF v3.18.\nSee \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded testing against Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/52c3c0f21ef8fe281982ec0e95a3675cd8402214\"\u003e\u003ccode\u003e52c3c0f\u003c/code\u003e\u003c/a\u003e Set date and bump version for 26.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/6a3222aaf83170df0f967423444d5312b99a3d69\"\u003e\u003ccode\u003e6a3222a\u003c/code\u003e\u003c/a\u003e Add testing for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/aa3bd8e87136d4730f4eb44b3386e52c218bcf66\"\u003e\u003ccode\u003eaa3bd8e\u003c/code\u003e\u003c/a\u003e Added testing against Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/ec717ea11378a4dc003cbe2f77b5211d8815a0b6\"\u003e\u003ccode\u003eec717ea\u003c/code\u003e\u003c/a\u003e Correct Language header in Greek locale file (el) (\u003ca href=\"https://redirect.github.com/carltongibson/django-filter/issues/1751\"\u003e#1751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/31b297ca2414218052476ba458c4d1eedc0a0f99\"\u003e\u003ccode\u003e31b297c\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/carltongibson/django-filter/issues/1733\"\u003e#1733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/590c0a3e7d73fafa4fb25df45b53fcc79258d09f\"\u003e\u003ccode\u003e590c0a3\u003c/code\u003e\u003c/a\u003e Fix version range for Django 6.0 (\u003ca href=\"https://redirect.github.com/carltongibson/django-filter/issues/1731\"\u003e#1731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/6204bc4eb75edf7ba766fc256d72a68fa80c3029\"\u003e\u003ccode\u003e6204bc4\u003c/code\u003e\u003c/a\u003e Added release date for v25.2.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/carltongibson/django-filter/compare/25.2...26.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.20 to 0.16.0\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.0\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-23.\u003c/p\u003e\n\u003cp\u003eCheck out the \u003ca href=\"https://astral.sh/blog/ruff-v0.16.0\"\u003eblog post\u003c/a\u003e for a migration guide and overview of the changes!\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRuff now enables a much larger set of rules by default (413, up from 59). See the blog post for more details and the new \u003ca href=\"https://docs.astral.sh/ruff/default-rules/\"\u003eDefault Rules\u003c/a\u003e page for a full listing of the enabled rules. Note that this is primarily an expansion, but 18 of the more opinionated pycodestyle (\u003ccode\u003eE\u003c/code\u003e) and pyflakes (\u003ccode\u003eF\u003c/code\u003e) rules have been removed from the default set: \u003ccode\u003eE401\u003c/code\u003e, \u003ccode\u003eE402\u003c/code\u003e, \u003ccode\u003eE701\u003c/code\u003e, \u003ccode\u003eE702\u003c/code\u003e, \u003ccode\u003eE703\u003c/code\u003e, \u003ccode\u003eE711\u003c/code\u003e, \u003ccode\u003eE712\u003c/code\u003e, \u003ccode\u003eE713\u003c/code\u003e, \u003ccode\u003eE714\u003c/code\u003e, \u003ccode\u003eE721\u003c/code\u003e, \u003ccode\u003eE731\u003c/code\u003e, \u003ccode\u003eE741\u003c/code\u003e, \u003ccode\u003eE742\u003c/code\u003e, \u003ccode\u003eE743\u003c/code\u003e, \u003ccode\u003eF403\u003c/code\u003e, \u003ccode\u003eF405\u003c/code\u003e, \u003ccode\u003eF406\u003c/code\u003e, and \u003ccode\u003eF722\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRuff can now format Python code blocks in Markdown files and will do this by default. See the \u003ca href=\"https://docs.astral.sh/ruff/formatter/#markdown-code-formatting\"\u003edocumentation\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRuff now supports \u003ccode\u003eruff: ignore\u003c/code\u003e comments at the ends of lines, like \u003ccode\u003enoqa\u003c/code\u003e comments, or on the line preceding a diagnostic. For example, these both suppress an \u003ca href=\"https://docs.astral.sh/ruff/rules/unused-import/\"\u003e\u003ccode\u003eunused-import\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF401\u003c/code\u003e) diagnostic:\u003c/p\u003e\n\u003cpre lang=\"py\"\u003e\u003ccode\u003eimport math  # ruff: ignore[F401]\r\n\u003ch1\u003eruff: ignore[F401]\u003c/h1\u003e\n\u003cp\u003eimport os\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes are now shown in \u003ccode\u003echeck\u003c/code\u003e and \u003ccode\u003eformat --check\u003c/code\u003e output:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e❯ ruff format --check .\r\nunformatted: File would be reformatted\r\n --\u0026gt; try.md:1:1\r\n  |\r\n1 | ```python\r\n  - import   math\r\n2 + import math\r\n3 | ```\r\n  |\r\n\u003cp\u003e1 file would be reformatted\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eThis example also shows off the Markdown formatting.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eformat --check\u003c/code\u003e now supports the same output formats as the linter, including the \u003ccode\u003egithub\u003c/code\u003e and \u003ccode\u003egitlab\u003c/code\u003e outputs for rendering annotations in CI:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e❯ ruff format --check --output-format github .\r\n::error title=ruff (unformatted),file=try.md,line=2,col=8,endLine=2,endColumn=10::try.md:2:8: unformatted: File would be reformatted\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the CLI help or \u003ca href=\"https://docs.astral.sh/ruff/settings/#output-format\"\u003edocumentation\u003c/a\u003e for the full list of supported formats.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003efilename\u003c/code\u003e, \u003ccode\u003elocation\u003c/code\u003e, \u003ccode\u003eend_location\u003c/code\u003e, \u003ccode\u003efix.edits[].location\u003c/code\u003e, and \u003ccode\u003efix.edits[].end_location\u003c/code\u003e fields in the JSON output format may now be \u003ccode\u003enull\u003c/code\u003e rather than defaulting to the empty string and row 1, column 1, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.0\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-23.\u003c/p\u003e\n\u003cp\u003eCheck out the \u003ca href=\"https://astral.sh/blog/ruff-v0.16.0\"\u003eblog post\u003c/a\u003e for a migration\nguide and overview of the changes!\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRuff now enables a much larger set of rules by default (413, up from 59). See the blog post for\nmore details and the new \u003ca href=\"https://docs.astral.sh/ruff/default-rules/\"\u003eDefault Rules\u003c/a\u003e page for a\nfull listing of the enabled rules. Note that this is primarily an expansion, but 18 of the more\nopinionated pycodestyle (\u003ccode\u003eE\u003c/code\u003e) and pyflakes (\u003ccode\u003eF\u003c/code\u003e) rules have been removed from the default set:\n\u003ccode\u003eE401\u003c/code\u003e, \u003ccode\u003eE402\u003c/code\u003e, \u003ccode\u003eE701\u003c/code\u003e, \u003ccode\u003eE702\u003c/code\u003e, \u003ccode\u003eE703\u003c/code\u003e, \u003ccode\u003eE711\u003c/code\u003e, \u003ccode\u003eE712\u003c/code\u003e, \u003ccode\u003eE713\u003c/code\u003e, \u003ccode\u003eE714\u003c/code\u003e, \u003ccode\u003eE721\u003c/code\u003e, \u003ccode\u003eE731\u003c/code\u003e, \u003ccode\u003eE741\u003c/code\u003e,\n\u003ccode\u003eE742\u003c/code\u003e, \u003ccode\u003eE743\u003c/code\u003e, \u003ccode\u003eF403\u003c/code\u003e, \u003ccode\u003eF405\u003c/code\u003e, \u003ccode\u003eF406\u003c/code\u003e, and \u003ccode\u003eF722\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRuff can now format Python code blocks in Markdown files and will do this by default. See the\n\u003ca href=\"https://docs.astral.sh/ruff/formatter/#markdown-code-formatting\"\u003edocumentation\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRuff now supports \u003ccode\u003eruff: ignore\u003c/code\u003e comments at the ends of lines, like \u003ccode\u003enoqa\u003c/code\u003e comments, or on the line preceding a diagnostic. For example, these both suppress an \u003ca href=\"https://docs.astral.sh/ruff/rules/unused-import/\"\u003e\u003ccode\u003eunused-import\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF401\u003c/code\u003e) diagnostic:\u003c/p\u003e\n\u003cpre lang=\"py\"\u003e\u003ccode\u003eimport math  # ruff: ignore[F401]\n\u003ch1\u003eruff: ignore[F401]\u003c/h1\u003e\n\u003cp\u003eimport os\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes are now shown in \u003ccode\u003echeck\u003c/code\u003e and \u003ccode\u003eformat --check\u003c/code\u003e output:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e❯ ruff format --check .\nunformatted: File would be reformatted\n --\u0026gt; try.md:1:1\n  |\n1 | ```python\n  - import   math\n2 + import math\n3 | ```\n  |\n\u003cp\u003e1 file would be reformatted\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eThis example also shows off the Markdown formatting.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eformat --check\u003c/code\u003e now supports the same output formats as the linter, including the \u003ccode\u003egithub\u003c/code\u003e and\n\u003ccode\u003egitlab\u003c/code\u003e outputs for rendering annotations in CI:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e\u003c/code\u003e\u003c/pre\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/astral-sh/ruff/commit/a2635fd8f39e1d34ce8074cb486809426148f3e9\"\u003e\u003ccode\u003ea2635fd\u003c/code\u003e\u003c/a\u003e Bump 0.16.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27136\"\u003e#27136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/34334491652f8ceca5246d15c5c5afe0d6bc77ae\"\u003e\u003ccode\u003e3433449\u003c/code\u003e\u003c/a\u003e [ty] Reuse full call diagnostics for implicit setter calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27115\"\u003e#27115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/22400709220931375e072ad5d7460b9fc781af78\"\u003e\u003ccode\u003e2240070\u003c/code\u003e\u003c/a\u003e Reflect \u003ccode\u003eruff: ignore\u003c/code\u003e and \u003ccode\u003e--add-ignore\u003c/code\u003e stabilization in documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27\"\u003e#27\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/17ef71142c52230b923dad46ee5554140fc3fd2e\"\u003e\u003ccode\u003e17ef711\u003c/code\u003e\u003c/a\u003e Stabilize \u003ccode\u003e--add-ignore\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27125\"\u003e#27125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ef912bbbe466856aa4aac10ad2a8856eb3d5aef3\"\u003e\u003ccode\u003eef912bb\u003c/code\u003e\u003c/a\u003e Add newly stabilized rules to defaults (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27055\"\u003e#27055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b30f04023281b46f12011f13ce6b45c247e0d2e3\"\u003e\u003ccode\u003eb30f040\u003c/code\u003e\u003c/a\u003e Stabilize new default rules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27035\"\u003e#27035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bcd70c5f10ea97ed52a785d70e7f33b83b7c697a\"\u003e\u003ccode\u003ebcd70c5\u003c/code\u003e\u003c/a\u003e Exclude Markdown files from \u003ccode\u003eformat-dev\u003c/code\u003e runs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27052\"\u003e#27052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/87e51e2cbbaed376fc13dead40fd772361fa07c0\"\u003e\u003ccode\u003e87e51e2\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eformat --check\u003c/code\u003e spans for syntax errors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27045\"\u003e#27045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/afe2723a348364ac7f4b9abd76fc67779490c05e\"\u003e\u003ccode\u003eafe2723\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-gettext\u003c/code\u003e] Stabilize qualified-name and built-in binding resolution (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a9702d8928344f77a41dbe535f655a69fb04e2df\"\u003e\u003ccode\u003ea9702d8\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-bandit\u003c/code\u003e] Stabilize string literal binding resolution (\u003ccode\u003eS310\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26944\"\u003e#26944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.20...0.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ty` from 0.0.56 to 0.0.65\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ty/releases\"\u003ety's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.65\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-29.\u003c/p\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport comprehension walruses in IDE features (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26476\"\u003e#26476\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLibrary support\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePydantic: Allow mutation of private attributes on frozen models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27257\"\u003e#27257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePydantic: Synthesize \u003ccode\u003e__replace__\u003c/code\u003e for models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27220\"\u003e#27220\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDiagnostics\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect \u003ccode\u003eParamSpec\u003c/code\u003e forwarded-argument diagnostic locations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27263\"\u003e#27263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecover forwarded callable object and constructor sources (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27264\"\u003e#27264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecover forwarded \u003ccode\u003efunctools.partial\u003c/code\u003e diagnostic sources (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27265\"\u003e#27265\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix gradual class assignability with generic receivers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27223\"\u003e#27223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLazily materialize protocol attributes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27267\"\u003e#27267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow tagged unions through all type kinds (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27226\"\u003e#27226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer static constrained TypeVar solutions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27057\"\u003e#27057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve frozen-dataclass setter delegation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27217\"\u003e#27217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inference when filtering constructor overloads (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27254\"\u003e#27254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject frozen-dataclass field deletion through subclasses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27001\"\u003e#27001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStabilize recursive type-constraint ordering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27176\"\u003e#27176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport materialized class type expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27258\"\u003e#27258\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid quadratic inference for large literal unions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27178\"\u003e#27178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache protocol receiver binding (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27301\"\u003e#27301\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/thejchap\"\u003e\u003ccode\u003e@​thejchap\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benedikt-bartscher\"\u003e\u003ccode\u003e@​benedikt-bartscher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carljm\"\u003e\u003ccode\u003e@​carljm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ty 0.0.65\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/ty/releases/download/0.0.65/ty-installer.sh | sh\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ty/blob/main/CHANGELOG.md\"\u003ety's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.65\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-29.\u003c/p\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport comprehension walruses in IDE features (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26476\"\u003e#26476\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLibrary support\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePydantic: Allow mutation of private attributes on frozen models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27257\"\u003e#27257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePydantic: Synthesize \u003ccode\u003e__replace__\u003c/code\u003e for models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27220\"\u003e#27220\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDiagnostics\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect \u003ccode\u003eParamSpec\u003c/code\u003e forwarded-argument diagnostic locations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27263\"\u003e#27263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecover forwarded callable object and constructor sources (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27264\"\u003e#27264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecover forwarded \u003ccode\u003efunctools.partial\u003c/code\u003e diagnostic sources (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27265\"\u003e#27265\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix gradual class assignability with generic receivers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27223\"\u003e#27223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLazily materialize protocol attributes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27267\"\u003e#27267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow tagged unions through all type kinds (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27226\"\u003e#27226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer static constrained TypeVar solutions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27057\"\u003e#27057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve frozen-dataclass setter delegation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27217\"\u003e#27217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inference when filtering constructor overloads (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27254\"\u003e#27254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject frozen-dataclass field deletion through subclasses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27001\"\u003e#27001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStabilize recursive type-constraint ordering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27176\"\u003e#27176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport materialized class type expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27258\"\u003e#27258\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid quadratic inference for large literal unions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27178\"\u003e#27178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache protocol receiver binding (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27301\"\u003e#27301\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/thejchap\"\u003e\u003ccode\u003e@​thejchap\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benedikt-bartscher\"\u003e\u003ccode\u003e@​benedikt-bartscher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carljm\"\u003e\u003ccode\u003e@​carljm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.64\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-27.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix identity narrowing for NewTypes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26439\"\u003e#26439\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/ty/commit/87de836dfef2d3e1990440752e30e24cfb572f4e\"\u003e\u003ccode\u003e87de836\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.65 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4113\"\u003e#4113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/d784bad352f4640e7f788eac4dfb0353ca199902\"\u003e\u003ccode\u003ed784bad\u003c/code\u003e\u003c/a\u003e README: Add link to Stable milestone (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4112\"\u003e#4112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/b4c1978dbdf18501ed03139e33ee8afaef251ec3\"\u003e\u003ccode\u003eb4c1978\u003c/code\u003e\u003c/a\u003e Update actions/setup-python action to v7 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4110\"\u003e#4110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/8d216a39dad99c4443396a08a77da00502cd7e58\"\u003e\u003ccode\u003e8d216a3\u003c/code\u003e\u003c/a\u003e Update actions/checkout action to v7.0.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4107\"\u003e#4107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/06f44e9039cb2764346c4bceaff4021ac143de9e\"\u003e\u003ccode\u003e06f44e9\u003c/code\u003e\u003c/a\u003e Update dependency prek to v0.4.10 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4108\"\u003e#4108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/b3665fde4804424576a30078bc0b7c101c5e2242\"\u003e\u003ccode\u003eb3665fd\u003c/code\u003e\u003c/a\u003e Update prek dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/5e64a131b436a4e1f40e6317c526f4fc73fab38b\"\u003e\u003ccode\u003e5e64a13\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.64 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4097\"\u003e#4097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/46f4915e67aad965b1b4e7478a75378e8e52ff6d\"\u003e\u003ccode\u003e46f4915\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.63 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4071\"\u003e#4071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/df75992e7fd0cc73cb0f66e864df3f6e4fc4e1a6\"\u003e\u003ccode\u003edf75992\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.62 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4057\"\u003e#4057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/48dd1fdf8a5bd504a19e06046c3be4f3fe378747\"\u003e\u003ccode\u003e48dd1fd\u003c/code\u003e\u003c/a\u003e Update prek dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4059\"\u003e#4059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ty/compare/0.0.56...0.0.65\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.6.0 to 4.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInstall \u003ccode\u003elanguage: node\u003c/code\u003e hooks via \u003ccode\u003egit\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eFixes npm 12.x compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3719\"\u003e#3719\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3517\"\u003e#3517\u003c/a\u003e issue by \u003ca href=\"https://github.com/ojob\"\u003e\u003ccode\u003e@​ojob\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eJULIA_DEPOT_PATH\u003c/code\u003e for \u003ccode\u003elanguage: julia\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3711\"\u003e#3711\u003c/a\u003e PR by \u003ca href=\"https://github.com/damonbayer\"\u003e\u003ccode\u003e@​damonbayer\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit-ci/runner-image/issues/335\"\u003epre-commit-ci/runner-image#335\u003c/a\u003e issue by \u003ca href=\"https://github.com/damonbayer\"\u003e\u003ccode\u003e@​damonbayer\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eProduce error on mistyped \u003ccode\u003e--repo\u003c/code\u003e for \u003ccode\u003epre-commit autoupdate\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3701\"\u003e#3701\u003c/a\u003e PR by \u003ca href=\"https://github.com/mxr\"\u003e\u003ccode\u003e@​mxr\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3695\"\u003e#3695\u003c/a\u003e issue by \u003ca href=\"https://github.com/mxr\"\u003e\u003ccode\u003e@​mxr\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImprove performance of commit existence check in \u003ccode\u003epre-push\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3726\"\u003e#3726\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3604\"\u003e#3604\u003c/a\u003e issue by \u003ca href=\"https://github.com/ptarjan\"\u003e\u003ccode\u003e@​ptarjan\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAvoid duplicating conflicted filenames during \u003ccode\u003epre-commit run --all-files\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3727\"\u003e#3727\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3706\"\u003e#3706\u003c/a\u003e issue by \u003ca href=\"https://github.com/RomanValov\"\u003e\u003ccode\u003e@​RomanValov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.1 - 2026-07-21\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInstall \u003ccode\u003elanguage: node\u003c/code\u003e hooks via \u003ccode\u003egit\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eFixes npm 12.x compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3719\"\u003e#3719\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3517\"\u003e#3517\u003c/a\u003e issue by \u003ca href=\"https://github.com/ojob\"\u003e\u003ccode\u003e@​ojob\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eJULIA_DEPOT_PATH\u003c/code\u003e for \u003ccode\u003elanguage: julia\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3711\"\u003e#3711\u003c/a\u003e PR by \u003ca href=\"https://github.com/damonbayer\"\u003e\u003ccode\u003e@​damonbayer\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit-ci/runner-image/issues/335\"\u003epre-commit-ci/runner-image#335\u003c/a\u003e issue by \u003ca href=\"https://github.com/damonbayer\"\u003e\u003ccode\u003e@​damonbayer\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eProduce error on mistyped \u003ccode\u003e--repo\u003c/code\u003e for \u003ccode\u003epre-commit autoupdate\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3701\"\u003e#3701\u003c/a\u003e PR by \u003ca href=\"https://github.com/mxr\"\u003e\u003ccode\u003e@​mxr\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3695\"\u003e#3695\u003c/a\u003e issue by \u003ca href=\"https://github.com/mxr\"\u003e\u003ccode\u003e@​mxr\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImprove performance of commit existence check in \u003ccode\u003epre-push\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3726\"\u003e#3726\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3604\"\u003e#3604\u003c/a\u003e issue by \u003ca href=\"https://github.com/ptarjan\"\u003e\u003ccode\u003e@​ptarjan\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAvoid duplicating conflicted filenames during \u003ccode\u003epre-commit run --all-files\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3727\"\u003e#3727\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3706\"\u003e#3706\u003c/a\u003e issue by \u003ca href=\"https://github.com/RomanValov\"\u003e\u003ccode\u003e@​RomanValov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/242ce8a25657be59f2770b50de41fe0fd508820d\"\u003e\u003ccode\u003e242ce8a\u003c/code\u003e\u003c/a\u003e v4.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/766e550cd31defcb6096a96735c9de299b0eb301\"\u003e\u003ccode\u003e766e550\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3727\"\u003e#3727\u003c/a\u003e from pre-commit/dedupe\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/1558d06e3d9e5f495cd97ccaefe937b7c44ead70\"\u003e\u003ccode\u003e1558d06\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3726\"\u003e#3726\u003c/a\u003e from pre-commit/exists-faster\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/8a1c47a2528419e41aadfcf8135926d68f7ffbbb\"\u003e\u003ccode\u003e8a1c47a\u003c/code\u003e\u003c/a\u003e avoid duplicate files in --all-files during conflict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2e01c999b2466ac7e14e1e4a57a04504bd6c1b28\"\u003e\u003ccode\u003e2e01c99\u003c/code\u003e\u003c/a\u003e faster check of rev existing locally as a commit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/3613bf27f5500d327de70cd2fa68fa20c8975659\"\u003e\u003ccode\u003e3613bf2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3701\"\u003e#3701\u003c/a\u003e from pre-commit/autoupdate-repos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/1d811d9b0b655fa648001ca479a0b7da9ebd7b8c\"\u003e\u003ccode\u003e1d811d9\u003c/code\u003e\u003c/a\u003e Return an error for invalid --repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/374d354c8be227db651ddd92d9499b87e2ca1ea1\"\u003e\u003ccode\u003e374d354\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3711\"\u003e#3711\u003c/a\u003e from damonbayer/dmb_JULIA_DEPOT_PATH\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/1e7994fb1fddd31fb1998aa98f84fc43818d9485\"\u003e\u003ccode\u003e1e7994f\u003c/code\u003e\u003c/a\u003e set JULIA_DEPOT_PATH\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/b2b91195d7618d61d8973fefa4e5e084fc160d8d\"\u003e\u003ccode\u003eb2b9119\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3719\"\u003e#3719\u003c/a\u003e from pre-commit/npm-unknown-options\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.6.0...v4.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs` from 6.0.6 to 6.0.7\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a7686ba5b16d507d7c6097e9c4b9c8e2122ec704\"\u003e\u003ccode\u003ea7686ba\u003c/code\u003e\u003c/a\u003e Update mypy to 2.3.0, release 6.0.7 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3487\"\u003e#3487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7fc15129a83743118057a9af1378fbfdad01dcc9\"\u003e\u003ccode\u003e7fc1512\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3486\"\u003e#3486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5ea3999a7426610e74599ebf4a2f7a3389e23f2f\"\u003e\u003ccode\u003e5ea3999\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.65.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3485\"\u003e#3485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/48fa1fb51b98bf8eb4cc55367c7eb7ee346e62ae\"\u003e\u003ccode\u003e48fa1fb\u003c/code\u003e\u003c/a\u003e Annotate unparameterized Field references (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3482\"\u003e#3482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1cebbea2bc1dfb60f290c3256f5d1b0c491e6e22\"\u003e\u003ccode\u003e1cebbea\u003c/code\u003e\u003c/a\u003e Support django models discovery by the plugin in \u003ccode\u003etests/assert_type\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3483\"\u003e#3483\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/cd42cb5e9fd5099d41725afedcea2fcab7aa1604\"\u003e\u003ccode\u003ecd42cb5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3484\"\u003e#3484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e584effb13ce626ab698d979cb9f3c56519a2b8f\"\u003e\u003ccode\u003ee584eff\u003c/code\u003e\u003c/a\u003e Improve local justfile (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3481\"\u003e#3481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ca6810c5e1cc3788e86babd0380330ed90fb16b1\"\u003e\u003ccode\u003eca6810c\u003c/code\u003e\u003c/a\u003e Preserve values() aliases through annotate() for order_by (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3479\"\u003e#3479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/b15cf82209f19f7525fb8db6e43c97f96b1051bd\"\u003e\u003ccode\u003eb15cf82\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.58 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3480\"\u003e#3480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/3c1769fe041524be6a31aa7e326a8674a1a1d516\"\u003e\u003ccode\u003e3c1769f\u003c/code\u003e\u003c/a\u003e Fully annotate \u003ccode\u003eField.formfield\u003c/code\u003e keyword args (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3443\"\u003e#3443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.6...6.0.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.17.0 to 3.17.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/988\"\u003etypeddjango/djangorestframework-stubs#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eSequence\u003c/code\u003e in \u003ccode\u003epaginate_queryset\u003c/code\u003e, not just \u003ccode\u003eQuerySet\u003c/code\u003e by \u003ca href=\"https://github.com/bvedad\"\u003e\u003ccode\u003e@​bvedad\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1001\"\u003etypeddjango/djangorestframework-stubs#1001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003erequest.data\u003c/code\u003e type to include \u003ccode\u003elist[Any]\u003c/code\u003e for JSON bulk payloads by \u003ca href=\"https://github.com/alanjds\"\u003e\u003ccode\u003e@​alanjds\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1016\"\u003etypeddjango/djangorestframework-stubs#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.1 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1019\"\u003etypeddjango/djangorestframework-stubs#1019\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/bvedad\"\u003e\u003ccode\u003e@​bvedad\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1001\"\u003etypeddjango/djangorestframework-stubs#1001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanjds\"\u003e\u003ccode\u003e@​alanjds\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1016\"\u003etypeddjango/djangorestframework-stubs#1016\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/f3b1cd6a17fcaf07923c707f10726599085c7a00\"\u003e\u003ccode\u003ef3b1cd6\u003c/code\u003e\u003c/a\u003e Version 3.17.1 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1019\"\u003e#1019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/692a47d5f739e970379cc0696df6c5e126a6140e\"\u003e\u003ccode\u003e692a47d\u003c/code\u003e\u003c/a\u003e Update dependency uv_build to \u0026gt;=0.12.0,\u0026lt;0.13.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1018\"\u003e#1018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/c13591825b93bf249a479320599c4568fa80df03\"\u003e\u003ccode\u003ec135918\u003c/code\u003e\u003c/a\u003e Fix Request.data type to include list[Any] for JSON bulk payloads (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1016\"\u003e#1016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/21acef29907215977f72224df3881ce3d23b39eb\"\u003e\u003ccode\u003e21acef2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1017\"\u003e#1017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/2edc257f7ec5afbfed1ea4f421a1951d2b23b969\"\u003e\u003ccode\u003e2edc257\u003c/code\u003e\u003c/a\u003e Update dependency pre-commit to v4.6.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/070ad4513134dfbf04500cc8a0f1773a483d45c0\"\u003e\u003ccode\u003e070ad45\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v9 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1014\"\u003e#1014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/217bd0bd14c8df1ef30d6a8913860fff62ae600a\"\u003e\u003ccode\u003e217bd0b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1013\"\u003e#1013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/33ffd2054733d8b8ef24062962bb2c8b3ca14afa\"\u003e\u003ccode\u003e33ffd20\u003c/code\u003e\u003c/a\u003e Update pypa/gh-action-pypi-publish action to v1.14.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1012\"\u003e#1012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/2100f01dcb0abddf6c04d52b2cdd20decac49127\"\u003e\u003ccode\u003e2100f01\u003c/code\u003e\u003c/a\u003e Update dependency mypy to \u0026gt;=1.13,\u0026lt;2.4 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/e373120b36c2c29679cc403933afda3dce687dfa\"\u003e\u003ccode\u003ee373120\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1011\"\u003e#1011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.7.6 to 9.7.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.7.7\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is approaching end of life\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eMaterial for MkDocs is scheduled to reach end of life on November 5, 2026. Until then, maintenance is limited to critical bug fixes and security updates. After this date, the project will remain available on PyPI and GitHub, but no further maintenance is planned except in exceptional circumstances.\u003c/p\u003e\n\u003cp\u003eFor users looking for a long-term, actively developed successor, we're building \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e – a next-generation static site generator designed for technical documentation. If you're planning a new documentation project or evaluating your long-term options, we invite you to take a look.\u003c/p\u003e\n\u003cp\u003eOrganizations requiring support beyond this date are welcome to get in touch to discuss available options.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a DOM-based XSS vulnerability in search suggestions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/p\"\u003e\u003ccode\u003e@​p\u003c/code\u003e\u003c/a\u003e- for responsibly reporting this issue.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.7.7 (2026-07-17)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed DOM-based XSS vulnerability in search suggestions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.6 (2026-03-19)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.5 (2026-03-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLimited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning (clarify relation with MkDocs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.4 (2026-03-03)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHardened social cards plugin by switching to sandboxed environment\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.3 (2026-02-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8567\"\u003e#8567\u003c/a\u003e: Print MkDocs 2.0 incompatibility warning to stderr\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.2 (2026-02-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to 'mkdocs build' about impending MkDocs 2.0 incompatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.1 (2025-12-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.0 (2025-11-11)\u003c/p\u003e\n\u003cp\u003e⚠️ Material for MkDocs is now in maintenance mode\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features.\nGoing forward, the Material for MkDocs team focuses on Zensical, a next-gen\nstatic site generator built from first principles. We will provide critical\nbug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003eRead the full announcement on our blog:\n\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003ehttps://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the\nInsiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003eNote on deprecated plugins: The projects and typeset plugins are included in\nthis release, but must be considered deprecated. Both plugins proved\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/b3e6dd886a974aa8200759ecfd7db28c598a2894\"\u003e\u003ccode\u003eb3e6dd8\u003c/code\u003e\u003c/a\u003e Prepare 9.7.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/52fb6be8aafe326419f34dc94d3211e7bbfbfb25\"\u003e\u003ccode\u003e52fb6be\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/901e6335cc80b0f12e46a1e34bd85e983dd78a6e\"\u003e\u003ccode\u003e901e633\u003c/code\u003e\u003c/a\u003e Added \u003ccode\u003eSECURITY.md\u003c/code\u003e with EOL notice\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/5b36f2ac499a45905e246bc66bbee2858ef6556f\"\u003e\u003ccode\u003e5b36f2a\u003c/code\u003e\u003c/a\u003e Bump js-yaml from 4.1.1 to 4.2.0 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8598\"\u003e#8598\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/2d11e7bc92c59b86d6ac0da2e38044fb4befa6e0\"\u003e\u003ccode\u003e2d11e7b\u003c/code\u003e\u003c/a\u003e Bump form-data from 3.0.4 to 3.0.5 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8597\"\u003e#8597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/ae05a534a8c8e1c58eb6aa55d460d309bcfce22b\"\u003e\u003ccode\u003eae05a53\u003c/code\u003e\u003c/a\u003e Bump esbuild from 0.27.2 to 0.28.1 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8596\"\u003e#8596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/434af93166e5b90b78bba1295ca5a140fc67d0bc\"\u003e\u003ccode\u003e434af93\u003c/code\u003e\u003c/a\u003e Bump shell-quote from 1.7.3 to 1.8.4 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8593\"\u003e#8593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/4447cdadcbe8bc82570e9f1ae2b970f461b03b68\"\u003e\u003ccode\u003e4447cda\u003c/code\u003e\u003c/a\u003e Documentation (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8590\"\u003e#8590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/8f8d551c9c5296dfc2a5ede35047bfb491d66bc9\"\u003e\u003ccode\u003e8f8d551\u003c/code\u003e\u003c/a\u003e Updated copyright year (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8588\"\u003e#8588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/08d8514d491782b4ac46673bcfdedb2f6fc85f3d\"\u003e\u003ccode\u003e08d8514\u003c/code\u003e\u003c/a\u003e Bump fast-uri from 3.0.3 to 3.1.2 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8587\"\u003e#8587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.7.6...9.7.7\"\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/Artui/djangorestframework-pydantic-ai/pull/35","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Artui%2Fdjangorestframework-pydantic-ai/issues/35","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/35/packages"},{"uuid":"4791642974","node_id":"PR_kwDOSQnNv87s-yFi","number":28,"state":"closed","title":"build(deps): bump the python group across 1 directory with 14 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-07T05:47:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-02T05:48:16.000Z","updated_at":"2026-07-07T05:47:42.000Z","time_to_close":431965,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":14,"packages":[{"name":"django","old_version":"6.0.3","new_version":"6.0.6","repository_url":"https://github.com/django/django"},{"name":"django-environ","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/joke2k/django-environ"},{"name":"faker","old_version":"40.12.0","new_version":"40.28.1","repository_url":"https://github.com/joke2k/faker"},{"name":"hiredis","old_version":"3.3.1","new_version":"3.4.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"psycopg","old_version":"3.3.3","new_version":"3.3.4"},{"name":"coverage","old_version":"7.13.5","new_version":"7.15.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-coverage-plugin","old_version":"3.2.0","new_version":"3.2.2","repository_url":"https://github.com/coveragepy/django_coverage_plugin"},{"name":"django-stubs","old_version":"6.0.2","new_version":"6.0.6"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.36.4","new_version":"1.40.3","repository_url":"https://github.com/djlint/djLint"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest","old_version":"9.0.2","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ruff","old_version":"0.15.9","new_version":"0.15.20","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 14 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.3` | `6.0.6` |\n| [django-environ](https://github.com/joke2k/django-environ) | `0.13.0` | `0.14.0` |\n| [faker](https://github.com/joke2k/faker) | `40.12.0` | `40.28.1` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.1` | `3.4.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.3.3` | `3.3.4` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.15.0` |\n| [django-coverage-plugin](https://github.com/coveragepy/django_coverage_plugin) | `3.2.0` | `3.2.2` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.2` | `6.0.6` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.36.4` | `1.40.3` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.9` | `0.15.20` |\n\n\nUpdates `django` from 6.0.3 to 6.0.6\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ee93f65169c280c9ab3d2ce103dd478c96d05065\"\u003e\u003ccode\u003eee93f65\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.6 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1721035a72624aad7b38dd19b14013efd94b24b8\"\u003e\u003ccode\u003e1721035\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-48587 -- Ignored whitespace padding when checking Vary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/664652f1a2dd80d8a4cd491b4313cad915ae6669\"\u003e\u003ccode\u003e664652f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-35193 -- Varied on Authorization when caching non-publ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/b4330259ffbe1a031ed14daab1f35697460f10f2\"\u003e\u003ccode\u003eb433025\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-8404 -- Used Cache-Control directives case-insensitive...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/625a670c467aa3118c0f8ae1e0df14dbebb3bf68\"\u003e\u003ccode\u003e625a670\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-7666 -- Delayed setting SMTP connection until fully co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c807d9c398022d23cb27518fa6ecaf343efb30cf\"\u003e\u003ccode\u003ec807d9c\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-6873 -- Prevented signed cookie salt namespace collisi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/98a75e39cfc63fa72162027b5678943b78a4469b\"\u003e\u003ccode\u003e98a75e3\u003c/code\u003e\u003c/a\u003e [6.0.x] Included commit hash in checksum file when building artifacts for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dd895d6268f1dd544a565a321cb4527ca3ca1173\"\u003e\u003ccode\u003edd895d6\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/49ca2db7f4d4ca4a7735a40610d59c84a039eb32\"\u003e\u003ccode\u003e49ca2db\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated links to severity levels in release notes.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9f32a2301a9aa897f967fd8077496455ebf5d77\"\u003e\u003ccode\u003ec9f32a2\u003c/code\u003e\u003c/a\u003e [6.0.x] Added stub release notes and release date for 6.0.6 and 5.2.15.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.3...6.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-environ` from 0.13.0 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/django-environ/releases\"\u003edjango-environ's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.0\u003c/h2\u003e\n\u003cp\u003edjango-environ 0.14.0 improves type annotations across \u003ccode\u003eEnv\u003c/code\u003e and updates \u003ccode\u003eEnv.read_env()\u003c/code\u003e to support caller-owned file-like objects without closing them.\u003c/p\u003e\n\u003cp\u003eThis is the final django-environ release supporting Python 3.9.\u003c/p\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eType annotations and matching docstring information for \u003ccode\u003eEnv\u003c/code\u003e methods.\u003c/li\u003e\n\u003cli\u003eA conditional \u003ccode\u003etyping_extensions\u003c/code\u003e dependency providing \u003ccode\u003eTypeAlias\u003c/code\u003e on Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEnv.read_env()\u003c/code\u003e now accepts path-like and file-like objects without closing file-like objects supplied by the caller.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEnv.read_env()\u003c/code\u003e now raises an explicit error when it cannot determine the caller frame used to resolve the default \u003ccode\u003e.env\u003c/code\u003e path.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\"\u003ehttps://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/django-environ/0.14.0/\"\u003ehttps://pypi.org/project/django-environ/0.14.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/joke2k/django-environ/blob/v0.14.0/CHANGELOG.rst\"\u003edjango-environ's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev0.14.0\u003c/code\u003e_ - 18-June-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded type annotations and matching docstring information to \u003ccode\u003eEnv\u003c/code\u003e methods\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a Python 3.9 compatibility dependency on \u003ccode\u003etyping_extensions\u003c/code\u003e for\n\u003ccode\u003eTypeAlias\u003c/code\u003e\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated \u003ccode\u003eEnv.read_env()\u003c/code\u003e to accept path-like and file-like objects without\nclosing file-like objects supplied by the caller\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded an explicit error when \u003ccode\u003eEnv.read_env()\u003c/code\u003e cannot determine its caller\nframe while resolving the default \u003ccode\u003e.env\u003c/code\u003e path\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\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/joke2k/django-environ/commit/6e1b461125e2313cae362e1ab9426a97d9e843b0\"\u003e\u003ccode\u003e6e1b461\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/635\"\u003e#635\u003c/a\u003e from joke2k/release/0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/b65f66ebc8015efa40093d6b21bac72a9f2117f9\"\u003e\u003ccode\u003eb65f66e\u003c/code\u003e\u003c/a\u003e chore(release): prepare 0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/39f980a03a0df18069875a118deabf30db75f9c2\"\u003e\u003ccode\u003e39f980a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/633\"\u003e#633\u003c/a\u003e from joke2k/hotfix/0.14-apply-pr-600\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/020825ce63fa3ba64e4529f620de7ca6bf0d24a0\"\u003e\u003ccode\u003e020825c\u003c/code\u003e\u003c/a\u003e ci: allow release and hotfix PRs to target main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/6c1dd5b970c8594aa28f0592ae2d655bea0a2282\"\u003e\u003ccode\u003e6c1dd5b\u003c/code\u003e\u003c/a\u003e fix(typing): support TypeAlias on Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c0d7b2b61658e679f76a45cdc2d7ea2a4ae4026a\"\u003e\u003ccode\u003ec0d7b2b\u003c/code\u003e\u003c/a\u003e Ensure \u003ccode\u003eEnv.read_env\u003c/code\u003e supports any file-like object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c41ee54266877a1cba3a7a5b0811792cc63af504\"\u003e\u003ccode\u003ec41ee54\u003c/code\u003e\u003c/a\u003e Guard against an inability to read stack frames\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/64bfe4bafd1ce676743ff62c000b0d442213bb36\"\u003e\u003ccode\u003e64bfe4b\u003c/code\u003e\u003c/a\u003e Add type information to docstrings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/791df954df3e2d326731abf240c6c88ea7bb0fd1\"\u003e\u003ccode\u003e791df95\u003c/code\u003e\u003c/a\u003e Add type annotations to \u003ccode\u003estr\u003c/code\u003e and \u003ccode\u003ebool\u003c/code\u003e parameters of methods in \u003ccode\u003eEnv\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/43705929155a5b6e24a9118d0b90ad82b95be6e0\"\u003e\u003ccode\u003e4370592\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into main\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.12.0 to 40.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.28.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.28.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.28.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.28.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.27.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.27.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.26.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.26.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.25.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.25.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.24.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.24.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.24.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.24.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.23.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.23.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.23.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.23.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.22.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.22.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.21.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.21.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.20.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.20.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.19.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.19.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.19.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.19.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.18.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.18.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.17.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.17.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.16.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.16.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.28.0...v40.28.1\"\u003ev40.28.1 - 2026-07-01\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: compute valid ISO 7064 Mod 11,10 check digit for \u003ccode\u003ede_DE\u003c/code\u003e \u003ccode\u003evat_id\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2403\"\u003e#2403\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/CedricConday\"\u003e\u003ccode\u003e@​CedricConday\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.27.0...v40.28.0\"\u003ev40.28.0 - 2026-07-01\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ees_MX\u003c/code\u003e automotive license plate provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2393\"\u003e#2393\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/r1cksync\"\u003e\u003ccode\u003e@​r1cksync\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.26.0...v40.27.0\"\u003ev40.27.0 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003esr_BA\u003c/code\u003e SSN provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2391\"\u003e#2391\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.25.0...v40.26.0\"\u003ev40.26.0 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate providers job, phone_number, bank and ssn for pt_BR (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2386\"\u003e#2386\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/dclobato\"\u003e\u003ccode\u003e@​dclobato\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdate phone number test regex for pt_BR. Thanks \u003ca href=\"https://github.com/fcurella\"\u003e\u003ccode\u003e@​fcurella\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.24.1...v40.25.0\"\u003ev40.25.0 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate outdated Korean locale names (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2385\"\u003e#2385\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/ydj515\"\u003e\u003ccode\u003e@​ydj515\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.24.0...v40.24.1\"\u003ev40.24.1 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: prevent infinite recursion in \u003ccode\u003e_safe_random_int\u003c/code\u003e when both bounds collapse to the same integer (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2396\"\u003e#2396\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/gaoflow\"\u003e\u003ccode\u003e@​gaoflow\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.23.1...v40.24.0\"\u003ev40.24.0 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd mk_MK (Macedonian) locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2339\"\u003e#2339\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/acikabubo\"\u003e\u003ccode\u003e@​acikabubo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCI: run PR checks against PR code instead of base branch. Thanks \u003ca href=\"https://github.com/fcurella\"\u003e\u003ccode\u003e@​fcurella\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.23.0...v40.23.1\"\u003ev40.23.1 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: raise \u003ccode\u003eNotImplementedError\u003c/code\u003e in \u003ccode\u003ebank()\u003c/code\u003e for locales without banks data (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2378\"\u003e#2378\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/koushik717\"\u003e\u003ccode\u003e@​koushik717\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix outdated links in README credits section (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2394\"\u003e#2394\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/TejasAmle\"\u003e\u003ccode\u003e@​TejasAmle\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 5 to 6 (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2400\"\u003e#2400\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot].\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 6 to 7 (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2392\"\u003e#2392\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot].\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.22.0...v40.23.0\"\u003ev40.23.0 - 2026-06-10\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd French social security numbers with Corsican codes (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2373\"\u003e#2373\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/dancergraham\"\u003e\u003ccode\u003e@​dancergraham\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix typos in docstrings and comments (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2387\"\u003e#2387\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/Labib-Bin-Salam\"\u003e\u003ccode\u003e@​Labib-Bin-Salam\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.21.0...v40.22.0\"\u003ev40.22.0 - 2026-06-09\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emr_IN\u003c/code\u003e \u003ccode\u003eperson\u003c/code\u003e, \u003ccode\u003eaddress\u003c/code\u003e, and \u003ccode\u003ephone_number\u003c/code\u003e providers (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2367\"\u003e#2367\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix flaky \u003ccode\u003etest_optional\u003c/code\u003e by using seed and larger sample size (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2376\"\u003e#2376\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/tejasae-afk\"\u003e\u003ccode\u003e@​tejasae-afk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.20.0...v40.21.0\"\u003ev40.21.0 - 2026-06-02\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd banks list for \u003ccode\u003een_GB\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2363\"\u003e#2363\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/osolomientsev\"\u003e\u003ccode\u003e@​osolomientsev\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/joke2k/faker/commit/bb62df7a94c54e203aa61ab4bd46c327798a72d8\"\u003e\u003ccode\u003ebb62df7\u003c/code\u003e\u003c/a\u003e Bump version: 40.28.0 → 40.28.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/1f87cf28513d8be802162c09b309a331cec5ab2a\"\u003e\u003ccode\u003e1f87cf2\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/41624e3ba9a7d8ae6bab2e3f09d319b772447545\"\u003e\u003ccode\u003e41624e3\u003c/code\u003e\u003c/a\u003e fix(de_DE): compute valid ISO 7064 Mod 11,10 check digit for vat_id (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2403\"\u003e#2403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a7742345227f3e13d54fbe6025a32f6ccc9cdbdb\"\u003e\u003ccode\u003ea774234\u003c/code\u003e\u003c/a\u003e Bump version: 40.27.0 → 40.28.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/96c3090bc6efc6ec74048d63094a1741bc05d3f3\"\u003e\u003ccode\u003e96c3090\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/20e203a2f4052ebf00f3a2246e1e5c7da82b9d5d\"\u003e\u003ccode\u003e20e203a\u003c/code\u003e\u003c/a\u003e feat(automotive): add es_MX (Mexico) license plate provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2393\"\u003e#2393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/98da1169c0bdca85751459f8a020cb4695d12c7d\"\u003e\u003ccode\u003e98da116\u003c/code\u003e\u003c/a\u003e Bump version: 40.26.0 → 40.27.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f2c05d979c9e2599ebdc68d3856d5736c65a01fb\"\u003e\u003ccode\u003ef2c05d9\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/88a17fc4b94699ca3057b64eab3dfc014d74c457\"\u003e\u003ccode\u003e88a17fc\u003c/code\u003e\u003c/a\u003e :lipstick: format code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4f7f545bba7db6755ea93b0a0bd559effa7eaf9a\"\u003e\u003ccode\u003e4f7f545\u003c/code\u003e\u003c/a\u003e feat(locale): add sr_BA ssn provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2391\"\u003e#2391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.1 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse hiredis v1.4.0 with improved floating-point number parsing\u003c/li\u003e\n\u003cli\u003eDrop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintainance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependencies and fix CI (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/233\"\u003e#233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix benchmarking for hiredis-py (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/232\"\u003e#232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRun integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump GitHub action versions (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.15.0a7 to CI matrix (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse Python 3.11 in FreeBSD CI run (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump version to 3.4.0-dev (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/MugundanMCW\"\u003e\u003ccode\u003e@​MugundanMCW\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/uglide\"\u003e\u003ccode\u003e@​uglide\u003c/code\u003e\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/redis/hiredis-py/commit/54c1938dfe83e0ea8cb619728b11985a6c07d07b\"\u003e\u003ccode\u003e54c1938\u003c/code\u003e\u003c/a\u003e Version 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/d538033d7158a4b54c0c4a197871396ced996075\"\u003e\u003ccode\u003ed538033\u003c/code\u003e\u003c/a\u003e Beta-2 is not available yet, use beta-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/41cbe8da7341787d1a714036f9dc407dfeef0ea8\"\u003e\u003ccode\u003e41cbe8d\u003c/code\u003e\u003c/a\u003e Use 3.15.0-beta.2 in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/427a12180266d702fd34d4f6557ea658380f4d18\"\u003e\u003ccode\u003e427a121\u003c/code\u003e\u003c/a\u003e Add apt-get update to fix CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6982e3ea44d1093f211bc40c4e0181aa1978bc66\"\u003e\u003ccode\u003e6982e3e\u003c/code\u003e\u003c/a\u003e Bump hiredis to v1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/5eadef115e6ce89d3917231127865dda779e36b3\"\u003e\u003ccode\u003e5eadef1\u003c/code\u003e\u003c/a\u003e Update workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/059ccbc3902f761c8f9f65c03e104c3441add4ec\"\u003e\u003ccode\u003e059ccbc\u003c/code\u003e\u003c/a\u003e Run integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6f1147f4e5d69afed3866447d4defc178213a329\"\u003e\u003ccode\u003e6f1147f\u003c/code\u003e\u003c/a\u003e Add support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/b49261b783092d3c32eac3a2980ba61f49da41e0\"\u003e\u003ccode\u003eb49261b\u003c/code\u003e\u003c/a\u003e Bump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/c30abed1481e06e3beeca3e39dfaec64d7d64523\"\u003e\u003ccode\u003ec30abed\u003c/code\u003e\u003c/a\u003e Drop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.1...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.2.0 to 12.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove non-image ImageCms modes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9697\"\u003e#9697\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd release notes for SBOM and performance improvements \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd security release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9741\"\u003e#9741\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd release notes for Python 3.15 beta wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9696\"\u003e#9696\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eImageFont can also be used with ImageText \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9597\"\u003e#9597\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdditional guidelines for security reports \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9659\"\u003e#9659\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFixed typo \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9636\"\u003e#9636\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9591\"\u003e#9591\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRevise development support information in README \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9583\"\u003e#9583\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd INCIDENT_RESPONSE.md \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9555\"\u003e#9555\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd STRIDE threat model to security docs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9562\"\u003e#9562\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9556\"\u003e#9556\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate README with revised security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9553\"\u003e#9553\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9552\"\u003e#9552\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9534\"\u003e#9534\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9720\"\u003e#9720\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9653\"\u003e#9653\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v4 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9665\"\u003e#9665\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9655\"\u003e#9655\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libavif to v1.4.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9652\"\u003e#9652\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9651\"\u003e#9651\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency check-jsonschema to v0.37.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9650\"\u003e#9650\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate google/oss-fuzz digest to d872252 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9614\"\u003e#9614\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9609\"\u003e#9609\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libpng to v1.6.58 - autoclosed \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9608\"\u003e#9608\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9610\"\u003e#9610\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.20.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9599\"\u003e#9599\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9611\"\u003e#9611\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9607\"\u003e#9607\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMove dependency versions to single JSON and enable Renovate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9559\"\u003e#9559\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated raqm to 0.10.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9557\"\u003e#9557\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9532\"\u003e#9532\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTesting\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove matrix.os from benchmark \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9735\"\u003e#9735\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRemove references to libavif patch \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9734\"\u003e#9734\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd benchmark tests \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9654\"\u003e#9654\u003c/a\u003e [\u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUse reshape() instead of setting NumPy array shape directly \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9728\"\u003e#9728\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d\"\u003e\u003ccode\u003ebb1d8e8\u003c/code\u003e\u003c/a\u003e 12.3.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e63fc481dc2e07e21d5403deafb8f1ed98a513af\"\u003e\u003ccode\u003ee63fc48\u003c/code\u003e\u003c/a\u003e Add release notes for SBOM and performance improvements (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/13b701bbab291eec4bc87ea17ba06c94e5fe3054\"\u003e\u003ccode\u003e13b701b\u003c/code\u003e\u003c/a\u003e Add release notes for \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5564ca72fcd59d040e270af5dcf17a0d7161c364\"\u003e\u003ccode\u003e5564ca7\u003c/code\u003e\u003c/a\u003e List methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a0920fd384f800b5d0ba3dd29ecdeae4f1d4043b\"\u003e\u003ccode\u003ea0920fd\u003c/code\u003e\u003c/a\u003e Speed up ImageChops operations (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9738\"\u003e#9738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/07e9a6cd5336dc6cf8cae9165cd70cdd2b3e42fc\"\u003e\u003ccode\u003e07e9a6c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.filter()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9736\"\u003e#9736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a94578cf9649ea13e426cf7fb2b71b39ffc0dd50\"\u003e\u003ccode\u003ea94578c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.getchannel()\u003c/code\u003e, \u003ccode\u003eImage.merge()\u003c/code\u003e, \u003ccode\u003eImage.putalpha()\u003c/code\u003e and `Image...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/53e02c43c919d149b2a154a5180079f9df18fbbb\"\u003e\u003ccode\u003e53e02c4\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.fill()\u003c/code\u003e, \u003ccode\u003eImage.linear_gradient()\u003c/code\u003e and `Image.radial_gradient...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/af037475be8634ba739744243164ba9e2c8346a6\"\u003e\u003ccode\u003eaf03747\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.resample()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9739\"\u003e#9739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5c9ca56c3e5fba52b647809fbb0986c87e73a571\"\u003e\u003ccode\u003e5c9ca56\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003ealpha_composite\u003c/code\u003e, \u003ccode\u003ematrix\u003c/code\u003e, \u003ccode\u003enegative\u003c/code\u003e, \u003ccode\u003equantize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9740\"\u003e#9740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.2.0...12.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg[c]` from 3.3.3 to 3.3.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg[c]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eFuture releases\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5 (unreleased)\n^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.2\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix race condition in adapters at startup (:ticket:\u003ccode\u003e[#1230](https://github.com/psycopg/psycopg/issues/1230)\u003c/code\u003e).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/83f110367cdd249cc0a352e2246ecea9e878e5a0\"\u003e\u003ccode\u003e83f1103\u003c/code\u003e\u003c/a\u003e chore: bump psycopg_pool package version to 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/18287707f56a2b4f0817d9c23d137f5d69db6e31\"\u003e\u003ccode\u003e1828770\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8be14bbc18f74de7652606d2777e0950ec804cc0\"\u003e\u003ccode\u003e8be14bb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1301\"\u003e#1301\u003c/a\u003e from oliverhaas/fix/sync-pool-open-race\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/aee0bf2659db77c31154acf583baf0a98675c192\"\u003e\u003ccode\u003eaee0bf2\u003c/code\u003e\u003c/a\u003e fix(pool): fix race in the construction of the sync ConnectionPool lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/bc4d30375557fc32f2a91c2f8b75a5d21711ea89\"\u003e\u003ccode\u003ebc4d303\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/785379f196fc17473d312451a1fd4a06ef8dc895\"\u003e\u003ccode\u003e785379f\u003c/code\u003e\u003c/a\u003e fix: retain statusmessage after executemany with returning=False\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8882a73871e65727549657085922d043a106127c\"\u003e\u003ccode\u003e8882a73\u003c/code\u003e\u003c/a\u003e perf: do less if X in Y: return Y[X] for cache-like patterns\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f785395c189e709da5fa74a02d3797bfb9db6a4\"\u003e\u003ccode\u003e2f78539\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1299\"\u003e#1299\u003c/a\u003e from dvarrazzo/fix-camel-enum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/37ef1dc4e6d19dc4af062d45a63243cb96a261c2\"\u003e\u003ccode\u003e37ef1dc\u003c/code\u003e\u003c/a\u003e test: skip test on crdb depending on precise regtype behaviour\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/7f2f1d159df881260e3086fd61ea71343ca98e58\"\u003e\u003ccode\u003e7f2f1d1\u003c/code\u003e\u003c/a\u003e fix: fix client-side representation of enums requiring quotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.3...3.3.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.15.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.15.0 — 2026-07-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSince 7.14.0, reporting commands implicitly combine parallel data files. Now\nthose commands have a new option \u003ccode\u003e--keep-combined\u003c/code\u003e to retain the data files\nafter combining them instead of the default, which is to delete them.\nFinishes \u003ccode\u003eissue 2198\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report would incorrectly count excluded functions as uncovered,\nas described in \u003ccode\u003eissue 2205\u003c/code\u003e\u003cem\u003e. This is now fixed thanks to \u003ccode\u003eMartin Kuntz Jacobsen \u0026lt;pull 2206_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWhen running your program, coverage now correctly sets\n\u003ccode\u003eyourmodule.__spec__.loader\u003c/code\u003e as \u003ccode\u003estrongly recommended \u0026lt;--loader--_\u0026gt;\u003c/code\u003e\u003cem\u003e,\navoiding the deprecation warning described in \u003ccode\u003eissue 2208\u003c/code\u003e\u003c/em\u003e. Thanks, \u003ccode\u003eA5rocks \u0026lt;pull 2209_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: with Python 3.10, running with the \u003ccode\u003e-I\u003c/code\u003e (isolated mode) option didn't\ncorrectly omit the current directory from the module search path, as\ndescribed in \u003ccode\u003eissue 2103\u003c/code\u003e\u003cem\u003e. That is now fixed thanks to \u003ccode\u003eIlia Sorokin \u0026lt;pull 2211_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. \u003cem\u003e--loader--: \u003ca href=\"https://docs.python.org/3/reference/datamodel.html#module.__loader\"\u003ehttps://docs.python.org/3/reference/datamodel.html#module.__loader\u003c/a\u003e\u003c/em\u003e_\n.. _issue 2103:  \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2103\"\u003ecoveragepy/coveragepy#2103\u003c/a\u003e\n.. _issue 2198:  \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2198\"\u003ecoveragepy/coveragepy#2198\u003c/a\u003e\n.. _issue 2205:  \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2205\"\u003ecoveragepy/coveragepy#2205\u003c/a\u003e\n.. _pull 2206: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2206\"\u003ecoveragepy/coveragepy#2206\u003c/a\u003e\n.. _issue 2208:  \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2208\"\u003ecoveragepy/coveragepy#2208\u003c/a\u003e\n.. _pull 2209: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2209\"\u003ecoveragepy/coveragepy#2209\u003c/a\u003e\n.. _pull 2211: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2211\"\u003ecoveragepy/coveragepy#2211\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-14-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.14.3 — 2026-06-22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the default \u003ccode\u003e...\u003c/code\u003e exclusion rule now also matches function bodies\nwhose closing return-type bracket is on its own line (for example, after a\nlong \u003ccode\u003e-\u0026gt; dict[ ... ]\u003c/code\u003e annotation that a formatter has split over multiple\nlines). Closes \u003ccode\u003eissue 2185\u003c/code\u003e\u003cem\u003e, thanks \u003ccode\u003eMengjia Shang \u0026lt;pull 2196_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: On 3.13t, we incorrectly issued \u003ccode\u003eCouldn't import C tracer\u003c/code\u003e errors.\nWe can't import the C tracer because in 7.14.2 we stopped shipping compiled\nwheels for 3.13t. Thanks, \u003ccode\u003eHugo van Kemenade \u0026lt;pull 2203_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2185: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2185\"\u003ecoveragepy/coveragepy#2185\u003c/a\u003e\n.. _pull 2196: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2196\"\u003ecoveragepy/coveragepy#2196\u003c/a\u003e\n.. _pull 2203: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2203\"\u003ecoveragepy/coveragepy#2203\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c8c8020e26394526ad24184879f5867bb46b0785\"\u003e\u003ccode\u003ec8c8020\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ae19db1fb3880f2b2bb0c03e3d76855cb71ce5f7\"\u003e\u003ccode\u003eae19db1\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/17b45a14119cb52bdf8170d1aa01f84a42b580e6\"\u003e\u003ccode\u003e17b45a1\u003c/code\u003e\u003c/a\u003e docs: --keep-combined in the man page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6f9fa1e1e8a89f62c69dbf3b38e0adb744d6d4b2\"\u003e\u003ccode\u003e6f9fa1e\u003c/code\u003e\u003c/a\u003e fix: preserve isolated sys.path on Python 3.10 (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2211\"\u003e#2211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/787af5ff90e8a73bfd8cba7d5661b4930cc53ce5\"\u003e\u003ccode\u003e787af5f\u003c/code\u003e\u003c/a\u003e chore: bump actions/checkout in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2210\"\u003e#2210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1ed39982fe550fc542a9ed3d5561dec29737b0dc\"\u003e\u003ccode\u003e1ed3998\u003c/code\u003e\u003c/a\u003e fix: start attaching the loader on \u003ccode\u003e__spec__\u003c/code\u003e \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2208\"\u003e#2208\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2209\"\u003e#2209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1ab11229351f522d309f8cc54a542e4b97c78113\"\u003e\u003ccode\u003e1ab1122\u003c/code\u003e\u003c/a\u003e docs: remove stray comma\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f24a91f6d00b888c1d3d7c438cfe70294ad0c6ea\"\u003e\u003ccode\u003ef24a91f\u003c/code\u003e\u003c/a\u003e feat: --keep-combined for reporting commands. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2198\"\u003e#2198\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5e70751905386500e35d1382061178da3ce5519e\"\u003e\u003ccode\u003e5e70751\u003c/code\u003e\u003c/a\u003e test: canonicalize mock calls in test_cmdline to reduce diff noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/65979cc05b7f6b10c3e27c84408867fd9bc30846\"\u003e\u003ccode\u003e65979cc\u003c/code\u003e\u003c/a\u003e fix: skip excluded functions in LCOV function totals (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2206\"\u003e#2206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-coverage-plugin` from 3.2.0 to 3.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/releases\"\u003edjango-coverage-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.2\u003c/h2\u003e\n\u003cp\u003eFix: \u003ccode\u003e{% endblock %}\u003c/code\u003e lines (and others) were falsely reported as unexecuted when they appeared on their own indented line (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/74\"\u003eissue 74\u003c/a\u003e). Thanks, Marc Gibbons (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/pull/108\"\u003epull 108\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eDropped Django 3.x and 4.x.\u003c/p\u003e\n\u003cp\u003eSwitched to trusted publishing.\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/django_coverage_plugin/commit/4eb4fc975e915400734104851116e423164a7c5c\"\u003e\u003ccode\u003e4eb4fc9\u003c/code\u003e\u003c/a\u003e build: fix publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/420435edd77b7af9e508446d60a852f61bcaed8c\"\u003e\u003ccode\u003e420435e\u003c/code\u003e\u003c/a\u003e build: v3.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/86a9d30fc44628981cd944ff58189f03fa082ca8\"\u003e\u003ccode\u003e86a9d30\u003c/code\u003e\u003c/a\u003e build: trusted publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/9a5dfe53d9a81a8b54585c8b20b7e5ca06855afc\"\u003e\u003ccode\u003e9a5dfe5\u003c/code\u003e\u003c/a\u003e docs: update history\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/bfee7019ec245ef61a3c182c262e54e64a1cabe8\"\u003e\u003ccode\u003ebfee701\u003c/code\u003e\u003c/a\u003e fix: endblock falsely reported as uncovered when on its own indented line \u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/74\"\u003e#74\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/59954f3fb97938849e8ec882d59a7cf438f12eff\"\u003e\u003ccode\u003e59954f3\u003c/code\u003e\u003c/a\u003e correct two old references to nedbat on github\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/7d145017c244f192c55a17035033667a190c0d6a\"\u003e\u003ccode\u003e7d14501\u003c/code\u003e\u003c/a\u003e docs: thanks, Marc Gibbons for \u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/109\"\u003e#109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/55cf337e2a4242c30766dc4784bd99ac5d180085\"\u003e\u003ccode\u003e55cf337\u003c/code\u003e\u003c/a\u003e docs: move authors into readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/639d48a188d04da28623a4751ae50e4da301fd9e\"\u003e\u003ccode\u003e639d48a\u003c/code\u003e\u003c/a\u003e Add Django 6, drop 3.2 and 4.2 which are EOL (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/109\"\u003e#109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/53d114ac6082fb3fcd97c5cf0c4d634d395fe7f0\"\u003e\u003ccode\u003e53d114a\u003c/code\u003e\u003c/a\u003e chore: bump actions/setup-python in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/compare/v3.2.0...v3.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.2 to 6.0.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.0.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003etask\u003c/code\u003e decorator typing for \u003ccode\u003etakes_context=True\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3406\"\u003etypeddjango/django-stubs#3406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove database backend typing by \u003ca href=\"https://github.com/dekkers\"\u003e\u003ccode\u003e@​dekkers\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3190\"\u003etypeddjango/django-stubs#3190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix only pk validation for abstract models by \u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3430\"\u003etypeddjango/django-stubs#3430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003evalidators\u003c/code\u003e consistent by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3433\"\u003etypeddjango/django-stubs#3433\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow aggregate filters to use expressions by \u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3434\"\u003etypeddjango/django-stubs#3434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypecheck save()/asave() update_fields against model fields by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3444\"\u003etypeddjango/django-stubs#3444\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/dekkers\"\u003e\u003ccode\u003e@​dekkers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3190\"\u003etypeddjango/django-stubs#3190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3430\"\u003etypeddjango/django-stubs#3430\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.5...6.0.6\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.5...6.0.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.0.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAccept datetime/timedelta on reverse ops of Combinable by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3361\"\u003etypeddjango/django-stubs#3361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency pyrefly to v0.64.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3377\"\u003etypeddjango/django-stubs#3377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type when \u003ccode\u003e.annotate()\u003c/code\u003e is called on a generic QuerySet by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3379\"\u003etypeddjango/django-stubs#3379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type checking of \u003ccode\u003e__in\u003c/code\u003e lookup by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3314\"\u003etypeddjango/django-stubs#3314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GenericPrefetch invariance with QuerySet by \u003ca href=\"https://github.com/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type in merge_annotations_from_custom_method by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3383\"\u003etypeddjango/django-stubs#3383\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mypy 2.1.0 support by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3384\"\u003etypeddjango/django-stubs#3384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003epyrefly\u003c/code\u003e to 1.0.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3386\"\u003etypeddjango/django-stubs#3386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003erelated_model\u003c/code\u003e type for mypy 2.1 by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3388\"\u003etypeddjango/django-stubs#3388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-enable \u003ccode\u003eempty-body\u003c/code\u003e error code for mypy and ty by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3390\"\u003etypeddjango/django-stubs#3390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003emark_safe\u003c/code\u003e to accept \u003ccode\u003eStrOrPromise\u003c/code\u003e by \u003ca href=\"https://github.com/Alexerson\"\u003e\u003ccode\u003e@​Alexerson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3392\"\u003etypeddjango/django-stubs#3392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable \u003ccode\u003eunused-ignore\u003c/code\u003e code in pyrefly by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3393\"\u003etypeddjango/django-stubs#3393\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix InlineModelAdmin parent-object method signatures by \u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAdminSite.register\u003c/code\u003e typing by \u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3387\"\u003etypeddjango/django-stubs#3387\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/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\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/typeddjango/django-stubs/commit/c1d968a356955f9598da6536115ccae4ed802b44\"\u003e\u003ccode\u003ec1d968a\u003c/code\u003e\u003c/a\u003e Version 6.0.6 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/c78e1060c24c6f36ec128e6264cab523b7954c52\"\u003e\u003ccode\u003ec78e106\u003c/code\u003e\u003c/a\u003e Typecheck save()/asave() update_fields against model fields (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3444\"\u003e#3444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/9110cd4800a3dbc12d753a669ae847d5bc83ef86\"\u003e\u003ccode\u003e9110cd4\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.62.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/2e6023a32ac6ee53b7f34274e839ca44f18a3f98\"\u003e\u003ccode\u003e2e6023a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3441\"\u003e#3441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/908841607ad48ca8bffb952c60344eb524a58441\"\u003e\u003ccode\u003e9088416\u003c/code\u003e\u003c/a\u003e Update dependency pytest to v9.1.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/4ffe717427bf4ffce1eb043ade0ea22cccd3edcc\"\u003e\u003ccode\u003e4ffe717\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.51 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3439\"\u003e#3439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/0caf5de459f3b9277d465e6ee9cd3f8027a1e0bd\"\u003e\u003ccode\u003e0caf5de\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v1.1.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3438\"\u003e#3438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6b0170d9f1190f141f97e0b3e039f42d2deba0f7\"\u003e\u003ccode\u003e6b0170d\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.50 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3437\"\u003e#3437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a257acd9cfc36353c6f2890aabe2020b2bc9d35f\"\u003e\u003ccode\u003ea257acd\u003c/code\u003e\u003c/a\u003e Update actions/checkout action to v7 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3436\"\u003e#3436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/dc012ea24926c9ce8ee0be94af2b86ab1e2b6358\"\u003e\u003ccode\u003edc012ea\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v1.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.2...6.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.16.9 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003ch2\u003eVersioning\u003c/h2\u003e\n\u003cp\u003eThis is the first version targeting \u003ccode\u003edjangorestframework\u003c/code\u003e v3.17 and \u003ccode\u003edjango-stubs\u003c/code\u003e v6.0. However, not all stubs have been updated yet for 3.17:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSee \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\u003c/a\u003e for remaining work\u003c/li\u003e\n\u003cli\u003ePlease open pull requests, but keep changes small.\u003c/li\u003e\n\u003cli\u003eFirst check that nobody is already working on that topic: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/pulls\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/pulls\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e \u003ccode\u003ecode\u003c/code\u003e support and fix defaults in validators by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/947\"\u003etypeddjango/djangorestframework-stubs#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorator stubs for DRF 3.17 by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/949\"\u003etypeddjango/djangorestframework-stubs#949\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eSerializer\u003c/code\u003e context type \u003ccode\u003edict\u003c/code\u003e -\u0026gt; \u003ccode\u003eMapping\u003c/code\u003e by \u003ca href=\"https://github.com/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.renderers\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/960\"\u003etypeddjango/djangorestframework-stubs#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/964\"\u003etypeddjango/djangorestframework-stubs#964\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency djangorestframework to v3.17.1 \u0026amp; add new allowlist by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/941\"\u003etypeddjango/djangorestframework-stubs#941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance - Django 5.2.13 \u0026amp; 6.0.4 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/962\"\u003etypeddjango/djangorestframework-stubs#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/984\"\u003etypeddjango/djangorestframework-stubs#984\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/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.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/typeddjango/djangorestframework-stubs/commit/dcaf5607a9c22db2e19274ff49bd149489603e53\"\u003e\u003ccode\u003edcaf560\u003c/code\u003e\u003c/a\u003e Version 3.17.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/9ac7355a57ab3ac7e7c00830bb0d8ad4df699e01\"\u003e\u003ccode\u003e9ac7355\u003c/code\u003e\u003c/a\u003e Clean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/4f367f1fcbeb0c5f041a88ea12988fe5a4872e49\"\u003e\u003ccode\u003e4f367f1\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/7923d06e186d363e88e3590fe88a98bdd924920a\"\u003e\u003ccode\u003e7923d06\u003c/code\u003e\u003c/a\u003e Unpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b2d9250b66d2aa7727793dd05e7cd37208ebcde6\"\u003e\u003ccode\u003eb2d9250\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/77b63b4ea29056d63b30b60b2d82e564f6194d6b\"\u003e\u003ccode\u003e77b63b4\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/96a5e21a45f39a3e65dbff74a4ce3482d0cdd9d1\"\u003e\u003ccode\u003e96a5e21\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b6c3e0298ff742dfb60ec2a87319028cd955686f\"\u003e\u003ccode\u003eb6c3e02\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260510 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/cc0af26d455fd5b3b735806409d17e6aef01a0b2\"\u003e\u003ccode\u003ecc0af26\u003c/code\u003e\u003c/a\u003e Update dependency types-requests to v2.33.0.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/978\"\u003e#978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/001b9c2865e9c0aae2b1cb181baa5f02be2b6be1\"\u003e\u003ccode\u003e001b9c2\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djlint` from 1.36.4 to 1.40.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/djlint/djLint/releases\"\u003edjlint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.40.3\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003edjlint:off\u003c/code\u003e blocks inside tag attributes and avoid false H025 orphan reports when a ma...\n\n_Description has been truncated_","html_url":"https://github.com/Dawit-y/pms/pull/28","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dawit-y%2Fpms/issues/28","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/28/packages"},{"uuid":"4788234943","node_id":"PR_kwDOR20Ms87sz6sE","number":12,"state":"closed","title":"chore(deps): bump the python group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-06T18:27:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-01T18:30:54.000Z","updated_at":"2026-07-06T18:27:57.000Z","time_to_close":431822,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":13,"packages":[{"name":"django","old_version":"6.0.4","new_version":"6.0.6","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.16.0","new_version":"65.18.0"},{"name":"django-environ","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/joke2k/django-environ"},{"name":"hiredis","old_version":"3.3.1","new_version":"3.4.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"psycopg","old_version":"3.3.3","new_version":"3.3.4"},{"name":"sentry-sdk","old_version":"2.58.0","new_version":"2.64.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.3","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.0.2","new_version":"6.0.6"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ruff","old_version":"0.15.11","new_version":"0.15.20","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 13 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.4` | `6.0.6` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.16.0` | `65.18.0` |\n| [django-environ](https://github.com/joke2k/django-environ) | `0.13.0` | `0.14.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.1` | `3.4.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.3.3` | `3.3.4` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.58.0` | `2.64.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.3` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.2` | `6.0.6` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.11` | `0.15.20` |\n\n\nUpdates `django` from 6.0.4 to 6.0.6\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ee93f65169c280c9ab3d2ce103dd478c96d05065\"\u003e\u003ccode\u003eee93f65\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.6 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1721035a72624aad7b38dd19b14013efd94b24b8\"\u003e\u003ccode\u003e1721035\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-48587 -- Ignored whitespace padding when checking Vary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/664652f1a2dd80d8a4cd491b4313cad915ae6669\"\u003e\u003ccode\u003e664652f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-35193 -- Varied on Authorization when caching non-publ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/b4330259ffbe1a031ed14daab1f35697460f10f2\"\u003e\u003ccode\u003eb433025\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-8404 -- Used Cache-Control directives case-insensitive...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/625a670c467aa3118c0f8ae1e0df14dbebb3bf68\"\u003e\u003ccode\u003e625a670\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-7666 -- Delayed setting SMTP connection until fully co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c807d9c398022d23cb27518fa6ecaf343efb30cf\"\u003e\u003ccode\u003ec807d9c\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-6873 -- Prevented signed cookie salt namespace collisi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/98a75e39cfc63fa72162027b5678943b78a4469b\"\u003e\u003ccode\u003e98a75e3\u003c/code\u003e\u003c/a\u003e [6.0.x] Included commit hash in checksum file when building artifacts for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dd895d6268f1dd544a565a321cb4527ca3ca1173\"\u003e\u003ccode\u003edd895d6\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/49ca2db7f4d4ca4a7735a40610d59c84a039eb32\"\u003e\u003ccode\u003e49ca2db\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated links to severity levels in release notes.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9f32a2301a9aa897f967fd8077496455ebf5d77\"\u003e\u003ccode\u003ec9f32a2\u003c/code\u003e\u003c/a\u003e [6.0.x] Added stub release notes and release date for 6.0.6 and 5.2.15.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.4...6.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.16.0 to 65.18.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-environ` from 0.13.0 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/django-environ/releases\"\u003edjango-environ's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.0\u003c/h2\u003e\n\u003cp\u003edjango-environ 0.14.0 improves type annotations across \u003ccode\u003eEnv\u003c/code\u003e and updates \u003ccode\u003eEnv.read_env()\u003c/code\u003e to support caller-owned file-like objects without closing them.\u003c/p\u003e\n\u003cp\u003eThis is the final django-environ release supporting Python 3.9.\u003c/p\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eType annotations and matching docstring information for \u003ccode\u003eEnv\u003c/code\u003e methods.\u003c/li\u003e\n\u003cli\u003eA conditional \u003ccode\u003etyping_extensions\u003c/code\u003e dependency providing \u003ccode\u003eTypeAlias\u003c/code\u003e on Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEnv.read_env()\u003c/code\u003e now accepts path-like and file-like objects without closing file-like objects supplied by the caller.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEnv.read_env()\u003c/code\u003e now raises an explicit error when it cannot determine the caller frame used to resolve the default \u003ccode\u003e.env\u003c/code\u003e path.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\"\u003ehttps://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/django-environ/0.14.0/\"\u003ehttps://pypi.org/project/django-environ/0.14.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/joke2k/django-environ/blob/v0.14.0/CHANGELOG.rst\"\u003edjango-environ's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev0.14.0\u003c/code\u003e_ - 18-June-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded type annotations and matching docstring information to \u003ccode\u003eEnv\u003c/code\u003e methods\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a Python 3.9 compatibility dependency on \u003ccode\u003etyping_extensions\u003c/code\u003e for\n\u003ccode\u003eTypeAlias\u003c/code\u003e\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated \u003ccode\u003eEnv.read_env()\u003c/code\u003e to accept path-like and file-like objects without\nclosing file-like objects supplied by the caller\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded an explicit error when \u003ccode\u003eEnv.read_env()\u003c/code\u003e cannot determine its caller\nframe while resolving the default \u003ccode\u003e.env\u003c/code\u003e path\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\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/joke2k/django-environ/commit/6e1b461125e2313cae362e1ab9426a97d9e843b0\"\u003e\u003ccode\u003e6e1b461\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/635\"\u003e#635\u003c/a\u003e from joke2k/release/0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/b65f66ebc8015efa40093d6b21bac72a9f2117f9\"\u003e\u003ccode\u003eb65f66e\u003c/code\u003e\u003c/a\u003e chore(release): prepare 0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/39f980a03a0df18069875a118deabf30db75f9c2\"\u003e\u003ccode\u003e39f980a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/633\"\u003e#633\u003c/a\u003e from joke2k/hotfix/0.14-apply-pr-600\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/020825ce63fa3ba64e4529f620de7ca6bf0d24a0\"\u003e\u003ccode\u003e020825c\u003c/code\u003e\u003c/a\u003e ci: allow release and hotfix PRs to target main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/6c1dd5b970c8594aa28f0592ae2d655bea0a2282\"\u003e\u003ccode\u003e6c1dd5b\u003c/code\u003e\u003c/a\u003e fix(typing): support TypeAlias on Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c0d7b2b61658e679f76a45cdc2d7ea2a4ae4026a\"\u003e\u003ccode\u003ec0d7b2b\u003c/code\u003e\u003c/a\u003e Ensure \u003ccode\u003eEnv.read_env\u003c/code\u003e supports any file-like object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c41ee54266877a1cba3a7a5b0811792cc63af504\"\u003e\u003ccode\u003ec41ee54\u003c/code\u003e\u003c/a\u003e Guard against an inability to read stack frames\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/64bfe4bafd1ce676743ff62c000b0d442213bb36\"\u003e\u003ccode\u003e64bfe4b\u003c/code\u003e\u003c/a\u003e Add type information to docstrings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/791df954df3e2d326731abf240c6c88ea7bb0fd1\"\u003e\u003ccode\u003e791df95\u003c/code\u003e\u003c/a\u003e Add type annotations to \u003ccode\u003estr\u003c/code\u003e and \u003ccode\u003ebool\u003c/code\u003e parameters of methods in \u003ccode\u003eEnv\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/43705929155a5b6e24a9118d0b90ad82b95be6e0\"\u003e\u003ccode\u003e4370592\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into main\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.1 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse hiredis v1.4.0 with improved floating-point number parsing\u003c/li\u003e\n\u003cli\u003eDrop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintainance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependencies and fix CI (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/233\"\u003e#233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix benchmarking for hiredis-py (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/232\"\u003e#232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRun integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump GitHub action versions (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.15.0a7 to CI matrix (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse Python 3.11 in FreeBSD CI run (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump version to 3.4.0-dev (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/MugundanMCW\"\u003e\u003ccode\u003e@​MugundanMCW\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/uglide\"\u003e\u003ccode\u003e@​uglide\u003c/code\u003e\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/redis/hiredis-py/commit/54c1938dfe83e0ea8cb619728b11985a6c07d07b\"\u003e\u003ccode\u003e54c1938\u003c/code\u003e\u003c/a\u003e Version 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/d538033d7158a4b54c0c4a197871396ced996075\"\u003e\u003ccode\u003ed538033\u003c/code\u003e\u003c/a\u003e Beta-2 is not available yet, use beta-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/41cbe8da7341787d1a714036f9dc407dfeef0ea8\"\u003e\u003ccode\u003e41cbe8d\u003c/code\u003e\u003c/a\u003e Use 3.15.0-beta.2 in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/427a12180266d702fd34d4f6557ea658380f4d18\"\u003e\u003ccode\u003e427a121\u003c/code\u003e\u003c/a\u003e Add apt-get update to fix CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6982e3ea44d1093f211bc40c4e0181aa1978bc66\"\u003e\u003ccode\u003e6982e3e\u003c/code\u003e\u003c/a\u003e Bump hiredis to v1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/5eadef115e6ce89d3917231127865dda779e36b3\"\u003e\u003ccode\u003e5eadef1\u003c/code\u003e\u003c/a\u003e Update workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/059ccbc3902f761c8f9f65c03e104c3441add4ec\"\u003e\u003ccode\u003e059ccbc\u003c/code\u003e\u003c/a\u003e Run integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6f1147f4e5d69afed3866447d4defc178213a329\"\u003e\u003ccode\u003e6f1147f\u003c/code\u003e\u003c/a\u003e Add support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/b49261b783092d3c32eac3a2980ba61f49da41e0\"\u003e\u003ccode\u003eb49261b\u003c/code\u003e\u003c/a\u003e Bump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/c30abed1481e06e3beeca3e39dfaec64d7d64523\"\u003e\u003ccode\u003ec30abed\u003c/code\u003e\u003c/a\u003e Drop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.1...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.2.0 to 12.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove non-image ImageCms modes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9697\"\u003e#9697\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd release notes for SBOM and performance improvements \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd security release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9741\"\u003e#9741\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd release notes for Python 3.15 beta wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9696\"\u003e#9696\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eImageFont can also be used with ImageText \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9597\"\u003e#9597\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdditional guidelines for security reports \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9659\"\u003e#9659\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFixed typo \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9636\"\u003e#9636\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9591\"\u003e#9591\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRevise development support information in README \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9583\"\u003e#9583\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd INCIDENT_RESPONSE.md \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9555\"\u003e#9555\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd STRIDE threat model to security docs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9562\"\u003e#9562\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9556\"\u003e#9556\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate README with revised security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9553\"\u003e#9553\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9552\"\u003e#9552\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9534\"\u003e#9534\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9720\"\u003e#9720\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9653\"\u003e#9653\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v4 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9665\"\u003e#9665\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9655\"\u003e#9655\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libavif to v1.4.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9652\"\u003e#9652\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9651\"\u003e#9651\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency check-jsonschema to v0.37.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9650\"\u003e#9650\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate google/oss-fuzz digest to d872252 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9614\"\u003e#9614\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9609\"\u003e#9609\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libpng to v1.6.58 - autoclosed \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9608\"\u003e#9608\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9610\"\u003e#9610\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.20.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9599\"\u003e#9599\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9611\"\u003e#9611\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9607\"\u003e#9607\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMove dependency versions to single JSON and enable Renovate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9559\"\u003e#9559\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated raqm to 0.10.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9557\"\u003e#9557\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9532\"\u003e#9532\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTesting\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove matrix.os from benchmark \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9735\"\u003e#9735\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRemove references to libavif patch \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9734\"\u003e#9734\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd benchmark tests \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9654\"\u003e#9654\u003c/a\u003e [\u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUse reshape() instead of setting NumPy array shape directly \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9728\"\u003e#9728\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d\"\u003e\u003ccode\u003ebb1d8e8\u003c/code\u003e\u003c/a\u003e 12.3.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e63fc481dc2e07e21d5403deafb8f1ed98a513af\"\u003e\u003ccode\u003ee63fc48\u003c/code\u003e\u003c/a\u003e Add release notes for SBOM and performance improvements (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/13b701bbab291eec4bc87ea17ba06c94e5fe3054\"\u003e\u003ccode\u003e13b701b\u003c/code\u003e\u003c/a\u003e Add release notes for \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5564ca72fcd59d040e270af5dcf17a0d7161c364\"\u003e\u003ccode\u003e5564ca7\u003c/code\u003e\u003c/a\u003e List methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a0920fd384f800b5d0ba3dd29ecdeae4f1d4043b\"\u003e\u003ccode\u003ea0920fd\u003c/code\u003e\u003c/a\u003e Speed up ImageChops operations (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9738\"\u003e#9738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/07e9a6cd5336dc6cf8cae9165cd70cdd2b3e42fc\"\u003e\u003ccode\u003e07e9a6c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.filter()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9736\"\u003e#9736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a94578cf9649ea13e426cf7fb2b71b39ffc0dd50\"\u003e\u003ccode\u003ea94578c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.getchannel()\u003c/code\u003e, \u003ccode\u003eImage.merge()\u003c/code\u003e, \u003ccode\u003eImage.putalpha()\u003c/code\u003e and `Image...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/53e02c43c919d149b2a154a5180079f9df18fbbb\"\u003e\u003ccode\u003e53e02c4\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.fill()\u003c/code\u003e, \u003ccode\u003eImage.linear_gradient()\u003c/code\u003e and `Image.radial_gradient...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/af037475be8634ba739744243164ba9e2c8346a6\"\u003e\u003ccode\u003eaf03747\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.resample()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9739\"\u003e#9739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5c9ca56c3e5fba52b647809fbb0986c87e73a571\"\u003e\u003ccode\u003e5c9ca56\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003ealpha_composite\u003c/code\u003e, \u003ccode\u003ematrix\u003c/code\u003e, \u003ccode\u003enegative\u003c/code\u003e, \u003ccode\u003equantize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9740\"\u003e#9740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.2.0...12.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg[c]` from 3.3.3 to 3.3.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg[c]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eFuture releases\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5 (unreleased)\n^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.2\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix race condition in adapters at startup (:ticket:\u003ccode\u003e[#1230](https://github.com/psycopg/psycopg/issues/1230)\u003c/code\u003e).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/83f110367cdd249cc0a352e2246ecea9e878e5a0\"\u003e\u003ccode\u003e83f1103\u003c/code\u003e\u003c/a\u003e chore: bump psycopg_pool package version to 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/18287707f56a2b4f0817d9c23d137f5d69db6e31\"\u003e\u003ccode\u003e1828770\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8be14bbc18f74de7652606d2777e0950ec804cc0\"\u003e\u003ccode\u003e8be14bb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1301\"\u003e#1301\u003c/a\u003e from oliverhaas/fix/sync-pool-open-race\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/aee0bf2659db77c31154acf583baf0a98675c192\"\u003e\u003ccode\u003eaee0bf2\u003c/code\u003e\u003c/a\u003e fix(pool): fix race in the construction of the sync ConnectionPool lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/bc4d30375557fc32f2a91c2f8b75a5d21711ea89\"\u003e\u003ccode\u003ebc4d303\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/785379f196fc17473d312451a1fd4a06ef8dc895\"\u003e\u003ccode\u003e785379f\u003c/code\u003e\u003c/a\u003e fix: retain statusmessage after executemany with returning=False\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8882a73871e65727549657085922d043a106127c\"\u003e\u003ccode\u003e8882a73\u003c/code\u003e\u003c/a\u003e perf: do less if X in Y: return Y[X] for cache-like patterns\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f785395c189e709da5fa74a02d3797bfb9db6a4\"\u003e\u003ccode\u003e2f78539\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1299\"\u003e#1299\u003c/a\u003e from dvarrazzo/fix-camel-enum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/37ef1dc4e6d19dc4af062d45a63243cb96a261c2\"\u003e\u003ccode\u003e37ef1dc\u003c/code\u003e\u003c/a\u003e test: skip test on crdb depending on precise regtype behaviour\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/7f2f1d159df881260e3086fd61ea71343ca98e58\"\u003e\u003ccode\u003e7f2f1d1\u003c/code\u003e\u003c/a\u003e fix: fix client-side representation of enums requiring quotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.3...3.3.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.58.0 to 2.64.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.64.0\u003c/h2\u003e\n\u003cp\u003eThe SDK now extracts all \u003ccode\u003egen_ai\u003c/code\u003e spans out of a transaction and sends them as v2 envelope items by default. This prevents \u003ccode\u003egen_ai\u003c/code\u003e spans from being dropped when the transaction payload exceeds size limits. Because they are no longer constrained by transaction size limits, AI message data is also no longer truncated. To keep the previous behavior, set \u003ccode\u003estream_gen_ai_spans=False\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSelf-hosted Sentry users should opt out with \u003ccode\u003estream_gen_ai_spans=False\u003c/code\u003e, since streamed \u003ccode\u003egen_ai\u003c/code\u003e spans may not be ingested by their Sentry instance.\u003c/p\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asyncpg) Use distinct span ops for cursor iteration and fetch to prevent N+1 false positives by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6609\"\u003e#6609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(aiohttp) Gate url.full, url.path, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6650\"\u003e#6650\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(asgi) Add url.path to ASGI request span attributes by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6652\"\u003e#6652\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(boto3) Gate url.full, url.query, url.fragment behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6674\"\u003e#6674\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(httpx) Gate url.full, url.query, and url.fragment behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6668\"\u003e#6668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(httpx2) Gate url.full, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6670\"\u003e#6670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph) Ignore \u003ccode\u003eGraphBubbleUp\u003c/code\u003e exceptions by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6608\"\u003e#6608\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Store span off-band, not in forwarded metadata by \u003ca href=\"https://github.com/jgreer013\"\u003e\u003ccode\u003e@​jgreer013\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6598\"\u003e#6598\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(mcp) Support MCP SDK v2 handler signature and removed request_ctx by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6583\"\u003e#6583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pydantic-ai) Stop truncating in the streaming trace lifecycle by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6659\"\u003e#6659\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pymongo) Add db.query.text to streamed query spans by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6637\"\u003e#6637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pyreqwest) Gate url.full, url.query, url.fragment on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6673\"\u003e#6673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(sanic) Gate url.full, url.path, and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6663\"\u003e#6663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(starlette) Stop duplicating \u003ccode\u003escope[\u0026quot;root_path\u0026quot;]\u003c/code\u003e in URLs by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6579\"\u003e#6579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(stdlib) Gate url.full and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6666\"\u003e#6666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tests) Fix flaky OTel propagator entry point test by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6655\"\u003e#6655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tornado) Gate url.full, url.path, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6664\"\u003e#6664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi) Gate url.full, url.path, and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6654\"\u003e#6654\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop unconditionally importing \u003ccode\u003econtextvars\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6625\"\u003e#6625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(.agents) Update project agent lockfiles by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6662\"\u003e#6662\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd light/dark logos by \u003ca href=\"https://github.com/hwhsu1231\"\u003e\u003ccode\u003e@​hwhsu1231\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6627\"\u003e#6627\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos by \u003ca href=\"https://github.com/juliosuas\"\u003e\u003ccode\u003e@​juliosuas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6602\"\u003e#6602\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(mcp) Pin mcp package to \u0026lt;2.0.0 while alphas are in flight by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6687\"\u003e#6687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (06/29) by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6682\"\u003e#6682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e opt out by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6658\"\u003e#6658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetuptools\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6618\"\u003e#6618\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003eexecuting\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6619\"\u003e#6619\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003easttokens\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6615\"\u003e#6615\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003eresponses\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6621\"\u003e#6621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-forked\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6611\"\u003e#6611\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003edocker\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6616\"\u003e#6616\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--skip-version-update\u003c/code\u003e option to \u003ccode\u003epopulate_tox.py\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6675\"\u003e#6675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003ehttpcore\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6622\"\u003e#6622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-timeout\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6613\"\u003e#6613\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-localserver\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6612\"\u003e#6612\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003ejsonschema\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6620\"\u003e#6620\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esocksio\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6617\"\u003e#6617\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/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.64.0\u003c/h2\u003e\n\u003cp\u003eThe SDK now extracts all \u003ccode\u003egen_ai\u003c/code\u003e spans out of a transaction and sends them as v2 envelope items by default. This prevents \u003ccode\u003egen_ai\u003c/code\u003e spans from being dropped when the transaction payload exceeds size limits. Because they are no longer constrained by transaction size limits, AI message data is also no longer truncated. To keep the previous behavior, set \u003ccode\u003estream_gen_ai_spans=False\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSelf-hosted Sentry users should opt out with \u003ccode\u003estream_gen_ai_spans=False\u003c/code\u003e, since streamed \u003ccode\u003egen_ai\u003c/code\u003e spans may not be ingested by their Sentry instance.\u003c/p\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asyncpg) Use distinct span ops for cursor iteration and fetch to prevent N+1 false positives by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6609\"\u003e#6609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(aiohttp) Gate url.full, url.path, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6650\"\u003e#6650\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(asgi) Add url.path to ASGI request span attributes by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6652\"\u003e#6652\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(boto3) Gate url.full, url.query, url.fragment behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6674\"\u003e#6674\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(httpx) Gate url.full, url.query, and url.fragment behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6668\"\u003e#6668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(httpx2) Gate url.full, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6670\"\u003e#6670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph) Ignore \u003ccode\u003eGraphBubbleUp\u003c/code\u003e exceptions by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6608\"\u003e#6608\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Store span off-band, not in forwarded metadata by \u003ca href=\"https://github.com/jgreer013\"\u003e\u003ccode\u003e@​jgreer013\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6598\"\u003e#6598\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(mcp) Support MCP SDK v2 handler signature and removed request_ctx by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6583\"\u003e#6583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pydantic-ai) Stop truncating in the streaming trace lifecycle by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6659\"\u003e#6659\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pymongo) Add db.query.text to streamed query spans by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6637\"\u003e#6637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pyreqwest) Gate url.full, url.query, url.fragment on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6673\"\u003e#6673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(sanic) Gate url.full, url.path, and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6663\"\u003e#6663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(starlette) Stop duplicating \u003ccode\u003escope[\u0026quot;root_path\u0026quot;]\u003c/code\u003e in URLs by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6579\"\u003e#6579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(stdlib) Gate url.full and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6666\"\u003e#6666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tests) Fix flaky OTel propagator entry point test by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6655\"\u003e#6655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tornado) Gate url.full, url.path, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6664\"\u003e#6664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi) Gate url.full, url.path, and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6654\"\u003e#6654\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop unconditionally importing \u003ccode\u003econtextvars\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6625\"\u003e#6625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(.agents) Update project agent lockfiles by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6662\"\u003e#6662\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd light/dark logos by \u003ca href=\"https://github.com/hwhsu1231\"\u003e\u003ccode\u003e@​hwhsu1231\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6627\"\u003e#6627\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos by \u003ca href=\"https://github.com/juliosuas\"\u003e\u003ccode\u003e@​juliosuas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6602\"\u003e#6602\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(mcp) Pin mcp package to \u0026lt;2.0.0 while alphas are in flight by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6687\"\u003e#6687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (06/29) by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6682\"\u003e#6682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e opt out by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6658\"\u003e#6658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetuptools\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6618\"\u003e#6618\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003eexecuting\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6619\"\u003e#6619\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003easttokens\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6615\"\u003e#6615\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003eresponses\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6621\"\u003e#6621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-forked\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6611\"\u003e#6611\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003edocker\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6616\"\u003e#6616\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--skip-version-update\u003c/code\u003e option to \u003ccode\u003epopulate_tox.py\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6675\"\u003e#6675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003ehttpcore\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6622\"\u003e#6622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-timeout\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6613\"\u003e#6613\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-localserver\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6612\"\u003e#6612\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003ejsonschema\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6620\"\u003e#6620\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/getsentry/sentry-python/commit/9cb0167cee81bb19686f36adb8e9888248f214af\"\u003e\u003ccode\u003e9cb0167\u003c/code\u003e\u003c/a\u003e Call out changed stream_gen_ai_spans default value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/bdbe208f41e8c2dd4615dc64dcd1485497d65d6d\"\u003e\u003ccode\u003ebdbe208\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/8966e45ade8bd3036027e7ad8aca2c3402d3e0fa\"\u003e\u003ccode\u003e8966e45\u003c/code\u003e\u003c/a\u003e release: 2.64.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/707464306ca78d4928e4668ba4d383948f7eb7fb\"\u003e\u003ccode\u003e7074643\u003c/code\u003e\u003c/a\u003e ci: 🤖 Update test matrix with new releases (06/29) (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6682\"\u003e#6682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b0f319f4fb0a33d521a80e27304104b8a992c45e\"\u003e\u003ccode\u003eb0f319f\u003c/code\u003e\u003c/a\u003e (test): exclude django 6.1 alphas and betas from tox (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6690\"\u003e#6690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/a661615a40fa26450e4b4f50cec760733cc858d8\"\u003e\u003ccode\u003ea661615\u003c/code\u003e\u003c/a\u003e (test): need to include the alpha tag for mcp package inclusion (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6688\"\u003e#6688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/9c836062fc6f7244aae5046ce66814f0469c9891\"\u003e\u003ccode\u003e9c83606\u003c/code\u003e\u003c/a\u003e ci(mcp): Pin mcp package to \u0026lt;2.0.0 while alphas are in flight (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6687\"\u003e#6687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/1dd161de3fef199b46342e8c0947a503316e5e99\"\u003e\u003ccode\u003e1dd161d\u003c/code\u003e\u003c/a\u003e feat: Set \u003ccode\u003esentry.trace_lifecycle\u003c/code\u003e attr in span streaming (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6684\"\u003e#6684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/5dabd02e83cfb8a4bb8160c766df70864407f569\"\u003e\u003ccode\u003e5dabd02\u003c/code\u003e\u003c/a\u003e fix(pydantic-ai): Stop truncating in the streaming trace lifecycle (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6659\"\u003e#6659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7991f716a4bdef5c0b01ba5a3c6a3765640e312b\"\u003e\u003ccode\u003e7991f71\u003c/code\u003e\u003c/a\u003e ref: Make \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e opt out (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6658\"\u003e#6658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.58.0...2.64.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.3 — 2026-06-22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the default \u003ccode\u003e...\u003c/code\u003e exclusion rule now also matches function bodies\nwhose closing return-type bracket is on its own line (for example, after a\nlong \u003ccode\u003e-\u0026gt; dict[ ... ]\u003c/code\u003e annotation that a formatter has split over multiple\nlines). Closes \u003ccode\u003eissue 2185\u003c/code\u003e\u003cem\u003e, thanks \u003ccode\u003eMengjia Shang \u0026lt;pull 2196_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: On 3.13t, we incorrectly issued \u003ccode\u003eCouldn't import C tracer\u003c/code\u003e errors.\nWe can't import the C tracer because in 7.14.2 we stopped shipping compiled\nwheels for 3.13t. Thanks, \u003ccode\u003eHugo van Kemenade \u0026lt;pull 2203_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2185: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2185\"\u003ecoveragepy/coveragepy#2185\u003c/a\u003e\n.. _pull 2196: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2196\"\u003ecoveragepy/coveragepy#2196\u003c/a\u003e\n.. _pull 2203: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2203\"\u003ecoveragepy/coveragepy#2203\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-14-2:\u003c/p\u003e\n\u003ch2\u003eVersion 7.14.2 — 2026-06-20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: some messages were being written to stdout, making \u003ccode\u003ecoverage json -o -\u003c/code\u003e useless for capturing JSON output. Now messages are written to stderr,\nfixing \u003ccode\u003eissue 2197\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCoverageData\u003c/code\u003e kept one SQLite connection per thread that recorded\ncoverage, but never closed them when those threads terminated. On long runs\nwith many short-lived threads this leaked one file descriptor per dead\nthread, eventually failing with \u003ccode\u003eOSError: [Errno 24] Too many open files\u003c/code\u003e.\nConnections belonging to terminated threads are now closed and dropped.\nFixes \u003ccode\u003eissue 2192\u003c/code\u003e\u003cem\u003e.  Thanks, \u003ccode\u003eMatthew Lloyd \u0026lt;pull 2193_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when using sys.monitoring, we were assuming we could use the\n\u003ccode\u003eCOVERAGE_ID\u003c/code\u003e tool id.  But other tools might also assume they could use\nthat id.  Pre-allocated ids don't really make sense, so now we search for a\nusable one instead. Fixes \u003ccode\u003eissue 2187\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFollowing \u003ccode\u003ethe advice of cibuildwheel \u0026lt;no-13t_\u0026gt;\u003c/code\u003e_, we no longer distribute\nwheels for Python 3.13 free-threaded.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2187: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2187\"\u003ecoveragepy/coveragepy#2187\u003c/a\u003e\n.. _issue 2192: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2192\"\u003ecoveragepy/coveragepy#2192\u003c/a\u003e\n.. _pull 2193: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2193\"\u003ecoveragepy/coveragepy#2193\u003c/a\u003e\n.. _issue 2197: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2197\"\u003ecoveragepy/coveragepy#2197\u003c/a\u003e\n.. _no-13t: \u003ca href=\"https://py-free-threading.github.io/ci/#building-free-threaded-wheels-with-cibuildwheel\"\u003ehttps://py-free-threading.github.io/ci/#building-free-threaded-wheels-with-cibuildwheel\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-14-1:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/22f13eacc2258aee53198b6176db1ca89c32a12e\"\u003e\u003ccode\u003e22f13ea\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2ca4e5fe61a551fc55e48428c8140cb7d325566a\"\u003e\u003ccode\u003e2ca4e5f\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/01d714e5cb457177e999e78fde0c438283f7e4db\"\u003e\u003ccode\u003e01d714e\u003c/code\u003e\u003c/a\u003e docs: add changelog entry for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2203\"\u003e#2203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f36248d7ba313734d4fcf3d6eab713b5eba2c259\"\u003e\u003ccode\u003ef36248d\u003c/code\u003e\u003c/a\u003e fix: don't emit 'Couldn't import C tracer' warning for 3.13t (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2203\"\u003e#2203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/86d73d1c4c60bdb2ea03f982cd4e33c77879ba77\"\u003e\u003ccode\u003e86d73d1\u003c/code\u003e\u003c/a\u003e docs: thanks, Mengjia Shang\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3d4ae3cb7c77f7521d91200a1e5de13425bbdff4\"\u003e\u003ccode\u003e3d4ae3c\u003c/code\u003e\u003c/a\u003e docs: add the \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2196\"\u003e#2196\u003c/a\u003e pr link to CHANGES\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f4b2b4d35e1b7cd8f33f1ee88d354b0debeeed08\"\u003e\u003ccode\u003ef4b2b4d\u003c/code\u003e\u003c/a\u003e fix: exclude \u003ccode\u003e...\u003c/code\u003e bodies after multi-line return-type annotations (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2185\"\u003e#2185\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1980ed0730956f0cc179e8568e1c8ee848f2d42b\"\u003e\u003ccode\u003e1980ed0\u003c/code\u003e\u003c/a\u003e chore: bump sigstore/gh-action-sigstore-python (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2201\"\u003e#2201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bca3217a1dadf35fa1d444722ec9f05dd5819089\"\u003e\u003ccode\u003ebca3217\u003c/code\u003e\u003c/a\u003e build: since we don't ship 3.13t, don't test it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/77550d83b2f35818a1ca8931289b81d161222031\"\u003e\u003ccode\u003e77550d8\u003c/code\u003e\u003c/a\u003e docs: oops, mismatched pull requests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.2 to 6.0.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.0.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003etask\u003c/code\u003e decorator typing for \u003ccode\u003etakes_context=True\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3406\"\u003etypeddjango/django-stubs#3406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove database backend typing by \u003ca href=\"https://github.com/dekkers\"\u003e\u003ccode\u003e@​dekkers\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3190\"\u003etypeddjango/django-stubs#3190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix only pk validation for abstract models by \u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3430\"\u003etypeddjango/django-stubs#3430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003evalidators\u003c/code\u003e consistent by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3433\"\u003etypeddjango/django-stubs#3433\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow aggregate filters to use expressions by \u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3434\"\u003etypeddjango/django-stubs#3434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypecheck save()/asave() update_fields against model fields by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3444\"\u003etypeddjango/django-stubs#3444\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/dekkers\"\u003e\u003ccode\u003e@​dekkers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3190\"\u003etypeddjango/django-stubs#3190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3430\"\u003etypeddjango/django-stubs#3430\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.5...6.0.6\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.5...6.0.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.0.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAccept datetime/timedelta on reverse ops of Combinable by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3361\"\u003etypeddjango/django-stubs#3361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency pyrefly to v0.64.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3377\"\u003etypeddjango/django-stubs#3377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type when \u003ccode\u003e.annotate()\u003c/code\u003e is called on a generic QuerySet by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3379\"\u003etypeddjango/django-stubs#3379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type checking of \u003ccode\u003e__in\u003c/code\u003e lookup by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3314\"\u003etypeddjango/django-stubs#3314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GenericPrefetch invariance with QuerySet by \u003ca href=\"https://github.com/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type in merge_annotations_from_custom_method by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3383\"\u003etypeddjango/django-stubs#3383\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mypy 2.1.0 support by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3384\"\u003etypeddjango/django-stubs#3384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003epyrefly\u003c/code\u003e to 1.0.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3386\"\u003etypeddjango/django-stubs#3386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003erelated_model\u003c/code\u003e type for mypy 2.1 by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3388\"\u003etypeddjango/django-stubs#3388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-enable \u003ccode\u003eempty-body\u003c/code\u003e error code for mypy and ty by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3390\"\u003etypeddjango/django-stubs#3390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003emark_safe\u003c/code\u003e to accept \u003ccode\u003eStrOrPromise\u003c/code\u003e by \u003ca href=\"https://github.com/Alexerson\"\u003e\u003ccode\u003e@​Alexerson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3392\"\u003etypeddjango/django-stubs#3392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable \u003ccode\u003eunused-ignore\u003c/code\u003e code in pyrefly by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3393\"\u003etypeddjango/django-stubs#3393\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix InlineModelAdmin parent-object method signatures by \u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAdminSite.register\u003c/code\u003e typing by \u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3387\"\u003etypeddjango/django-stubs#3387\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/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\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/typeddjango/django-stubs/commit/c1d968a356955f9598da6536115ccae4ed802b44\"\u003e\u003ccode\u003ec1d968a\u003c/code\u003e\u003c/a\u003e Version 6.0.6 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/c78e1060c24c6f36ec128e6264cab523b7954c52\"\u003e\u003ccode\u003ec78e106\u003c/code\u003e\u003c/a\u003e Typecheck save()/asave() update_fields against model fields (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3444\"\u003e#3444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/9110cd4800a3dbc12d753a669ae847d5bc83ef86\"\u003e\u003ccode\u003e9110cd4\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.62.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/2e6023a32ac6ee53b7f34274e839ca44f18a3f98\"\u003e\u003ccode\u003e2e6023a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3441\"\u003e#3441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/908841607ad48ca8bffb952c60344eb524a58441\"\u003e\u003ccode\u003e9088416\u003c/code\u003e\u003c/a\u003e Update dependency pytest to v9.1.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/Salomarax/SaaS-Python/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Salomarax%2FSaaS-Python/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"},{"uuid":"4581790034","node_id":"PR_kwDOSOMpDM7iUWoe","number":93,"state":"closed","title":"chore(deps): bump the python group with 13 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-04T23:29:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-03T16:35:01.000Z","updated_at":"2026-06-04T23:29:23.000Z","time_to_close":111260,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":13,"packages":[{"name":"certifi","old_version":"2026.4.22","new_version":"2026.5.20","repository_url":"https://github.com/certifi/python-certifi"},{"name":"channels","old_version":"4.2.2","new_version":"4.3.2","repository_url":"https://github.com/django/channels"},{"name":"channels-redis","old_version":"4.2.1","new_version":"4.3.0","repository_url":"https://github.com/django/channels_redis"},{"name":"django","old_version":"6.0.4","new_version":"6.0.6","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.16.1","new_version":"65.18.0"},{"name":"hiredis","old_version":"3.3.1","new_version":"3.4.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"uvicorn","old_version":"0.46.0","new_version":"0.48.0"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.0.3","new_version":"6.0.5"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"mypy-boto3-s3","old_version":"1.43.5","new_version":"1.43.14","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"ruff","old_version":"0.15.12","new_version":"0.15.15","repository_url":"https://github.com/astral-sh/ruff"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 13 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.5.20` |\n| [channels](https://github.com/django/channels) | `4.2.2` | `4.3.2` |\n| [channels-redis](https://github.com/django/channels_redis) | `4.2.1` | `4.3.0` |\n| [django](https://github.com/django/django) | `6.0.4` | `6.0.6` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.16.1` | `65.18.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.1` | `3.4.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.46.0` | `0.48.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.3` | `6.0.5` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.43.5` | `1.43.14` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.12` | `0.15.15` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.2.0` |\n\nUpdates `certifi` from 2026.4.22 to 2026.5.20\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7ea151afc2ce6bef0555b9349902bd867e928dd\"\u003e\u003ccode\u003ed7ea151\u003c/code\u003e\u003c/a\u003e 2026.05.20 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.04.22...2026.05.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `channels` from 4.2.2 to 4.3.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/channels/blob/main/CHANGELOG.txt\"\u003echannels's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.3.2 (2025-11-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eConfirmed support for Django 6.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConfirmed support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003etypes\u003c/code\u003e extra for \u003ccode\u003etypes-channels\u003c/code\u003e stubs. See installation docs.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.3.1 (2025-08-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed testing live server setup when test DB name was not set.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.3.0 (2025-07-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated asgiref dependency to v3.9+.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for EOL Python and Django versions. Python 3.9 is now the\nminimum supported version.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed compatibility of \u003ccode\u003eChannelsLiveServerTestCase\u003c/code\u003e with Django 5.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed DB setup for spawned testing subprocess, typically on Windows and macOS.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee the \u003ccode\u003eVersion 4.3.0 release notes \u0026lt;https://channels.readthedocs.io/en/latest/releases/4.3.0.html\u0026gt;\u003c/code\u003e_ for more\ndetails.\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/django/channels/commit/15333cd7a59ba4fcafbbcb3089e41e1353624b2f\"\u003e\u003ccode\u003e15333cd\u003c/code\u003e\u003c/a\u003e Version 4.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/10be531f8629637033378820aa0159865d44e314\"\u003e\u003ccode\u003e10be531\u003c/code\u003e\u003c/a\u003e Add explicit dj60 to test matrix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/f726845eb856e69a7e094df6bb9d0f14e7f003ca\"\u003e\u003ccode\u003ef726845\u003c/code\u003e\u003c/a\u003e Update .github/workflows/tests.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/0c1e533aae3ae7ad5c627f96f41216dec14fb01a\"\u003e\u003ccode\u003e0c1e533\u003c/code\u003e\u003c/a\u003e tox.ini: envlist py{310,311,312,313,314}-dj52\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/b2ad89f59f8213f464c116aafe78ee11ab70df76\"\u003e\u003ccode\u003eb2ad89f\u003c/code\u003e\u003c/a\u003e GitHub Actions: Test on Python 3.14 release candidate 2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/a1352286ab4aa54ba5de7acdfdce44dcc73fecf5\"\u003e\u003ccode\u003ea135228\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/django/channels/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/7dfcc7b295569af491892b9feb2e9b85469824c3\"\u003e\u003ccode\u003e7dfcc7b\u003c/code\u003e\u003c/a\u003e Add types extra and installation docs for type checking support.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/95589a7dc70f4ff295757c8e68f55015a250cd63\"\u003e\u003ccode\u003e95589a7\u003c/code\u003e\u003c/a\u003e Version 4.3.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/5038d69e8d96b1b21d096c92c398ccbe30f122a5\"\u003e\u003ccode\u003e5038d69\u003c/code\u003e\u003c/a\u003e Fix live server setup when test DB name not set.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/f17a8fe021e45415f6eca9bc286649247bf45750\"\u003e\u003ccode\u003ef17a8fe\u003c/code\u003e\u003c/a\u003e Bump browser-actions/setup-chrome from 1 to 2 (\u003ca href=\"https://redirect.github.com/django/channels/issues/2175\"\u003e#2175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/channels/compare/4.2.2...4.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `channels-redis` from 4.2.1 to 4.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/channels_redis/blob/main/CHANGELOG.txt\"\u003echannels-redis's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.3.0 (2025-07-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for EOL Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated Channels dependency to at least v4.2.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated asgiref dependency to at least v3.9.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed compatibility with latest versions of pytest-asyncio.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed internal methods in core channel layer for compatibility with\nChannels v4.2.1+\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped testing against legacy Channels v3 branch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated testing against latest redis-py versions.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/84986055bbaaafd46a826ab750b28e9773c6da4d\"\u003e\u003ccode\u003e8498605\u003c/code\u003e\u003c/a\u003e Updated version and changelog for v4.3.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/3e03c4566472358f60ca2bdd121651594ca844b7\"\u003e\u003ccode\u003e3e03c45\u003c/code\u003e\u003c/a\u003e Update Channels and asgiref dependencies to latest versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/3f42840931527d921b39e258ac883fb9b6e353b1\"\u003e\u003ccode\u003e3f42840\u003c/code\u003e\u003c/a\u003e Update redis-py testing matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/4f35ef54cf2665c56c2e33cd233badf18a558f0a\"\u003e\u003ccode\u003e4f35ef5\u003c/code\u003e\u003c/a\u003e Adjust Channels testing matrix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/26f3f8f912454c6b3946dea4723c7ead9fae506a\"\u003e\u003ccode\u003e26f3f8f\u003c/code\u003e\u003c/a\u003e Renamed internal methods in core channel layer.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/b359bf7dd434bbb68d77d4de3e1e2454f751cb93\"\u003e\u003ccode\u003eb359bf7\u003c/code\u003e\u003c/a\u003e Stop using old event_loop fixture.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/f439527a1d5845fc0185b69410c839a6a20da7c5\"\u003e\u003ccode\u003ef439527\u003c/code\u003e\u003c/a\u003e Dropped Python 3.8 from test matrix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/662b90dce03e7592a03b86a8c7bd36f281d2c7a3\"\u003e\u003ccode\u003e662b90d\u003c/code\u003e\u003c/a\u003e Added support for Python 3.13 (\u003ca href=\"https://redirect.github.com/django/channels_redis/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django/channels_redis/compare/4.2.1...4.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django` from 6.0.4 to 6.0.6\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ee93f65169c280c9ab3d2ce103dd478c96d05065\"\u003e\u003ccode\u003eee93f65\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.6 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1721035a72624aad7b38dd19b14013efd94b24b8\"\u003e\u003ccode\u003e1721035\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-48587 -- Ignored whitespace padding when checking Vary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/664652f1a2dd80d8a4cd491b4313cad915ae6669\"\u003e\u003ccode\u003e664652f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-35193 -- Varied on Authorization when caching non-publ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/b4330259ffbe1a031ed14daab1f35697460f10f2\"\u003e\u003ccode\u003eb433025\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-8404 -- Used Cache-Control directives case-insensitive...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/625a670c467aa3118c0f8ae1e0df14dbebb3bf68\"\u003e\u003ccode\u003e625a670\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-7666 -- Delayed setting SMTP connection until fully co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c807d9c398022d23cb27518fa6ecaf343efb30cf\"\u003e\u003ccode\u003ec807d9c\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-6873 -- Prevented signed cookie salt namespace collisi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/98a75e39cfc63fa72162027b5678943b78a4469b\"\u003e\u003ccode\u003e98a75e3\u003c/code\u003e\u003c/a\u003e [6.0.x] Included commit hash in checksum file when building artifacts for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dd895d6268f1dd544a565a321cb4527ca3ca1173\"\u003e\u003ccode\u003edd895d6\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/49ca2db7f4d4ca4a7735a40610d59c84a039eb32\"\u003e\u003ccode\u003e49ca2db\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated links to severity levels in release notes.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9f32a2301a9aa897f967fd8077496455ebf5d77\"\u003e\u003ccode\u003ec9f32a2\u003c/code\u003e\u003c/a\u003e [6.0.x] Added stub release notes and release date for 6.0.6 and 5.2.15.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.4...6.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.16.1 to 65.18.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.1 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse hiredis v1.4.0 with improved floating-point number parsing\u003c/li\u003e\n\u003cli\u003eDrop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintainance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependencies and fix CI (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/233\"\u003e#233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix benchmarking for hiredis-py (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/232\"\u003e#232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRun integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump GitHub action versions (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.15.0a7 to CI matrix (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse Python 3.11 in FreeBSD CI run (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump version to 3.4.0-dev (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/MugundanMCW\"\u003e\u003ccode\u003e@​MugundanMCW\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/uglide\"\u003e\u003ccode\u003e@​uglide\u003c/code\u003e\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/redis/hiredis-py/commit/54c1938dfe83e0ea8cb619728b11985a6c07d07b\"\u003e\u003ccode\u003e54c1938\u003c/code\u003e\u003c/a\u003e Version 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/d538033d7158a4b54c0c4a197871396ced996075\"\u003e\u003ccode\u003ed538033\u003c/code\u003e\u003c/a\u003e Beta-2 is not available yet, use beta-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/41cbe8da7341787d1a714036f9dc407dfeef0ea8\"\u003e\u003ccode\u003e41cbe8d\u003c/code\u003e\u003c/a\u003e Use 3.15.0-beta.2 in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/427a12180266d702fd34d4f6557ea658380f4d18\"\u003e\u003ccode\u003e427a121\u003c/code\u003e\u003c/a\u003e Add apt-get update to fix CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6982e3ea44d1093f211bc40c4e0181aa1978bc66\"\u003e\u003ccode\u003e6982e3e\u003c/code\u003e\u003c/a\u003e Bump hiredis to v1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/5eadef115e6ce89d3917231127865dda779e36b3\"\u003e\u003ccode\u003e5eadef1\u003c/code\u003e\u003c/a\u003e Update workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/059ccbc3902f761c8f9f65c03e104c3441add4ec\"\u003e\u003ccode\u003e059ccbc\u003c/code\u003e\u003c/a\u003e Run integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6f1147f4e5d69afed3866447d4defc178213a329\"\u003e\u003ccode\u003e6f1147f\u003c/code\u003e\u003c/a\u003e Add support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/b49261b783092d3c32eac3a2980ba61f49da41e0\"\u003e\u003ccode\u003eb49261b\u003c/code\u003e\u003c/a\u003e Bump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/c30abed1481e06e3beeca3e39dfaec64d7d64523\"\u003e\u003ccode\u003ec30abed\u003c/code\u003e\u003c/a\u003e Drop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.1...v3.4.0\"\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.46.0 to 0.48.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.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2940\"\u003eKludex/uvicorn#2940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2944\"\u003eKludex/uvicorn#2944\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.47.0...0.48.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\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.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.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[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.48.0 (May 24, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\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/73e84e58d7f6b8b3dfd8a9e3e42d716862250f33\"\u003e\u003ccode\u003e73e84e5\u003c/code\u003e\u003c/a\u003e Version 0.48.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/45ea11690b4a62fa6df339d2b6ee3b8545a418e0\"\u003e\u003ccode\u003e45ea116\u003c/code\u003e\u003c/a\u003e Ignore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/dd4394c3cbfd9f27a696a7b08047149690058158\"\u003e\u003ccode\u003edd4394c\u003c/code\u003e\u003c/a\u003e chore(deps): bump idna from 3.11 to 3.15 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2941\"\u003e#2941\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/abe07818a191cd036dc3824d802d052207e01c7e\"\u003e\u003ccode\u003eabe0781\u003c/code\u003e\u003c/a\u003e Default \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/479a2c0c89186714f1aac52aecdebebf271395ac\"\u003e\u003ccode\u003e479a2c0\u003c/code\u003e\u003c/a\u003e Version 0.47.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2937\"\u003e#2937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/89347fd166ebedf98fb3f806ce8ea44e93b1c2b5\"\u003e\u003ccode\u003e89347fd\u003c/code\u003e\u003c/a\u003e Add 7-day cooldown for dependency resolution via uv exclude-newer (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2936\"\u003e#2936\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/767315b38ae509cee9fe8ee9d09f6da920536096\"\u003e\u003ccode\u003e767315b\u003c/code\u003e\u003c/a\u003e Drop unused contents/actions permissions from zizmor workflow (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2935\"\u003e#2935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f25ee43e68a9678453cbca99ad96f1a447ff34af\"\u003e\u003ccode\u003ef25ee43\u003c/code\u003e\u003c/a\u003e chore(deps): bump urllib3 from 2.6.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8782666189a3d36c978de5698620db705659bf44\"\u003e\u003ccode\u003e8782666\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003edocs/deployment/index.md\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2932\"\u003e#2932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/ad5ff87c869e8a34e9b04fcd5ca38d65c526893c\"\u003e\u003ccode\u003ead5ff87\u003c/code\u003e\u003c/a\u003e Treat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.48.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.1 — 2026-05-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the HTML report used typographic niceties to make file paths more\nreadable by adding a small amount of space around slashes. Those spaces\ninterfered with searching the page for file paths of interest. Now the report\nuses CSS to accomplish the same visual tweak so that searches with slashes\nwork correctly. Closes \u003ccode\u003eissue 2170\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eAdd a 3.16 PyPI classifier \u0026lt;hugo-316_\u0026gt;\u003c/code\u003e_ since we test on the 3.16 main\nbranch.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2170: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2170\"\u003ecoveragepy/coveragepy#2170\u003c/a\u003e\n.. _hugo-316: \u003ca href=\"https://mastodon.social/@hugovk/116588523571204490\"\u003ehttps://mastodon.social/@​hugovk/116588523571204490\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-14-0:\u003c/p\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/64d9b66fd852c1920ffe6cb8b58d7e4fdae90226\"\u003e\u003ccode\u003e64d9b66\u003c/code\u003e\u003c/a\u003e docs: correct the date for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6fa7dd44c25e1a660252faaf030dd8f2f1e20861\"\u003e\u003ccode\u003e6fa7dd4\u003c/code\u003e\u003c/a\u003e chore: bump actions/dependency-review-action (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/078afae263597b004eb9a85d880b6a65008e75ed\"\u003e\u003ccode\u003e078afae\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cb4f028a36e008b664739d04f387b90ee5105044\"\u003e\u003ccode\u003ecb4f028\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ae2d09f562271c6169534e1c242d015dd0823dda\"\u003e\u003ccode\u003eae2d09f\u003c/code\u003e\u003c/a\u003e Merge branch 'nedbat/classifire-316-kits'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2c3568b2e041f2c0dbbc8eaa3919d46ee891b743\"\u003e\u003ccode\u003e2c3568b\u003c/code\u003e\u003c/a\u003e build: declare 3.16 compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/faa68f8601cf098701b68976dbb73b9fc23c9297\"\u003e\u003ccode\u003efaa68f8\u003c/code\u003e\u003c/a\u003e chore: bump github/codeql-action in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2173\"\u003e#2173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/eb55feedf54b363e3d0b678f20abf3bfd3551a88\"\u003e\u003ccode\u003eeb55fee\u003c/code\u003e\u003c/a\u003e test: we don't need PyPy \u0026lt; 7.3.22 anymore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ac168fe53c04cdb2ff5231c0c4e5045021ee339b\"\u003e\u003ccode\u003eac168fe\u003c/code\u003e\u003c/a\u003e test: the text summary should show missing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/fed4bd2db3c1cb2916a07791041da693fbf8e996\"\u003e\u003ccode\u003efed4bd2\u003c/code\u003e\u003c/a\u003e chore: upgrade virtualenv\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.3 to 6.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.0.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAccept datetime/timedelta on reverse ops of Combinable by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3361\"\u003etypeddjango/django-stubs#3361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency pyrefly to v0.64.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3377\"\u003etypeddjango/django-stubs#3377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type when \u003ccode\u003e.annotate()\u003c/code\u003e is called on a generic QuerySet by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3379\"\u003etypeddjango/django-stubs#3379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type checking of \u003ccode\u003e__in\u003c/code\u003e lookup by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3314\"\u003etypeddjango/django-stubs#3314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GenericPrefetch invariance with QuerySet by \u003ca href=\"https://github.com/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type in merge_annotations_from_custom_method by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3383\"\u003etypeddjango/django-stubs#3383\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mypy 2.1.0 support by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3384\"\u003etypeddjango/django-stubs#3384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003epyrefly\u003c/code\u003e to 1.0.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3386\"\u003etypeddjango/django-stubs#3386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003erelated_model\u003c/code\u003e type for mypy 2.1 by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3388\"\u003etypeddjango/django-stubs#3388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-enable \u003ccode\u003eempty-body\u003c/code\u003e error code for mypy and ty by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3390\"\u003etypeddjango/django-stubs#3390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003emark_safe\u003c/code\u003e to accept \u003ccode\u003eStrOrPromise\u003c/code\u003e by \u003ca href=\"https://github.com/Alexerson\"\u003e\u003ccode\u003e@​Alexerson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3392\"\u003etypeddjango/django-stubs#3392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable \u003ccode\u003eunused-ignore\u003c/code\u003e code in pyrefly by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3393\"\u003etypeddjango/django-stubs#3393\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix InlineModelAdmin parent-object method signatures by \u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAdminSite.register\u003c/code\u003e typing by \u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3387\"\u003etypeddjango/django-stubs#3387\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/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept single \u003ccode\u003estr/Combinable\u003c/code\u003e for \u003ccode\u003eAggregate.order_by\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3357\"\u003etypeddjango/django-stubs#3357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose Aggregate kwargs on subclass \u003ccode\u003e__init__\u003c/code\u003e stubs by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3359\"\u003etypeddjango/django-stubs#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e**flags\u003c/code\u003e with explicit kwargs on \u003ccode\u003eLibrary.filter\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3360\"\u003etypeddjango/django-stubs#3360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve \u003ccode\u003edefault_alias\u003c/code\u003e for positional Aggregate in \u003ccode\u003eannotate()\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3362\"\u003etypeddjango/django-stubs#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django to 6.0.5 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3369\"\u003etypeddjango/django-stubs#3369\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/bitmooze\"\u003e\u003ccode\u003e@​bitmooze\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3331\"\u003etypeddjango/django-stubs#3331\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/8f534d0a4d2884d2e0b45749714deae60aa92b2e\"\u003e\u003ccode\u003e8f534d0\u003c/code\u003e\u003c/a\u003e Version 6.0.5 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3402\"\u003e#3402\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/16679ef11d151dc6dafc15b4c83c0b85685888d7\"\u003e\u003ccode\u003e16679ef\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eAdminSite.register\u003c/code\u003e typing (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3387\"\u003e#3387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/030484fb9682f1e8a0b70dcc2b6914f706a9c393\"\u003e\u003ccode\u003e030484f\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.38 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3400\"\u003e#3400\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/906abd50d6bff56e9cdda3ddbe42a4e42d926a41\"\u003e\u003ccode\u003e906abd5\u003c/code\u003e\u003c/a\u003e Fix InlineModelAdmin parent-object method signatures (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3308\"\u003e#3308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ad05f893e9825081a68fd50a3940e623f95ca6aa\"\u003e\u003ccode\u003ead05f89\u003c/code\u003e\u003c/a\u003e Update ty to v0.0.37 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3399\"\u003e#3399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/c67f6b45b081b2f048129ac4a4ce68094e4d6035\"\u003e\u003ccode\u003ec67f6b4\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.59.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3397\"\u003e#3397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5322457da83de3aca22bacd4052303fc950f4b39\"\u003e\u003ccode\u003e5322457\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3396\"\u003e#3396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e097380fd28b7451a04bc477ee86835cdc28fbfd\"\u003e\u003ccode\u003ee097380\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.36 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3395\"\u003e#3395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/97b6e0ea13ad558b9a5f4c5b037bf86886600651\"\u003e\u003ccode\u003e97b6e0e\u003c/code\u003e\u003c/a\u003e Update dependency pytest-mypy-plugins to v4.0.3 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3394\"\u003e#3394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5680543268bdb2294a1c61831d853e21540ffc51\"\u003e\u003ccode\u003e5680543\u003c/code\u003e\u003c/a\u003e Enable \u003ccode\u003eunused-ignore\u003c/code\u003e code in pyrefly (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3393\"\u003e#3393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.16.9 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003ch2\u003eVersioning\u003c/h2\u003e\n\u003cp\u003eThis is the first version targeting \u003ccode\u003edjangorestframework\u003c/code\u003e v3.17 and \u003ccode\u003edjango-stubs\u003c/code\u003e v6.0. However, not all stubs have been updated yet for 3.17:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSee \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\u003c/a\u003e for remaining work\u003c/li\u003e\n\u003cli\u003ePlease open pull requests, but keep changes small.\u003c/li\u003e\n\u003cli\u003eFirst check that nobody is already working on that topic: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/pulls\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/pulls\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e \u003ccode\u003ecode\u003c/code\u003e support and fix defaults in validators by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/947\"\u003etypeddjango/djangorestframework-stubs#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorator stubs for DRF 3.17 by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/949\"\u003etypeddjango/djangorestframework-stubs#949\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eSerializer\u003c/code\u003e context type \u003ccode\u003edict\u003c/code\u003e -\u0026gt; \u003ccode\u003eMapping\u003c/code\u003e by \u003ca href=\"https://github.com/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.renderers\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/960\"\u003etypeddjango/djangorestframework-stubs#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/964\"\u003etypeddjango/djangorestframework-stubs#964\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency djangorestframework to v3.17.1 \u0026amp; add new allowlist by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/941\"\u003etypeddjango/djangorestframework-stubs#941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance - Django 5.2.13 \u0026amp; 6.0.4 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/962\"\u003etypeddjango/djangorestframework-stubs#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/984\"\u003etypeddjango/djangorestframework-stubs#984\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/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.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/typeddjango/djangorestframework-stubs/commit/dcaf5607a9c22db2e19274ff49bd149489603e53\"\u003e\u003ccode\u003edcaf560\u003c/code\u003e\u003c/a\u003e Version 3.17.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/9ac7355a57ab3ac7e7c00830bb0d8ad4df699e01\"\u003e\u003ccode\u003e9ac7355\u003c/code\u003e\u003c/a\u003e Clean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/4f367f1fcbeb0c5f041a88ea12988fe5a4872e49\"\u003e\u003ccode\u003e4f367f1\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/7923d06e186d363e88e3590fe88a98bdd924920a\"\u003e\u003ccode\u003e7923d06\u003c/code\u003e\u003c/a\u003e Unpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b2d9250b66d2aa7727793dd05e7cd37208ebcde6\"\u003e\u003ccode\u003eb2d9250\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/77b63b4ea29056d63b30b60b2d82e564f6194d6b\"\u003e\u003ccode\u003e77b63b4\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/96a5e21a45f39a3e65dbff74a4ce3482d0cdd9d1\"\u003e\u003ccode\u003e96a5e21\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b6c3e0298ff742dfb60ec2a87319028cd955686f\"\u003e\u003ccode\u003eb6c3e02\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260510 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/cc0af26d455fd5b3b735806409d17e6aef01a0b2\"\u003e\u003ccode\u003ecc0af26\u003c/code\u003e\u003c/a\u003e Update dependency types-requests to v2.33.0.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/978\"\u003e#978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/001b9c2865e9c0aae2b1cb181baa5f02be2b6be1\"\u003e\u003ccode\u003e001b9c2\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy-boto3-s3` from 1.43.5 to 1.43.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003emypy-boto3-s3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.12 to 0.15.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.15\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-28.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Markdown closing fence handling (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25310\"\u003e#25310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Report duplicate imports in \u003ccode\u003etyping.TYPE_CHECKING\u003c/code\u003e block (\u003ccode\u003eF811\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22560\"\u003e#22560\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Treat function-scope bare annotations as locals per PEP 526 (\u003ccode\u003eF821\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21540\"\u003e#21540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid redundant \u003ccode\u003eTokenValue\u003c/code\u003e drops in the lexer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25300\"\u003e#25300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage by dropping token-excess capacity and improve performance by approximating the initial tokens \u003ccode\u003eVec\u003c/code\u003e size (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25354\"\u003e#25354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eThinVec\u003c/code\u003e in AST to shrink \u003ccode\u003eStmt\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25361\"\u003e#25361\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eline-length\u003c/code\u003e example for \u003ccode\u003e--config\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25389\"\u003e#25389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Document \u003ccode\u003eRecursionError\u003c/code\u003e edge case in \u003ccode\u003e__len__\u003c/code\u003e (\u003ccode\u003eC416\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25286\"\u003e#25286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003emccabe\u003c/code\u003e] Improve example (\u003ccode\u003eC901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25287\"\u003e#25287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify fix safety docs (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25288\"\u003e#25288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Document \u003ccode\u003eFURB192\u003c/code\u003e exception change for empty sequences (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25317\"\u003e#25317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Document false negative for user-defined types (\u003ccode\u003eRUF013\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25289\"\u003e#25289\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix formatting of lambdas nested within f-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25398\"\u003e#25398\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReturn code action for \u003ccode\u003ecodeAction/resolve\u003c/code\u003e requests that contain no or no valid URL (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25365\"\u003e#25365\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExpand semantic syntax errors for invalid walruses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25415\"\u003e#25415\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/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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/adityasingh2400\"\u003e\u003ccode\u003e@​adityasingh2400\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fallintoplace\"\u003e\u003ccode\u003e@​fallintoplace\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/martin-schlossarek\"\u003e\u003ccode\u003e@​martin-schlossarek\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.15\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-28.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Markdown closing fence handling (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25310\"\u003e#25310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Report duplicate imports in \u003ccode\u003etyping.TYPE_CHECKING\u003c/code\u003e block (\u003ccode\u003eF811\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22560\"\u003e#22560\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Treat function-scope bare annotations as locals per PEP 526 (\u003ccode\u003eF821\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21540\"\u003e#21540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid redundant \u003ccode\u003eTokenValue\u003c/code\u003e drops in the lexer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25300\"\u003e#25300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage by dropping token-excess capacity and improve performance by approximating the initial tokens \u003ccode\u003eVec\u003c/code\u003e size (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25354\"\u003e#25354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eThinVec\u003c/code\u003e in AST to shrink \u003ccode\u003eStmt\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25361\"\u003e#25361\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eline-length\u003c/code\u003e example for \u003ccode\u003e--config\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25389\"\u003e#25389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Document \u003ccode\u003eRecursionError\u003c/code\u003e edge case in \u003ccode\u003e__len__\u003c/code\u003e (\u003ccode\u003eC416\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25286\"\u003e#25286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003emccabe\u003c/code\u003e] Improve example (\u003ccode\u003eC901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25287\"\u003e#25287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify fix safety docs (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25288\"\u003e#25288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Document \u003ccode\u003eFURB192\u003c/code\u003e exception change for empty sequences (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25317\"\u003e#25317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Document false negative for user-defined types (\u003ccode\u003eRUF013\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25289\"\u003e#25289\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix formatting of lambdas nested within f-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25398\"\u003e#25398\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReturn code action for \u003ccode\u003ecodeAction/resolve\u003c/code\u003e requests that contain no or no valid URL (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25365\"\u003e#25365\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExpand semantic syntax errors for invalid walruses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25415\"\u003e#25415\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/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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/adityasingh2400\"\u003e\u003ccode\u003e@​adityasingh2400\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fallintoplace\"\u003e\u003ccode\u003e@​fallintoplace\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/martin-schlossarek\"\u003e\u003ccode\u003e@​martin-schlossarek\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/Ruchir28\"\u003e\u003ccode\u003e@​Ruchir28\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/db5aa0a5f1b92cb91d910bf0866a967554dd94f5\"\u003e\u003ccode\u003edb5aa0a\u003c/code\u003e\u003c/a\u003e Bump 0.15.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25431\"\u003e#25431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/366fe21ba369ccdd01eb99c1043c9a969c99230b\"\u003e\u003ccode\u003e366fe21\u003c/code\u003e\u003c/a\u003e [ty] Improve diagnostics for syntax errors in forward annotations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25158\"\u003e#25158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e2e1e647d182b8567845039c9a65fb0608a4dcfc\"\u003e\u003ccode\u003ee2e1e64\u003c/code\u003e\u003c/a\u003e [ty] Remove excess capacity from more Salsa cached collections (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25411\"\u003e#25411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1bd77e1646f2213d86b8da215f08279187867d72\"\u003e\u003ccode\u003e1bd77e1\u003c/code\u003e\u003c/a\u003e [ty] Use diagnostic message as tie breaker when sorting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25424\"\u003e#25424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7e1bc1e75f15795f12c846294b13df4535f2abbf\"\u003e\u003ccode\u003e7e1bc1e\u003c/code\u003e\u003c/a\u003e Add agent skills for working on ty (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25422\"\u003e#25422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/574e10752f8cfa9e0cdbe3b01e96c4380950469b\"\u003e\u003ccode\u003e574e107\u003c/code\u003e\u003c/a\u003e Expand semantic syntax errors for invalid walruses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25415\"\u003e#25415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4a7ca062fccd80443a43aa61e5dc7e5858e88dc1\"\u003e\u003ccode\u003e4a7ca06\u003c/code\u003e\u003c/a\u003e [ty] Display docs for matching parameter when hovering over the name of an ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/54327092dbfe455040690d63bb1e5e4b5f551239\"\u003e\u003ccode\u003e5432709\u003c/code\u003e\u003c/a\u003e Refine a few agents instructions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25423\"\u003e#25423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3cb09eba689ebb49e799131092121928cc789c18\"\u003e\u003ccode\u003e3cb09eb\u003c/code\u003e\u003c/a\u003e [ty] Support \u003ccode\u003etyping.TypeForm\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25334\"\u003e#25334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c8cd59f189f2b6f55d542b29bddb953622add6fc\"\u003e\u003ccode\u003ec8cd59f\u003c/code\u003e\u003c/a\u003e [ty] Infer class attributes assigned by metaclass initialization (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25342\"\u003e#25342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.12...0.15.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `watchfiles` from 1.1.1 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/samuelcolvin/watchfiles/releases\"\u003ewatchfiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 2026-05-17\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: add riscv64 manylinux wheels by \u003ca href=\"https://github.com/justeph\"\u003e\u003ccode\u003e@​justeph\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/359\"\u003esamuelcolvin/watchfiles#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix linting by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/370\"\u003esamuelcolvin/watchfiles#370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.15-dev build, drop 3.9, increase MVRV to 1.83 by \u003ca href=\"https://github.com/simonw\"\u003e\u003ccode\u003e@​simonw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/369\"\u003esamuelcolvin/watchfiles#369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: improve type safety and error handling by \u003ca href=\"https://github.com/N3XT3R1337\"\u003e\u003ccode\u003e@​N3XT3R1337\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/365\"\u003esamuelcolvin/watchfiles#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRuff target version to 3.10 by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/379\"\u003esamuelcolvin/watchfiles#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupgrade uv lock by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/378\"\u003esamuelcolvin/watchfiles#378\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprep v1.2.0 release by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/371\"\u003esamuelcolvin/watchfiles#371\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/justeph\"\u003e\u003ccode\u003e@​justeph\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/359\"\u003esamuelcolvin/watchfiles#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simonw\"\u003e\u003ccode\u003e@​simonw\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/369\"\u003esamuelcolvin/watchfiles#369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/N3XT3R1337\"\u003e\u003ccode\u003e@​N3XT3R1337\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/365\"\u003esamuelcolvin/watchfiles#365\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.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/samuelcolvin/watchfiles/commit/b6eb04ffaa99c3e656e448c75d137013ffa2ece3\"\u003e\u003ccode\u003eb6eb04f\u003c/code\u003e\u003c/a\u003e prep v1.2.0 release (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/517ffb2ad432d126326fa710af2040a8343588f2\"\u003e\u003ccode\u003e517ffb2\u003c/code\u003e\u003c/a\u003e upgrade uv lock (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/e156213f44bec3fcd3f970b0f6a1419494e21c1f\"\u003e\u003ccode\u003ee156213\u003c/code\u003e\u003c/a\u003e Ruff target version to 3.10 (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/379\"\u003e#379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/f4f63ebcb4ef7602038d8cb90fdc03ac4514f380\"\u003e\u003ccode\u003ef4f63eb\u003c/code\u003e\u003c/a\u003e fix: improve type safety and error handling (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/a928957581ec6f73fbd560efacd519f1dc9ab2de\"\u003e\u003ccode\u003ea928957\u003c/code\u003e\u003c/a\u003e Add Python 3.15-dev build, drop 3.9, increase MVRV to 1.83 (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/f8b91fcabd929b655a9ed440115ea5a1997de736\"\u003e\u003ccode\u003ef8b91fc\u003c/code\u003e\u003c/a\u003e fix linting (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/ac594d105be711b98d1835fe5a26f65917b5d784\"\u003e\u003ccode\u003eac594d1\u003c/code\u003e\u003c/a\u003e ci: add riscv64 manylinux wheels (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \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/Kelem-co/backend/pull/93","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kelem-co%2Fbackend/issues/93","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/93/packages"},{"uuid":"4492465114","node_id":"PR_kwDOSIL2sc7d07lN","number":53,"state":"closed","title":"Bump the python 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":"2026-06-03T22:56:42.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-21T07:01:45.000Z","updated_at":"2026-06-03T22:56:44.000Z","time_to_close":1180497,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":7,"packages":[{"name":"django-allauth","old_version":"65.16.1","new_version":"65.17.0"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.0.3","new_version":"6.0.4"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"ruff","old_version":"0.15.11","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.16.1` | `65.17.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.3` | `6.0.4` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.11` | `0.15.13` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.2.0` |\n\n\nUpdates `django-allauth[mfa]` from 65.16.1 to 65.17.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.3 to 6.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept single \u003ccode\u003estr/Combinable\u003c/code\u003e for \u003ccode\u003eAggregate.order_by\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3357\"\u003etypeddjango/django-stubs#3357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose Aggregate kwargs on subclass \u003ccode\u003e__init__\u003c/code\u003e stubs by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3359\"\u003etypeddjango/django-stubs#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e**flags\u003c/code\u003e with explicit kwargs on \u003ccode\u003eLibrary.filter\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3360\"\u003etypeddjango/django-stubs#3360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve \u003ccode\u003edefault_alias\u003c/code\u003e for positional Aggregate in \u003ccode\u003eannotate()\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3362\"\u003etypeddjango/django-stubs#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django to 6.0.5 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3369\"\u003etypeddjango/django-stubs#3369\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/bitmooze\"\u003e\u003ccode\u003e@​bitmooze\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3331\"\u003etypeddjango/django-stubs#3331\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/928eec423b8454590a46e50653698d85954f04de\"\u003e\u003ccode\u003e928eec4\u003c/code\u003e\u003c/a\u003e Version 6.0.4 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3375\"\u003e#3375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a9942040a2ed28b8e1ae129578c1f5a4f2b449b8\"\u003e\u003ccode\u003ea994204\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3374\"\u003e#3374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ec8107b44d798a16b42ff049fe3904c9a4b5df08\"\u003e\u003ccode\u003eec8107b\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.64.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/28d997bc1e6559579ce3f4663178a8294e402897\"\u003e\u003ccode\u003e28d997b\u003c/code\u003e\u003c/a\u003e Remove unused get_field_lookup_exact_type from helpers (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3372\"\u003e#3372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/d312d60b1d7e852f73babe2a76be1d2961b94393\"\u003e\u003ccode\u003ed312d60\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.14 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3371\"\u003e#3371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f20e49018f19e84a839ab5d11ac47654e671728a\"\u003e\u003ccode\u003ef20e490\u003c/code\u003e\u003c/a\u003e Update Django to 6.0.5 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3369\"\u003e#3369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6d9d0e26fff5462782bfeede76ffd8b2cc36712d\"\u003e\u003ccode\u003e6d9d0e2\u003c/code\u003e\u003c/a\u003e Resolve default_alias for positional Aggregate in annotate() (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3362\"\u003e#3362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6dd9231e36393d5ddaecb5d0ffca2a6b824bf0cc\"\u003e\u003ccode\u003e6dd9231\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.58.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3368\"\u003e#3368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e270482574c273798d875f2191945f64dbb0c00a\"\u003e\u003ccode\u003ee270482\u003c/code\u003e\u003c/a\u003e Update dependency psycopg to v3.3.4 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3365\"\u003e#3365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/cfb0f9a098e24d47f1c3cc5c5de971b599c6e907\"\u003e\u003ccode\u003ecfb0f9a\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.63.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3367\"\u003e#3367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.16.9 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003ch2\u003eVersioning\u003c/h2\u003e\n\u003cp\u003eThis is the first version targeting \u003ccode\u003edjangorestframework\u003c/code\u003e v3.17 and \u003ccode\u003edjango-stubs\u003c/code\u003e v6.0. However, not all stubs have been updated yet for 3.17:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSee \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\u003c/a\u003e for remaining work\u003c/li\u003e\n\u003cli\u003ePlease open pull requests, but keep changes small.\u003c/li\u003e\n\u003cli\u003eFirst check that nobody is already working on that topic: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/pulls\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/pulls\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e \u003ccode\u003ecode\u003c/code\u003e support and fix defaults in validators by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/947\"\u003etypeddjango/djangorestframework-stubs#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorator stubs for DRF 3.17 by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/949\"\u003etypeddjango/djangorestframework-stubs#949\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eSerializer\u003c/code\u003e context type \u003ccode\u003edict\u003c/code\u003e -\u0026gt; \u003ccode\u003eMapping\u003c/code\u003e by \u003ca href=\"https://github.com/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.renderers\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/960\"\u003etypeddjango/djangorestframework-stubs#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/964\"\u003etypeddjango/djangorestframework-stubs#964\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency djangorestframework to v3.17.1 \u0026amp; add new allowlist by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/941\"\u003etypeddjango/djangorestframework-stubs#941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance - Django 5.2.13 \u0026amp; 6.0.4 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/962\"\u003etypeddjango/djangorestframework-stubs#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/984\"\u003etypeddjango/djangorestframework-stubs#984\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/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.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/typeddjango/djangorestframework-stubs/commit/dcaf5607a9c22db2e19274ff49bd149489603e53\"\u003e\u003ccode\u003edcaf560\u003c/code\u003e\u003c/a\u003e Version 3.17.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/9ac7355a57ab3ac7e7c00830bb0d8ad4df699e01\"\u003e\u003ccode\u003e9ac7355\u003c/code\u003e\u003c/a\u003e Clean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/4f367f1fcbeb0c5f041a88ea12988fe5a4872e49\"\u003e\u003ccode\u003e4f367f1\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/7923d06e186d363e88e3590fe88a98bdd924920a\"\u003e\u003ccode\u003e7923d06\u003c/code\u003e\u003c/a\u003e Unpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b2d9250b66d2aa7727793dd05e7cd37208ebcde6\"\u003e\u003ccode\u003eb2d9250\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/77b63b4ea29056d63b30b60b2d82e564f6194d6b\"\u003e\u003ccode\u003e77b63b4\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/96a5e21a45f39a3e65dbff74a4ce3482d0cdd9d1\"\u003e\u003ccode\u003e96a5e21\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b6c3e0298ff742dfb60ec2a87319028cd955686f\"\u003e\u003ccode\u003eb6c3e02\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260510 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/cc0af26d455fd5b3b735806409d17e6aef01a0b2\"\u003e\u003ccode\u003ecc0af26\u003c/code\u003e\u003c/a\u003e Update dependency types-requests to v2.33.0.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/978\"\u003e#978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/001b9c2865e9c0aae2b1cb181baa5f02be2b6be1\"\u003e\u003ccode\u003e001b9c2\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.11 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `watchfiles` from 1.1.1 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/samuelcolvin/watchfiles/releases\"\u003ewatchfiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 2026-05-17\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: add riscv64 manylinux wheels by \u003ca href=\"https://github.com/justeph\"\u003e\u003ccode\u003e@​justeph\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/359\"\u003esamuelcolvin/watchfiles#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix linting by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/370\"\u003esamuelcolvin/watchfiles#370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.15-dev build, drop 3.9, increase MVRV to 1.83 by \u003ca href=\"https://github.com/simonw\"\u003e\u003ccode\u003e@​simonw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/369\"\u003esamuelcolvin/watchfiles#369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: improve type safety and error handling by \u003ca href=\"https://github.com/N3XT3R1337\"\u003e\u003ccode\u003e@​N3XT3R1337\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/365\"\u003esamuelcolvin/watchfiles#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRuff target version to 3.10 by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/379\"\u003esamuelcolvin/watchfiles#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupgrade uv lock by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/378\"\u003esamuelcolvin/watchfiles#378\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprep v1.2.0 release by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/371\"\u003esamuelcolvin/watchfiles#371\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/justeph\"\u003e\u003ccode\u003e@​justeph\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/359\"\u003esamuelcolvin/watchfiles#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simonw\"\u003e\u003ccode\u003e@​simonw\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/369\"\u003esamuelcolvin/watchfiles#369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/N3XT3R1337\"\u003e\u003ccode\u003e@​N3XT3R1337\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/365\"\u003esamuelcolvin/watchfiles#365\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.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/samuelcolvin/watchfiles/commit/b6eb04ffaa99c3e656e448c75d137013ffa2ece3\"\u003e\u003ccode\u003eb6eb04f\u003c/code\u003e\u003c/a\u003e prep v1.2.0 release (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/517ffb2ad432d126326fa710af2040a8343588f2\"\u003e\u003ccode\u003e517ffb2\u003c/code\u003e\u003c/a\u003e upgrade uv lock (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/e156213f44bec3fcd3f970b0f6a1419494e21c1f\"\u003e\u003ccode\u003ee156213\u003c/code\u003e\u003c/a\u003e Ruff target version to 3.10 (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/379\"\u003e#379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/f4f63ebcb4ef7602038d8cb90fdc03ac4514f380\"\u003e\u003ccode\u003ef4f63eb\u003c/code\u003e\u003c/a\u003e fix: improve type safety and error handling (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/a928957581ec6f73fbd560efacd519f1dc9ab2de\"\u003e\u003ccode\u003ea928957\u003c/code\u003e\u003c/a\u003e Add Python 3.15-dev build, drop 3.9, increase MVRV to 1.83 (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/f8b91fcabd929b655a9ed440115ea5a1997de736\"\u003e\u003ccode\u003ef8b91fc\u003c/code\u003e\u003c/a\u003e fix linting (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/ac594d105be711b98d1835fe5a26f65917b5d784\"\u003e\u003ccode\u003eac594d1\u003c/code\u003e\u003c/a\u003e ci: add riscv64 manylinux wheels (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \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/sadanun/NewHire/pull/53","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sadanun%2FNewHire/issues/53","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/53/packages"},{"uuid":"4459115687","node_id":"PR_kwDOB1SzD87cLIYU","number":388,"state":"closed","title":"Bump the pip-all group across 1 directory with 9 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-05-18T02:56:18.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-16T07:29:39.000Z","updated_at":"2026-05-18T02:56:19.000Z","time_to_close":156399,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-all","update_count":9,"packages":[{"name":"gunicorn","old_version":"25.3.0","new_version":"26.0.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"sentry-sdk","old_version":"2.59.0","new_version":"2.60.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.0.3","new_version":"6.0.4","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"mypy","old_version":"1.20.2","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"selenium","old_version":"4.43.0","new_version":"4.44.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"types-requests","old_version":"2.33.0.20260503","new_version":"2.33.0.20260513","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-all group with 9 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.3.0` | `26.0.0` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.59.0` | `2.60.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `6.0.3` | `6.0.4` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [mypy](https://github.com/python/mypy) | `1.20.2` | `2.1.0` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.43.0` | `4.44.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.33.0.20260503` | `2.33.0.20260513` |\n\n\nUpdates `gunicorn` from 25.3.0 to 26.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.0.0\u003c/h2\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eEventlet worker removed\u003c/strong\u003e: The \u003ccode\u003eeventlet\u003c/code\u003e worker class has been dropped. Migrate to \u003ccode\u003egevent\u003c/code\u003e, \u003ccode\u003egthread\u003c/code\u003e, or \u003ccode\u003etornado\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Framework Compatibility Suite\u003c/strong\u003e: New end-to-end compatibility test harness covering Starlette, FastAPI, Litestar, Quart, Sanic, and BlackSheep. Current grid passes 438/444 tests (98%).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Test Suite Expansion\u003c/strong\u003e: 134 additional ASGI unit tests covering protocol semantics, lifespan, websockets, and chunked framing.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/1.1 Request-Target Validation\u003c/strong\u003e (RFC 9112 sections 3.2.3, 3.2.4):\n\u003cul\u003e\n\u003cli\u003eReject \u003ccode\u003eauthority-form\u003c/code\u003e request-target outside \u003ccode\u003eCONNECT\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003easterisk-form\u003c/code\u003e request-target outside \u003ccode\u003eOPTIONS\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003erelative-reference\u003c/code\u003e request-targets\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHeader Field Hardening\u003c/strong\u003e (RFC 9110):\n\u003cul\u003e\n\u003cli\u003eReject control characters in header field-value (section 5.5)\u003c/li\u003e\n\u003cli\u003eReject forbidden trailer field-names (section 6.5.1)\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003eContent-Length\u003c/code\u003e list form (RFC 9112 section 6.3)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRequest Smuggling Hardening\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eTighten keepalive gate and scope \u003ccode\u003efinish_body\u003c/code\u003e byte cap\u003c/li\u003e\n\u003cli\u003eKeep \u003ccode\u003e_body_receiver\u003c/code\u003e alive across the keepalive smuggling gate so pipelined requests cannot re-enter a closed body\u003c/li\u003e\n\u003cli\u003eAddress parser/protocol findings from a six-point WSGI/ASGI audit\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePROXY Protocol (ASGI)\u003c/strong\u003e: Enforce \u003ccode\u003eproxy_allow_ips\u003c/code\u003e and tighten v1/v2 parsing in the ASGI callback parser.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConnection Draining\u003c/strong\u003e: Drain the connection on close per RFC 9112 section 9.6 to prevent reset-on-close truncation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBody Framing on HEAD/204/304\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eKeep \u003ccode\u003eContent-Length\u003c/code\u003e on HEAD and 304 responses (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3621\"\u003e#3621\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop body framing on HEAD/204/304 even when the framework set it\u003c/li\u003e\n\u003cli\u003eWarn once when an ASGI app emits a body for a no-body response\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 ASGI\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e_handle_stream_ended\u003c/code\u003e to set \u003ccode\u003e_body_complete\u003c/code\u003e in the async HTTP/2 handler so request bodies finalize correctly on stream end\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eInvalidChunkExtension\u003c/code\u003e mapping and fast-parser support in ASGI tests (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3565\"\u003e#3565\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/1.1 100-Continue\u003c/strong\u003e: Stop adding \u003ccode\u003eTransfer-Encoding: chunked\u003c/code\u003e to 100-Continue interim responses.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWebSocket Close Handshake\u003c/strong\u003e (RFC 6455):\n\u003cul\u003e\n\u003cli\u003eComply with the close handshake state machine\u003c/li\u003e\n\u003cli\u003eClose the transport after the close handshake completes\u003c/li\u003e\n\u003cli\u003eFix binary send when the \u003ccode\u003etext\u003c/code\u003e key is \u003ccode\u003eNone\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEarly Hints\u003c/strong\u003e: Validate headers in the \u003ccode\u003eearly_hints\u003c/code\u003e callback to match \u003ccode\u003eprocess_headers\u003c/code\u003e; pass only the header name to \u003ccode\u003eInvalidHeader\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3588\"\u003e#3588\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Framework Fixes\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eFix ASGI disconnect handling for Django-style apps\u003c/li\u003e\n\u003cli\u003eFix Litestar request handling (use raw ASGI receive for body/headers)\u003c/li\u003e\n\u003cli\u003eFix Litestar HTTP endpoints for compatibility tests\u003c/li\u003e\n\u003cli\u003eFix Quart headers endpoint to normalize keys to lowercase\u003c/li\u003e\n\u003cli\u003eFix Quart WebSocket close test app (missing \u003ccode\u003eaccept()\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix duplicate \u003ccode\u003eTransfer-Encoding\u003c/code\u003e header for BlackSheep streaming\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/benoitc/gunicorn/commit/5d819cf36040f6cc6175fcc804d703fb899509dd\"\u003e\u003ccode\u003e5d819cf\u003c/code\u003e\u003c/a\u003e release: 26.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/b45c70df105f7d5dcbc5abfb732804d6464edc21\"\u003e\u003ccode\u003eb45c70d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3611\"\u003e#3611\u003c/a\u003e from zc-mattcen/docs-typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/99c8d48acf453deb5c49fe12e195dbc00d888d1e\"\u003e\u003ccode\u003e99c8d48\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3623\"\u003e#3623\u003c/a\u003e from benoitc/chore/drop-eventlet-add-h2-uvloop-test-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5a655af50f20e005dd9e32e6078dc82fa45f3d4b\"\u003e\u003ccode\u003e5a655af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3622\"\u003e#3622\u003c/a\u003e from benoitc/test/docker-port-and-ipv4-fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/201df19a8011c0a1d6a0e75ebe22e89d48eb935e\"\u003e\u003ccode\u003e201df19\u003c/code\u003e\u003c/a\u003e chore: remove eventlet worker; add h2 and uvloop to test deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/f4ac8e1f1bf1d365e77f41915da55bec31873f84\"\u003e\u003ccode\u003ef4ac8e1\u003c/code\u003e\u003c/a\u003e test: pass action name to dirty client and stabilize after TTOU spam\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/54d38afddf1f0db0c15b5f4ff63f3c7bfad96961\"\u003e\u003ccode\u003e54d38af\u003c/code\u003e\u003c/a\u003e test: unblock docker fixtures on macOS hosts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/68843c8893dd938456f0a2da62085ab5776f8871\"\u003e\u003ccode\u003e68843c8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3621\"\u003e#3621\u003c/a\u003e from benoitc/fix/asgi-preserve-content-length-on-hea...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/31f2618f733cc0c78690df63f4e344aaf3f56b20\"\u003e\u003ccode\u003e31f2618\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3620\"\u003e#3620\u003c/a\u003e from benoitc/fix/asgi-proxy-protocol-trust-and-parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/41ec7527dbd8a9e52728477700707ad40e41d9dc\"\u003e\u003ccode\u003e41ec752\u003c/code\u003e\u003c/a\u003e fix: keep Content-Length on HEAD and 304 responses\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/25.3.0...26.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.59.0 to 2.60.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.60.0\u003c/h2\u003e\n\u003cp\u003eAdds a new \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e option that controls how \u003ccode\u003egen_ai\u003c/code\u003e spans are\nsent to Sentry. When set, the SDK extracts all \u003ccode\u003egen_ai\u003c/code\u003e spans out of a\ntransaction and sends them as v2 envelope items.\u003c/p\u003e\n\u003cp\u003eEnable this option if \u003ccode\u003egen_ai\u003c/code\u003e spans are being dropped because the transaction payload exceeds size limits.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\ndsn='https://\u003ca href=\"mailto:examplePublicKey@o0.ingest.sentry.io\"\u003eexamplePublicKey@o0.ingest.sentry.io\u003c/a\u003e/0',\u003cbr /\u003e\nstream_gen_ai_spans=True,\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asyncpg) Add cursor span support via BaseCursor method patching by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6252\"\u003e#6252\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(integrations) Pass along the conversation ID for openai \u003ccode\u003eresponses\u003c/code\u003e calls by \u003ca href=\"https://github.com/constantinius\"\u003e\u003ccode\u003e@​constantinius\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6199\"\u003e#6199\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi,asgi) Introduce substitute values for filtered fields in span-streaming mode by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6178\"\u003e#6178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove truncation when \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e is enabled by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6260\"\u003e#6260\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd option to send GenAI spans in the new span format by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6079\"\u003e#6079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eOpenai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eGuard against \u003ccode\u003echoices=None\u003c/code\u003e by \u003ca href=\"https://github.com/cla7aye15I4nd\"\u003e\u003ccode\u003e@​cla7aye15I4nd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6216\"\u003e#6216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop setting transaction status when child span fails by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6192\"\u003e#6192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in Responses patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6191\"\u003e#6191\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in Chat Completions patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6190\"\u003e#6190\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(stdlib) Instrument response body read for chunked HTTP responses by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6202\"\u003e#6202\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(typing) Add \u003ccode\u003e@sentry_sdk.traces.trace\u003c/code\u003e overloads to fix typing by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6236\"\u003e#6236\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse proto version 2 to fix backfilled user agent and IP by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6256\"\u003e#6256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003ehttp.server\u003c/code\u003e spans are segments by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6230\"\u003e#6230\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle mypy 2.0 related failures by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6218\"\u003e#6218\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eDjango\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck transaction annotations on transaction events by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6251\"\u003e#6251\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReload middleware on test teardown by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6249\"\u003e#6249\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai\u003c/h4\u003e\n\u003c!-- 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/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.60.0\u003c/h2\u003e\n\u003cp\u003eAdds a new \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e option that controls how \u003ccode\u003egen_ai\u003c/code\u003e spans are\nsent to Sentry. When set, the SDK extracts all \u003ccode\u003egen_ai\u003c/code\u003e spans out of a\ntransaction and sends them as v2 envelope items.\u003c/p\u003e\n\u003cp\u003eEnable this option if \u003ccode\u003egen_ai\u003c/code\u003e spans are being dropped because the transaction payload exceeds size limits.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\ndsn='https://\u003ca href=\"mailto:examplePublicKey@o0.ingest.sentry.io\"\u003eexamplePublicKey@o0.ingest.sentry.io\u003c/a\u003e/0',\u003cbr /\u003e\nstream_gen_ai_spans=True,\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asyncpg) Add cursor span support via BaseCursor method patching by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6252\"\u003e#6252\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(integrations) Pass along the conversation ID for openai \u003ccode\u003eresponses\u003c/code\u003e calls by \u003ca href=\"https://github.com/constantinius\"\u003e\u003ccode\u003e@​constantinius\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6199\"\u003e#6199\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi,asgi) Introduce substitute values for filtered fields in span-streaming mode by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6178\"\u003e#6178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove truncation when \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e is enabled by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6260\"\u003e#6260\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd option to send GenAI spans in the new span format by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6079\"\u003e#6079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eOpenai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eGuard against \u003ccode\u003echoices=None\u003c/code\u003e by \u003ca href=\"https://github.com/cla7aye15I4nd\"\u003e\u003ccode\u003e@​cla7aye15I4nd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6216\"\u003e#6216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop setting transaction status when child span fails by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6192\"\u003e#6192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in Responses patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6191\"\u003e#6191\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in Chat Completions patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6190\"\u003e#6190\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(stdlib) Instrument response body read for chunked HTTP responses by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6202\"\u003e#6202\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(typing) Add \u003ccode\u003e@sentry_sdk.traces.trace\u003c/code\u003e overloads to fix typing by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6236\"\u003e#6236\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse proto version 2 to fix backfilled user agent and IP by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6256\"\u003e#6256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003ehttp.server\u003c/code\u003e spans are segments by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6230\"\u003e#6230\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle mypy 2.0 related failures by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6218\"\u003e#6218\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eDjango\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck transaction annotations on transaction events by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6251\"\u003e#6251\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReload middleware on test teardown by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6249\"\u003e#6249\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e30caaa97793fd37b782d8c48b7727a43428fafd\"\u003e\u003ccode\u003ee30caaa\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/d31ac85a92def5d6f2395fe2bfa8a9133c581323\"\u003e\u003ccode\u003ed31ac85\u003c/code\u003e\u003c/a\u003e release: 2.60.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/fcb93051c5b85f28ee6dc623dd67736d430ef432\"\u003e\u003ccode\u003efcb9305\u003c/code\u003e\u003c/a\u003e feat: Remove truncation when \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e is enabled (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6260\"\u003e#6260\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/253a4d42b13bb5b54cb3b623a32d9fc99639b226\"\u003e\u003ccode\u003e253a4d4\u003c/code\u003e\u003c/a\u003e feat: Add option to send GenAI spans in the new span format (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6079\"\u003e#6079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/619d803d82f7bbf2a15a80432334c863e4c206eb\"\u003e\u003ccode\u003e619d803\u003c/code\u003e\u003c/a\u003e test(langchain): Inline global state (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6261\"\u003e#6261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/f92c8036a8ed166ab3be8a48f6344fd98d1761dd\"\u003e\u003ccode\u003ef92c803\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: Work around compromised transitive dependency (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6257\"\u003e#6257\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6262\"\u003e#6262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7a303dcbf0e4bc6aa701446d79e847d56db26137\"\u003e\u003ccode\u003e7a303dc\u003c/code\u003e\u003c/a\u003e Add option to drop scrubbed user IP addresses (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6241\"\u003e#6241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/edaa6d6d142e430e1dd0a1097e0b77506cf159e9\"\u003e\u003ccode\u003eedaa6d6\u003c/code\u003e\u003c/a\u003e feat(pymongo): Add span streaming support (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6253\"\u003e#6253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/0e47eadedea808a4ca7865a480552872208be890\"\u003e\u003ccode\u003e0e47ead\u003c/code\u003e\u003c/a\u003e feat(asyncpg): Add cursor span support via BaseCursor method patching (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6252\"\u003e#6252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/17cc8c7b2c31c2df130418bb49137814d4d35f7b\"\u003e\u003ccode\u003e17cc8c7\u003c/code\u003e\u003c/a\u003e fix: Use proto version 2 to fix backfilled user agent and IP (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6256\"\u003e#6256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.59.0...2.60.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs` from 6.0.3 to 6.0.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/928eec423b8454590a46e50653698d85954f04de\"\u003e\u003ccode\u003e928eec4\u003c/code\u003e\u003c/a\u003e Version 6.0.4 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3375\"\u003e#3375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a9942040a2ed28b8e1ae129578c1f5a4f2b449b8\"\u003e\u003ccode\u003ea994204\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3374\"\u003e#3374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ec8107b44d798a16b42ff049fe3904c9a4b5df08\"\u003e\u003ccode\u003eec8107b\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.64.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/28d997bc1e6559579ce3f4663178a8294e402897\"\u003e\u003ccode\u003e28d997b\u003c/code\u003e\u003c/a\u003e Remove unused get_field_lookup_exact_type from helpers (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3372\"\u003e#3372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/d312d60b1d7e852f73babe2a76be1d2961b94393\"\u003e\u003ccode\u003ed312d60\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.14 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3371\"\u003e#3371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f20e49018f19e84a839ab5d11ac47654e671728a\"\u003e\u003ccode\u003ef20e490\u003c/code\u003e\u003c/a\u003e Update Django to 6.0.5 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3369\"\u003e#3369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6d9d0e26fff5462782bfeede76ffd8b2cc36712d\"\u003e\u003ccode\u003e6d9d0e2\u003c/code\u003e\u003c/a\u003e Resolve default_alias for positional Aggregate in annotate() (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3362\"\u003e#3362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6dd9231e36393d5ddaecb5d0ffca2a6b824bf0cc\"\u003e\u003ccode\u003e6dd9231\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.58.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3368\"\u003e#3368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e270482574c273798d875f2191945f64dbb0c00a\"\u003e\u003ccode\u003ee270482\u003c/code\u003e\u003c/a\u003e Update dependency psycopg to v3.3.4 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3365\"\u003e#3365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/cfb0f9a098e24d47f1c3cc5c5de971b599c6e907\"\u003e\u003ccode\u003ecfb0f9a\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.63.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3367\"\u003e#3367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.16.9 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003ch2\u003eVersioning\u003c/h2\u003e\n\u003cp\u003eThis is the first version targeting \u003ccode\u003edjangorestframework\u003c/code\u003e v3.17 and \u003ccode\u003edjango-stubs\u003c/code\u003e v6.0. However, not all stubs have been updated yet for 3.17:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSee \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\u003c/a\u003e for remaining work\u003c/li\u003e\n\u003cli\u003ePlease open pull requests, but keep changes small.\u003c/li\u003e\n\u003cli\u003eFirst check that nobody is already working on that topic: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/pulls\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/pulls\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e \u003ccode\u003ecode\u003c/code\u003e support and fix defaults in validators by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/947\"\u003etypeddjango/djangorestframework-stubs#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorator stubs for DRF 3.17 by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/949\"\u003etypeddjango/djangorestframework-stubs#949\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eSerializer\u003c/code\u003e context type \u003ccode\u003edict\u003c/code\u003e -\u0026gt; \u003ccode\u003eMapping\u003c/code\u003e by \u003ca href=\"https://github.com/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.renderers\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/960\"\u003etypeddjango/djangorestframework-stubs#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/964\"\u003etypeddjango/djangorestframework-stubs#964\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency djangorestframework to v3.17.1 \u0026amp; add new allowlist by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/941\"\u003etypeddjango/djangorestframework-stubs#941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance - Django 5.2.13 \u0026amp; 6.0.4 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/962\"\u003etypeddjango/djangorestframework-stubs#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/984\"\u003etypeddjango/djangorestframework-stubs#984\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/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.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/typeddjango/djangorestframework-stubs/commit/dcaf5607a9c22db2e19274ff49bd149489603e53\"\u003e\u003ccode\u003edcaf560\u003c/code\u003e\u003c/a\u003e Version 3.17.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/9ac7355a57ab3ac7e7c00830bb0d8ad4df699e01\"\u003e\u003ccode\u003e9ac7355\u003c/code\u003e\u003c/a\u003e Clean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/4f367f1fcbeb0c5f041a88ea12988fe5a4872e49\"\u003e\u003ccode\u003e4f367f1\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/7923d06e186d363e88e3590fe88a98bdd924920a\"\u003e\u003ccode\u003e7923d06\u003c/code\u003e\u003c/a\u003e Unpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b2d9250b66d2aa7727793dd05e7cd37208ebcde6\"\u003e\u003ccode\u003eb2d9250\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/77b63b4ea29056d63b30b60b2d82e564f6194d6b\"\u003e\u003ccode\u003e77b63b4\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/96a5e21a45f39a3e65dbff74a4ce3482d0cdd9d1\"\u003e\u003ccode\u003e96a5e21\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b6c3e0298ff742dfb60ec2a87319028cd955686f\"\u003e\u003ccode\u003eb6c3e02\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260510 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/cc0af26d455fd5b3b735806409d17e6aef01a0b2\"\u003e\u003ccode\u003ecc0af26\u003c/code\u003e\u003c/a\u003e Update dependency types-requests to v2.33.0.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/978\"\u003e#978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/001b9c2865e9c0aae2b1cb181baa5f02be2b6be1\"\u003e\u003ccode\u003e001b9c2\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.20.2 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges to Messages\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7\"\u003e\u003ccode\u003e74df14b\u003c/code\u003e\u003c/a\u003e Add changelog for mypy 2.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff\"\u003e\u003ccode\u003e022d9bc\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;TypeForm: Enable by default (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21262\"\u003e#21262\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c\"\u003e\u003ccode\u003e8826288\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt.random (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21463\"\u003e#21463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96\"\u003e\u003ccode\u003e3f4067b\u003c/code\u003e\u003c/a\u003e Bump librt version to 0.11.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21458\"\u003e#21458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e\"\u003e\u003ccode\u003e2b1eb58\u003c/code\u003e\u003c/a\u003e [mypyc] Enable incremental self-compilation (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21369\"\u003e#21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc\"\u003e\u003ccode\u003e8152f4a\u003c/code\u003e\u003c/a\u003e Respect file config comments for stale modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21444\"\u003e#21444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92\"\u003e\u003ccode\u003e116d60b\u003c/code\u003e\u003c/a\u003e Fix nondeterminism from nonassociativity of overload joins (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210\"\u003e\u003ccode\u003e6c4af8e\u003c/code\u003e\u003c/a\u003e Fix function call message change for small number of args (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21432\"\u003e#21432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800\"\u003e\u003ccode\u003e4b8fdca\u003c/code\u003e\u003c/a\u003e [mypyc] Add librt.random module (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21433\"\u003e#21433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.2...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `selenium` from 4.43.0 to 4.44.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SeleniumHQ/Selenium/releases\"\u003eselenium's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSelenium 4.44.0\u003c/h2\u003e\n\u003ch2\u003eDetailed Changelogs by Component\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG\"\u003eJava\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES\"\u003ePython\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG\"\u003eDotNet\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES\"\u003eRuby\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md\"\u003eJavaScript\u003c/a\u003e\u003c/strong\u003e\n\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003efix(documentation): update artifact naming for generated docs by \u003ca href=\"https://github.com/diemol\"\u003e\u003ccode\u003e@​diemol\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17332\"\u003eSeleniumHQ/selenium#17332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(ruby): retrieve devtools version dynamically for package verification by \u003ca href=\"https://github.com/diemol\"\u003e\u003ccode\u003e@​diemol\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17335\"\u003eSeleniumHQ/selenium#17335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Don't truncate internal log messages at error/warn levels by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17333\"\u003eSeleniumHQ/selenium#17333\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Safe modifications of internal log handlers by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17334\"\u003eSeleniumHQ/selenium#17334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Remove planned obsoleted members for 4.44 by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17328\"\u003eSeleniumHQ/selenium#17328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Statically declare commands by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17330\"\u003eSeleniumHQ/selenium#17330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Statically declared events by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17331\"\u003eSeleniumHQ/selenium#17331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Add C# 14 extension to polyfill \u003ccode\u003eArgumentNullException.ThrowIfNull\u003c/code\u003e by \u003ca href=\"https://github.com/RenderMichael\"\u003e\u003ccode\u003e@​RenderMichael\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16697\"\u003eSeleniumHQ/selenium#16697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Align SetDownloadBehavior command by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17336\"\u003eSeleniumHQ/selenium#17336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Align ContinueWithAuth command by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17337\"\u003eSeleniumHQ/selenium#17337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Align SetGeolocation polymorphic command by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17338\"\u003eSeleniumHQ/selenium#17338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [test] In-process test webserver by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17339\"\u003eSeleniumHQ/selenium#17339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] deprecate the 'native' methods inside the HttpClient interface by \u003ca href=\"https://github.com/joerg1985\"\u003e\u003ccode\u003e@​joerg1985\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17340\"\u003eSeleniumHQ/selenium#17340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCDDL 2 Python generator by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16914\"\u003eSeleniumHQ/selenium#16914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix py:local_dev rake task by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17342\"\u003eSeleniumHQ/selenium#17342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[grid] Accept legacy session-closed event payloads by \u003ca href=\"https://github.com/VietND96\"\u003e\u003ccode\u003e@​VietND96\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17343\"\u003eSeleniumHQ/selenium#17343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] specify nullability in package \u003ccode\u003eorg.openqa.selenium.remote\u003c/code\u003e by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17325\"\u003eSeleniumHQ/selenium#17325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix NPE when response status is null by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17348\"\u003eSeleniumHQ/selenium#17348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] fix NoSuchElementException for custom By locators by \u003ca href=\"https://github.com/Chandan25sharma\"\u003e\u003ccode\u003e@​Chandan25sharma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17287\"\u003eSeleniumHQ/selenium#17287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Update docs with pytest example and minor formatting fixes by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17351\"\u003eSeleniumHQ/selenium#17351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Fix stopping of network monitoring via DevTools by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17352\"\u003eSeleniumHQ/selenium#17352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [test] Update tests to target .NET 10 by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17353\"\u003eSeleniumHQ/selenium#17353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[build] Clean extra tools from GHA runner to free disk space by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17360\"\u003eSeleniumHQ/selenium#17360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInitial Creation of the Selenium CLI Tool by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17327\"\u003eSeleniumHQ/selenium#17327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] fix some nullability warnings by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17362\"\u003eSeleniumHQ/selenium#17362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Use generated Bidi files instead of hand curated ones by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17266\"\u003eSeleniumHQ/selenium#17266\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[docs] Add AI-assisted contribution policy by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17043\"\u003eSeleniumHQ/selenium#17043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Agents] Update agents to make sure do linting. by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17366\"\u003eSeleniumHQ/selenium#17366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Bump dependencies by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17368\"\u003eSeleniumHQ/selenium#17368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[git] update gitignore to exclude mempalace by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17369\"\u003eSeleniumHQ/selenium#17369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] remove field \u003ccode\u003eChromiumDriver.capabilities\u003c/code\u003e by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17363\"\u003eSeleniumHQ/selenium#17363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[spec] Use http_file for the cddl files by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17372\"\u003eSeleniumHQ/selenium#17372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Obsolete Type(string) method in Input module by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17377\"\u003eSeleniumHQ/selenium#17377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Network failures by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17381\"\u003eSeleniumHQ/selenium#17381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] [test] Unignore bidi network conditions tests for Firefox by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17385\"\u003eSeleniumHQ/selenium#17385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [test] Unignore network conditions tests for Firefox by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17386\"\u003eSeleniumHQ/selenium#17386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [test] Migrate to MTP by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17384\"\u003eSeleniumHQ/selenium#17384\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/SeleniumHQ/selenium/commit/da2039bd1456a161d0c284de16f9f4f179f1e8ca\"\u003e\u003ccode\u003eda2039b\u003c/code\u003e\u003c/a\u003e [build] Prepare for release of selenium-4.44.0 (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17444\"\u003e#17444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/d56867b3163eaa25541843ebfdd8c632a01fbf52\"\u003e\u003ccode\u003ed56867b\u003c/code\u003e\u003c/a\u003e Fix prerelease (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17442\"\u003e#17442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/331becdcd9be0a34b733818c9d05ed209411783d\"\u003e\u003ccode\u003e331becd\u003c/code\u003e\u003c/a\u003e [dotnet][rb][java][js][py] Automated Browser Version Update (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17440\"\u003e#17440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/65bb32ebd5a72f0374934da3ed2355757bb3b068\"\u003e\u003ccode\u003e65bb32e\u003c/code\u003e\u003c/a\u003e [build] do not auto-merge browser updates (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17432\"\u003e#17432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/fd1d36d41053a8886164ed6b12c706fbc602507f\"\u003e\u003ccode\u003efd1d36d\u003c/code\u003e\u003c/a\u003e [build] dynamically add and remove rulesets for release (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17439\"\u003e#17439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/c799aff2b94666c6cab94c0dec8762ce962bb107\"\u003e\u003ccode\u003ec799aff\u003c/code\u003e\u003c/a\u003e [build] fix release workflow (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17437\"\u003e#17437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/83ce01eb2ea710bdd9cb34e2ce4eda08a9c890f1\"\u003e\u003ccode\u003e83ce01e\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Add DisownData command in Network module (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17436\"\u003e#17436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/f342feeeb5d4f2760e8c2c1083815151f25327c7\"\u003e\u003ccode\u003ef342fee\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Additional Event streaming (breaking change) (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17349\"\u003e#17349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/dfcc86ead1ad4b8291cc89e139f5e25fa011a475\"\u003e\u003ccode\u003edfcc86e\u003c/code\u003e\u003c/a\u003e [JavaScript] Move 'isDisplayed' atom to be typescript (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17316\"\u003e#17316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/cc26ec89c1bdd4a63cd994d5b185c5d169652858\"\u003e\u003ccode\u003ecc26ec8\u003c/code\u003e\u003c/a\u003e [js][py] Convert getAttribute atom from Closure to TypeScript (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17370\"\u003e#17370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SeleniumHQ/Selenium/compare/selenium-4.43.0...selenium-4.44.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-requests` from 2.33.0.20260503 to 2.33.0.20260513\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\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/rodlukas/UP-admin/pull/388","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodlukas%2FUP-admin/issues/388","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/388/packages"},{"uuid":"4451366313","node_id":"PR_kwDOSUTGnc7byWuq","number":11,"state":"closed","title":"chore(deps): bump the python group across 1 directory with 5 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-21T04:56:02.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-15T04:56:33.000Z","updated_at":"2026-05-21T04:56:04.000Z","time_to_close":518369,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":5,"packages":[{"name":"django","old_version":"6.0.4","new_version":"6.0.5","repository_url":"https://github.com/django/django"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.0.3","new_version":"6.0.4"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.15.12","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.4` | `6.0.5` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.3` | `6.0.4` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.12` | `0.15.13` |\n\n\nUpdates `django` from 6.0.4 to 6.0.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8f8ad09659d728423a00e0a3b5f16da5c3a38e24\"\u003e\u003ccode\u003e8f8ad09\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.5 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/44ad76efcbe3c4ca0f08bb9dabe916f6374596c9\"\u003e\u003ccode\u003e44ad76e\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-6907 -- Prevented caching of requests when Vary header...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1b0184aa657bc3f5859aeb0206e7c1e94e48b103\"\u003e\u003ccode\u003e1b0184a\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-35192 -- Ensured Vary header is sent when setting sess...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ad8f9e19e0897ea45ded7c046ff28daf6f773e92\"\u003e\u003ccode\u003ead8f9e1\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-5766 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE in Memory...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/990ab01e70fd8f55e867b4a234c0ee242fd33fec\"\u003e\u003ccode\u003e990ab01\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37039\"\u003e#37039\u003c/a\u003e -- Removed outdated note from QuerySet.iterator() docs.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/f0c269f285ab58bfb4a120141d7dd41ff4f42b45\"\u003e\u003ccode\u003ef0c269f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed typo in stub release notes for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8bcd15beeff6542acc381b83f50b061d62284c2b\"\u003e\u003ccode\u003e8bcd15b\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37067\"\u003e#37067\u003c/a\u003e -- Added trailing slash in django_file_prefixes().\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/3cdec6454fb86e8d03a06944c0c68025733ed93f\"\u003e\u003ccode\u003e3cdec64\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs CVE-2026-25674 -- Clarified role of umask in upload permissions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5dd5c70cf1056e8e04badb687f773e8f16bba257\"\u003e\u003ccode\u003e5dd5c70\u003c/code\u003e\u003c/a\u003e [6.0.x] Added stub release notes and release date for 6.0.5 and 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8ee73415270a1a54daaec9bb529ad82c6f7a6d4c\"\u003e\u003ccode\u003e8ee7341\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/373\"\u003e#373\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/django/django/issues/34122\"\u003e#34122\u003c/a\u003e -- Removed warning that ForeignObject is an interna...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.4...6.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.3 to 6.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept single \u003ccode\u003estr/Combinable\u003c/code\u003e for \u003ccode\u003eAggregate.order_by\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3357\"\u003etypeddjango/django-stubs#3357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose Aggregate kwargs on subclass \u003ccode\u003e__init__\u003c/code\u003e stubs by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3359\"\u003etypeddjango/django-stubs#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e**flags\u003c/code\u003e with explicit kwargs on \u003ccode\u003eLibrary.filter\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3360\"\u003etypeddjango/django-stubs#3360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve \u003ccode\u003edefault_alias\u003c/code\u003e for positional Aggregate in \u003ccode\u003eannotate()\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3362\"\u003etypeddjango/django-stubs#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django to 6.0.5 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3369\"\u003etypeddjango/django-stubs#3369\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/bitmooze\"\u003e\u003ccode\u003e@​bitmooze\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3331\"\u003etypeddjango/django-stubs#3331\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/928eec423b8454590a46e50653698d85954f04de\"\u003e\u003ccode\u003e928eec4\u003c/code\u003e\u003c/a\u003e Version 6.0.4 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3375\"\u003e#3375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a9942040a2ed28b8e1ae129578c1f5a4f2b449b8\"\u003e\u003ccode\u003ea994204\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3374\"\u003e#3374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ec8107b44d798a16b42ff049fe3904c9a4b5df08\"\u003e\u003ccode\u003eec8107b\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.64.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/28d997bc1e6559579ce3f4663178a8294e402897\"\u003e\u003ccode\u003e28d997b\u003c/code\u003e\u003c/a\u003e Remove unused get_field_lookup_exact_type from helpers (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3372\"\u003e#3372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/d312d60b1d7e852f73babe2a76be1d2961b94393\"\u003e\u003ccode\u003ed312d60\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.14 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3371\"\u003e#3371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f20e49018f19e84a839ab5d11ac47654e671728a\"\u003e\u003ccode\u003ef20e490\u003c/code\u003e\u003c/a\u003e Update Django to 6.0.5 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3369\"\u003e#3369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6d9d0e26fff5462782bfeede76ffd8b2cc36712d\"\u003e\u003ccode\u003e6d9d0e2\u003c/code\u003e\u003c/a\u003e Resolve default_alias for positional Aggregate in annotate() (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3362\"\u003e#3362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6dd9231e36393d5ddaecb5d0ffca2a6b824bf0cc\"\u003e\u003ccode\u003e6dd9231\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.58.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3368\"\u003e#3368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e270482574c273798d875f2191945f64dbb0c00a\"\u003e\u003ccode\u003ee270482\u003c/code\u003e\u003c/a\u003e Update dependency psycopg to v3.3.4 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3365\"\u003e#3365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/cfb0f9a098e24d47f1c3cc5c5de971b599c6e907\"\u003e\u003ccode\u003ecfb0f9a\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.63.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3367\"\u003e#3367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.16.9 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003ch2\u003eVersioning\u003c/h2\u003e\n\u003cp\u003eThis is the first version targeting \u003ccode\u003edjangorestframework\u003c/code\u003e v3.17 and \u003ccode\u003edjango-stubs\u003c/code\u003e v6.0. However, not all stubs have been updated yet for 3.17:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSee \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\u003c/a\u003e for remaining work\u003c/li\u003e\n\u003cli\u003ePlease open pull requests, but keep changes small.\u003c/li\u003e\n\u003cli\u003eFirst check that nobody is already working on that topic: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/pulls\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/pulls\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e \u003ccode\u003ecode\u003c/code\u003e support and fix defaults in validators by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/947\"\u003etypeddjango/djangorestframework-stubs#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorator stubs for DRF 3.17 by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/949\"\u003etypeddjango/djangorestframework-stubs#949\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eSerializer\u003c/code\u003e context type \u003ccode\u003edict\u003c/code\u003e -\u0026gt; \u003ccode\u003eMapping\u003c/code\u003e by \u003ca href=\"https://github.com/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.renderers\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/960\"\u003etypeddjango/djangorestframework-stubs#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/964\"\u003etypeddjango/djangorestframework-stubs#964\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency djangorestframework to v3.17.1 \u0026amp; add new allowlist by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/941\"\u003etypeddjango/djangorestframework-stubs#941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance - Django 5.2.13 \u0026amp; 6.0.4 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/962\"\u003etypeddjango/djangorestframework-stubs#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/984\"\u003etypeddjango/djangorestframework-stubs#984\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/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.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/typeddjango/djangorestframework-stubs/commit/dcaf5607a9c22db2e19274ff49bd149489603e53\"\u003e\u003ccode\u003edcaf560\u003c/code\u003e\u003c/a\u003e Version 3.17.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/9ac7355a57ab3ac7e7c00830bb0d8ad4df699e01\"\u003e\u003ccode\u003e9ac7355\u003c/code\u003e\u003c/a\u003e Clean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/4f367f1fcbeb0c5f041a88ea12988fe5a4872e49\"\u003e\u003ccode\u003e4f367f1\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/7923d06e186d363e88e3590fe88a98bdd924920a\"\u003e\u003ccode\u003e7923d06\u003c/code\u003e\u003c/a\u003e Unpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b2d9250b66d2aa7727793dd05e7cd37208ebcde6\"\u003e\u003ccode\u003eb2d9250\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/77b63b4ea29056d63b30b60b2d82e564f6194d6b\"\u003e\u003ccode\u003e77b63b4\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/96a5e21a45f39a3e65dbff74a4ce3482d0cdd9d1\"\u003e\u003ccode\u003e96a5e21\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b6c3e0298ff742dfb60ec2a87319028cd955686f\"\u003e\u003ccode\u003eb6c3e02\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260510 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/cc0af26d455fd5b3b735806409d17e6aef01a0b2\"\u003e\u003ccode\u003ecc0af26\u003c/code\u003e\u003c/a\u003e Update dependency types-requests to v2.33.0.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/978\"\u003e#978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/001b9c2865e9c0aae2b1cb181baa5f02be2b6be1\"\u003e\u003ccode\u003e001b9c2\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.12 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.12...0.15.13\"\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/Antoni2487/memos-cafe/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Antoni2487%2Fmemos-cafe/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}],"issue_packages":[{"old_version":"3.17.0","new_version":"3.18.1","update_type":"minor","path":null,"pr_created_at":"2026-09-04T02:19:10.000Z","version_change":"3.17.0 → 3.18.1","issue":{"uuid":"5343446291","node_id":"PR_kwDOTRUWeM8AAAABCI9iNw","number":22,"state":"closed","title":"chore(deps): bump the python group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-07T02:19:13.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T02:19:10.000Z","updated_at":"2026-09-07T02:19:17.000Z","time_to_close":259203,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":19,"packages":[{"name":"daphne","old_version":"4.2.2","new_version":"4.2.3","repository_url":"https://github.com/django/daphne"},{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1","repository_url":"https://github.com/anymail/django-anymail"},{"name":"django-crispy-forms","old_version":"2.6","new_version":"2.7","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"litellm","old_version":"1.91.1","new_version":"1.99.0","repository_url":"https://github.com/BerriAI/litellm"},{"name":"psycopg","old_version":"3.3.4","new_version":"3.3.5"},{"name":"redis","old_version":"8.0.1","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.15.1","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.6","new_version":"6.1.0"},{"name":"djangorestframework-stubs","old_version":"3.17.0","new_version":"3.18.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.40.5","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.0","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.15.21","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [daphne](https://github.com/django/daphne) | `4.2.2` | `4.2.3` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.6` | `2.7` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.2.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [litellm](https://github.com/BerriAI/litellm) | `1.91.1` | `1.99.0` |\n| [psycopg[binary]](https://github.com/psycopg/psycopg) | `3.3.4` | `3.3.5` |\n| [redis](https://github.com/redis/redis-py) | `8.0.1` | `8.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.1` | `7.16.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.6` | `6.1.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.0` | `3.18.1` |\n| [djlint](https://github.com/djlint/djLint) | `1.40.5` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.0` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.21` | `0.16.5` |\n\n\nUpdates `daphne` from 4.2.2 to 4.2.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/daphne/blob/main/CHANGELOG.txt\"\u003edaphne's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.2.3 (2026-07-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e--websocket-max-message-size\u003c/code\u003e and \u003ccode\u003e--websocket-max-frame-size\u003c/code\u003e CLI\nflags to the \u003ccode\u003erunserver\u003c/code\u003e management command for use in development.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/daphne/commit/8a60e56ef8c9b5a4cc4979a3ece6970c73bbd025\"\u003e\u003ccode\u003e8a60e56\u003c/code\u003e\u003c/a\u003e Bumped version and changelog for v4.2.3 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/daphne/commit/389b9a753b165a417c082212f9da015e0cf5fd37\"\u003e\u003ccode\u003e389b9a7\u003c/code\u003e\u003c/a\u003e Add ability to configure websocket message size when running as django dev se...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/daphne/commit/0cd79c253b6995952b0f66c3e8509edc9bd78ad7\"\u003e\u003ccode\u003e0cd79c2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django/daphne/issues/571\"\u003e#571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django/daphne/compare/4.2.2...4.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\u003cbr /\u003e\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\u003cbr /\u003e\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\u003cbr /\u003e\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\u003cbr /\u003e\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\u003cbr /\u003e\nin Django's documentation for recommendations.\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.6 to 2.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/e7fbb538595dde3a4598b4403e60ecca0905fa74\"\u003e\u003ccode\u003ee7fbb53\u003c/code\u003e\u003c/a\u003e Release 2.7. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1438\"\u003e#1438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/9d6b32129dea4c89caa87218a11192503646b9da\"\u003e\u003ccode\u003e9d6b321\u003c/code\u003e\u003c/a\u003e Bumped github actions versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/974b5b7390c0b11698c348128b164990cb6f044b\"\u003e\u003ccode\u003e974b5b7\u003c/code\u003e\u003c/a\u003e Bumped RTD OS and Python versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/5218268f520ca19c665e6f02a49df647eb977af6\"\u003e\u003ccode\u003e5218268\u003c/code\u003e\u003c/a\u003e Confirmed support for Django 6.1. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/847873cf09f0ee96beb38273190860008a6712dd\"\u003e\u003ccode\u003e847873c\u003c/code\u003e\u003c/a\u003e docs: replace 'basestring' with 'str' (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.6...2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `litellm` from 1.91.1 to 1.99.0\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.99.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.99.0\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.99.0/cosign.pub \\\n  ghcr.io/berriai/litellm:v1.99.0\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\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore(typing): drop 1.3k basedpyright errors across 30 Any hotspot files by \u003ca href=\"https://github.com/mateo-berri\"\u003e\u003ccode\u003e@​mateo-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/37073\"\u003eBerriAI/litellm#37073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(proxy): register WebSocket passthrough for OpenAI prefixes by \u003ca href=\"https://github.com/LHMQ878\"\u003e\u003ccode\u003e@​LHMQ878\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36151\"\u003eBerriAI/litellm#36151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(bedrock): report uploaded size in the FileObject returned by managed batch uploads by \u003ca href=\"https://github.com/devin-ai-integration\"\u003e\u003ccode\u003e@​devin-ai-integration\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36392\"\u003eBerriAI/litellm#36392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(batches): support AWS Bedrock batch cancellation via \u003ccode\u003eStopModelInvocationJob\u003c/code\u003e by \u003ca href=\"https://github.com/ArjunPakhan\"\u003e\u003ccode\u003e@​ArjunPakhan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/34087\"\u003eBerriAI/litellm#34087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: Async Rust OCR Bridge and MCP OAuth UI Restore by \u003ca href=\"https://github.com/ArjunPakhan\"\u003e\u003ccode\u003e@​ArjunPakhan\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/31453\"\u003eBerriAI/litellm#31453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(batches): don't crash logging when a completed batch has no output file by \u003ca href=\"https://github.com/MUSE-CODE-SPACE\"\u003e\u003ccode\u003e@​MUSE-CODE-SPACE\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/34067\"\u003eBerriAI/litellm#34067\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(UI): add default model pin to complexity router UI by \u003ca href=\"https://github.com/tin-berri\"\u003e\u003ccode\u003e@​tin-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36615\"\u003eBerriAI/litellm#36615\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(ui): add Lite mixed-provider auto-router preset by \u003ca href=\"https://github.com/tin-berri\"\u003e\u003ccode\u003e@​tin-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/37068\"\u003eBerriAI/litellm#37068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(ui): link key info header to its user, creator, team, and organization by \u003ca href=\"https://github.com/ryan-crabbe-berri\"\u003e\u003ccode\u003e@​ryan-crabbe-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/37187\"\u003eBerriAI/litellm#37187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(guardrails): scan text on /guardrails/apply_guardrail for Azure Content Safety by \u003ca href=\"https://github.com/yucheng-berri\"\u003e\u003ccode\u003e@​yucheng-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36894\"\u003eBerriAI/litellm#36894\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(bedrock): forward LiteLLM identity and metadata into Bedrock requestMetadata by \u003ca href=\"https://github.com/yassin-berriai\"\u003e\u003ccode\u003e@​yassin-berriai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36861\"\u003eBerriAI/litellm#36861\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(azure): rename max_tokens to max_completion_tokens for gpt-5-chat deployments by \u003ca href=\"https://github.com/yassin-berriai\"\u003e\u003ccode\u003e@​yassin-berriai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36857\"\u003eBerriAI/litellm#36857\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(bedrock): preserve cache token usage when invocationMetrics replace the usage block by \u003ca href=\"https://github.com/brian5021\"\u003e\u003ccode\u003e@​brian5021\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36878\"\u003eBerriAI/litellm#36878\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(proxy): registry caches stop per-request tag and end-user Postgres reads in auth by \u003ca href=\"https://github.com/ryan-crabbe-berri\"\u003e\u003ccode\u003e@​ryan-crabbe-berri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36801\"\u003eBerriAI/litellm#36801\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etest(e2e): replay a real tool-search assistant turn back to Bedrock Invoke by \u003ca href=\"https://github.com/yassin-berriai\"\u003e\u003ccode\u003e@​yassin-berriai\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BerriAI/litellm/pull/36856\"\u003eBerriAI/litellm#36856\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/BerriAI/litellm/commit/fa647f742d7baefe8eb1181899d9c81b41559772\"\u003e\u003ccode\u003efa647f7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/39048\"\u003e#39048\u003c/a\u003e from BerriAI/litellm_/docker-build-failure-9f6247\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/5892e30d4254376c77ac17040d27e2270cab65ae\"\u003e\u003ccode\u003e5892e30\u003c/code\u003e\u003c/a\u003e fix(docker): pin apk python to 3.13 in migrations image\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/91f1a5710064452bda834ae6446d891c90c46dd1\"\u003e\u003ccode\u003e91f1a57\u003c/code\u003e\u003c/a\u003e fix(docker): bump wolfi-base for glibc 2.44 and pin apk python to 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/d0c86678ed3c8951a2c47ed1b1fabcf8de65b553\"\u003e\u003ccode\u003ed0c8667\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/38862\"\u003e#38862\u003c/a\u003e from BerriAI/litellm_/litellm-e2e-rc-1-99-0-11cfd8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/da1d292dceeaf8f098ea9955eeaf7e7fb2a74a02\"\u003e\u003ccode\u003eda1d292\u003c/code\u003e\u003c/a\u003e test(e2e): measure the select popup after it settles instead of mid-flight\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/a2aecfea7f2905ed569ccc8d733efcff13c3074c\"\u003e\u003ccode\u003ea2aecfe\u003c/code\u003e\u003c/a\u003e fix(e2e): only the negative fallback assertion needs every replica to agree\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/ab1da05e5987816047f06f396288fee8d673db1c\"\u003e\u003ccode\u003eab1da05\u003c/code\u003e\u003c/a\u003e test(e2e): de-flake the cost-header cache read and the router fallback control\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/141185268450a248cb5bb251da3ac503273a1648\"\u003e\u003ccode\u003e1411852\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/38855\"\u003e#38855\u003c/a\u003e from BerriAI/litellm_/backport-38251-rc-1-99-0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/f0ee067aaa3a6d356a9806a4216dd524916ff231\"\u003e\u003ccode\u003ef0ee067\u003c/code\u003e\u003c/a\u003e fix(anthropic): translate tool_result document blocks in the /v1/messages bridge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BerriAI/litellm/commit/4b281e7892937b9710e5a679d8fa75e8b0d99fac\"\u003e\u003ccode\u003e4b281e7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BerriAI/litellm/issues/38854\"\u003e#38854\u003c/a\u003e from BerriAI/litellm_backport_model_test_dialog_str...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/BerriAI/litellm/compare/v1.91.1...v1.99.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg[binary]` from 3.3.4 to 3.3.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg[binary]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!DataError\u003c/code\u003e messages leaking the literal \u003ccode\u003e{...}\u003c/code\u003e placeholder instead\nof the offending value when loading a pre-year-1 :sql:\u003ccode\u003etimestamp\u003c/code\u003e or a\nmalformed binary :sql:\u003ccode\u003ejsonb\u003c/code\u003e value (:ticket:\u003ccode\u003e[#1372](https://github.com/psycopg/psycopg/issues/1372)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e instead of \u003ccode\u003e!ValueError\u003c/code\u003e when \u003ccode\u003e~psycopg.rows.namedtuple_row\u003c/code\u003e\nreceives duplicate column names (:ticket:\u003ccode\u003e[#1348](https://github.com/psycopg/psycopg/issues/1348)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eRaise \u003ccode\u003e!DataError\u003c/code\u003e on inconsistent copy data (:tickets:\u003ccode\u003e[#1359](https://github.com/psycopg/psycopg/issues/1359), [#1360](https://github.com/psycopg/psycopg/issues/1360)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eHandle client encodings aliases (:ticket:\u003ccode\u003e[#1363](https://github.com/psycopg/psycopg/issues/1363)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix building C extension with Cython 3.3.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/ea542c9534cc9841d50450e0c156b549cc6c805a\"\u003e\u003ccode\u003eea542c9\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8d31e4711c22b206d8863b9397b3b34f5b106e4d\"\u003e\u003ccode\u003e8d31e47\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/268f863e0e8dbdbaf4f10616ebd14ff00edaeb51\"\u003e\u003ccode\u003e268f863\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1370\"\u003e#1370\u003c/a\u003e from Sanjays2402/fix/truncated-binary-copy-error\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/a412fa4d682f035a9cf3c7886a5c95c15c64ba96\"\u003e\u003ccode\u003ea412fa4\u003c/code\u003e\u003c/a\u003e docs: put together different issues fixed around copy parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/f757307068aef06e439cf164915a3781acf483b5\"\u003e\u003ccode\u003ef757307\u003c/code\u003e\u003c/a\u003e fix: clearer error messages according to truncated copy message part\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/b1f17c44096b8fbc90836d9652d083f23c88e28d\"\u003e\u003ccode\u003eb1f17c4\u003c/code\u003e\u003c/a\u003e test: move existing COPY format parsing tests into a single module\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/21eba573f9356276b2a3e0b7c1d86fad03f2872f\"\u003e\u003ccode\u003e21eba57\u003c/code\u003e\u003c/a\u003e test: drop useless parametrization of copy binary parsigh test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/6780e17bcee0b838dedd0aa9c1b6dcc563a50cec\"\u003e\u003ccode\u003e6780e17\u003c/code\u003e\u003c/a\u003e fix(copy): handle truncated binary row headers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f2fcfbf35af4b80a4755fff75fe8b8f5e059193\"\u003e\u003ccode\u003e2f2fcfb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1364\"\u003e#1364\u003c/a\u003e from DylanYoung/fix_client_encoding_aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/ccc351ec3180969d105199012a017240492a43c0\"\u003e\u003ccode\u003eccc351e\u003c/code\u003e\u003c/a\u003e refactor: don't store the encodings raw table as a dict\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.4...3.3.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.1 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreams\u003c/strong\u003e — \u003ccode\u003eMAXCOUNT\u003c/code\u003e / \u003ccode\u003eMAXSIZE\u003c/code\u003e options for \u003ccode\u003eXREAD\u003c/code\u003e and \u003ccode\u003eXREADGROUP\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTime Series\u003c/strong\u003e — \u003ccode\u003eTS.READ\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e), \u003ccode\u003eTS.QUERYLABELS\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e), \u003ccode\u003eTS.NRANGE\u003c/code\u003e / \u003ccode\u003eTS.NREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e),\nand an \u003ccode\u003eexclude_empty\u003c/code\u003e (\u003ccode\u003eEXCLUDEEMPTY\u003c/code\u003e) option for \u003ccode\u003eTS.MRANGE\u003c/code\u003e / \u003ccode\u003eTS.MREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSearch\u003c/strong\u003e — \u003ccode\u003eFT.ALIASLIST\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e) and a \u003ccode\u003eCOLLECT\u003c/code\u003e reducer for aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSentinel\u003c/strong\u003e — replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TS.NRANGE and TS.NREVRANGE support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.READ command support to the timeseries module (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add SDIFFCARD and SUNIONCARD command support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add LMOVEM and BLMOVEM commands for moving multiple list elements (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add async maintenance-notifications support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add COLLECT reducer support to search aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and TS.MREVRANGE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.QUERYLABELS support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Experimental\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add client-side HIMPORT fieldset support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe feature considered unstable and \u003cstrong\u003epublic API might be changed in the future minor version\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: detect closed pooled connection without consuming pending push data (RESP3 + hiredis) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4156\"\u003e#4156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Sentinel pool capacity loss after failover (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4193\"\u003e#4193\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683\"\u003e\u003ccode\u003ee013126\u003c/code\u003e\u003c/a\u003e Testing with 8.10 GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4227\"\u003e#4227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1\"\u003e\u003ccode\u003e059d1e9\u003c/code\u003e\u003c/a\u003e Fixed TS.NRANGE commands to correctly apply aggregators (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4225\"\u003e#4225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f\"\u003e\u003ccode\u003ed486a0a\u003c/code\u003e\u003c/a\u003e Fix FIELDNAME alias dropping first character of un-prefixed fields (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4224\"\u003e#4224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2\"\u003e\u003ccode\u003efb93104\u003c/code\u003e\u003c/a\u003e feat: add client-side HIMPORT fieldset support for standalone and cluster cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9\"\u003e\u003ccode\u003e9197609\u003c/code\u003e\u003c/a\u003e Fix lat/lon swap in search querystring geo() helper (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb\"\u003e\u003ccode\u003e14714a0\u003c/code\u003e\u003c/a\u003e fix: Fixed double decoding issue with unquote() (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a\"\u003e\u003ccode\u003e227280a\u003c/code\u003e\u003c/a\u003e Update lib version to 8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056\"\u003e\u003ccode\u003e88d16d0\u003c/code\u003e\u003c/a\u003e Decode ACL LOG string values on the default RESP3 legacy callback (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4201\"\u003e#4201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76\"\u003e\u003ccode\u003e599fd75\u003c/code\u003e\u003c/a\u003e feat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7\"\u003e\u003ccode\u003e71e275e\u003c/code\u003e\u003c/a\u003e test: add VectorField RERANK serialization tests for sync and async search (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v8.0.1...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.1 to 7.16.0\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.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\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.15.2\"\u003ecoverage 7.15.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.15.2\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.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\nreach the subprocesses.  The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as\nthe entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e\nslipped through and failed later with \u0026quot;Can't combine statement coverage\ndata with branch data\u0026quot;.  Each named concurrency library is now properly\nconsidered (\u003ccode\u003epull 2270\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any\nmeasured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on\nWindows.  The original extension is now restored on the annotated copy (\u003ccode\u003epull 2265\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2261: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003ecoveragepy/coveragepy#2261\u003c/a\u003e\n.. _pull 2262: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003ecoveragepy/coveragepy#2262\u003c/a\u003e\n.. _pull 2263: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003ecoveragepy/coveragepy#2263\u003c/a\u003e\n.. _pull 2265: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003ecoveragepy/coveragepy#2265\u003c/a\u003e\n.. _issue 2266: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003ecoveragepy/coveragepy#2266\u003c/a\u003e\n.. _pull 2268: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003ecoveragepy/coveragepy#2268\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3e9fc1653ef31089d02eb7618b9d9ac9414378fc\"\u003e\u003ccode\u003e3e9fc16\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/38be8d13afee6b6525492fc375c739cdfb675e9b\"\u003e\u003ccode\u003e38be8d1\u003c/code\u003e\u003c/a\u003e build: control check-manifest explicitly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8eb1266ead5c6d356d3437637a509ff86b566253\"\u003e\u003ccode\u003e8eb1266\u003c/code\u003e\u003c/a\u003e docs(build): no longer commit sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1a8b3fa57d56bb70bad62c93d224c18a0fbaae6f\"\u003e\u003ccode\u003e1a8b3fa\u003c/code\u003e\u003c/a\u003e docs: remove sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/aeaa79b812d1bc637ebb5582ab12c076e192c87e\"\u003e\u003ccode\u003eaeaa79b\u003c/code\u003e\u003c/a\u003e docs: linklint is now sphinx-linklint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d5eaf3f6d38f58746bc69e87e64c0b0277a9077d\"\u003e\u003ccode\u003ed5eaf3f\u003c/code\u003e\u003c/a\u003e test: a branchless way to re-add extensions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/57e52fd431cecc1ca03de2c5b1288e0b330c2ef4\"\u003e\u003ccode\u003e57e52fd\u003c/code\u003e\u003c/a\u003e docs: adjust CHANGES for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b9d304d77f7ce3d55df3a46339dbc56d1f49df58\"\u003e\u003ccode\u003eb9d304d\u003c/code\u003e\u003c/a\u003e fix: check for multiprocessing in a --concurrency list (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a6ef9284afbc7d1f392821864b64ddbda0051fc5\"\u003e\u003ccode\u003ea6ef928\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/070461fcfde0437b5b778c2c2a72e433a0a391aa\"\u003e\u003ccode\u003e070461f\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2271\"\u003e#2271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.1...7.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ek...\n\n_Description has been truncated_","html_url":"https://github.com/KScaesar/MaiAgent2026/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/KScaesar%2FMaiAgent2026/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/packages"}},{"old_version":"3.17.1","new_version":"3.18.1","update_type":"minor","path":null,"pr_created_at":"2026-09-04T01:56:54.000Z","version_change":"3.17.1 → 3.18.1","issue":{"uuid":"5343309561","node_id":"PR_kwDOOke-mM8AAAABCI3CCw","number":22,"state":"closed","title":"Bump the python group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-07T01:58:05.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-04T01:56:54.000Z","updated_at":"2026-09-07T01:58:07.000Z","time_to_close":259271,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":15,"packages":[{"name":"django","old_version":"6.0.7","new_version":"6.1","repository_url":"https://github.com/django/django"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"gevent","old_version":"26.7.0","new_version":"26.8.0","repository_url":"https://github.com/gevent/gevent"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"redis","old_version":"8.0.1","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"sentry-sdk","old_version":"2.66.1","new_version":"2.68.1","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"django-stubs","old_version":"6.0.7","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.15.22","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.7` | `6.1` |\n| [django-anymail[mailgun]](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [gevent](https://github.com/gevent/gevent) | `26.7.0` | `26.8.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.2.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [redis](https://github.com/redis/redis-py) | `8.0.1` | `8.1.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.66.1` | `2.68.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.7` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.1` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.22` | `0.16.5` |\n\n\nUpdates `django` from 6.0.7 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fe0a859f537d4238cf49fca39073513206f83122\"\u003e\u003ccode\u003efe0a859\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/62770454c1beb3e9b0ef1f7c35c5670b4df935d8\"\u003e\u003ccode\u003e6277045\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated man page for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fc78c5cdbb621dff3893c109433022896022fde1\"\u003e\u003ccode\u003efc78c5c\u003c/code\u003e\u003c/a\u003e [6.1.x] Finalized release notes for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c58d86162cd59602df96f0e716cae9849acb3ddb\"\u003e\u003ccode\u003ec58d861\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dc1b8deff467010aaae71471ae12ebc82188a8a3\"\u003e\u003ccode\u003edc1b8de\u003c/code\u003e\u003c/a\u003e [6.1.x] Added missing lang override in translation fetching helper for Serbia...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1f5bf635df6f0919191f649aef29acb3063978f2\"\u003e\u003ccode\u003e1f5bf63\u003c/code\u003e\u003c/a\u003e [6.1.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36735\"\u003e#36735\u003c/a\u003e -- Added DatabaseFeatures.supports_uuid4_function_in_defa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/809998448b45284aa6152112feb46d927b209019\"\u003e\u003ccode\u003e8099984\u003c/code\u003e\u003c/a\u003e [6.1.x] Added CVE-2026-15307, CVE-2026-15337, CVE-2026-15830, and CVE-2026-15...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a\"\u003e\u003ccode\u003e5a260d3\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15920 -- Made display_for_field() validate URLs before...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/9e4a3f186b6b07b483bfd9195ea06734663fcd06\"\u003e\u003ccode\u003e9e4a3f1\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15830 -- Mitigated potential DoS via nested geometry c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5b3523d29be25948e1dd90b3863a002f00fc865f\"\u003e\u003ccode\u003e5b3523d\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15337 -- Mitigated potential DoS in check_for_language().\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.7...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail[mailgun]` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail[mailgun]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail[mailgun]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\nin Django's documentation for recommendations.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gevent` from 26.7.0 to 26.8.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/4f684105f537eeceb9988adbfe81420a1f28d9a0\"\u003e\u003ccode\u003e4f68410\u003c/code\u003e\u003c/a\u003e Preparing release 26.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/10489c56d3b03caae5be00bc46996a0180ab3d8c\"\u003e\u003ccode\u003e10489c5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gevent/gevent/issues/2199\"\u003e#2199\u003c/a\u003e from florentinl/florentin.labelle/fix/hubless-thread...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/d4f5f098c5d6655e9700336ed6f15e924a7fd142\"\u003e\u003ccode\u003ed4f5f09\u003c/code\u003e\u003c/a\u003e Document the args[0] cross-thread wakeup mechanism\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/9b049915e8e308e4286f922fd51baf9d92187a88\"\u003e\u003ccode\u003e9b04991\u003c/code\u003e\u003c/a\u003e Run test_cross_thread_callback_can_run_before_scheduling_returns on all backends\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/ce7996d7048d3555be2869cc6172d47e332efb58\"\u003e\u003ccode\u003ece7996d\u003c/code\u003e\u003c/a\u003e Address review comments: document cross-thread race, drop unneeded cpdef\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/5288a6eec90ca63f9658b44d67f14fbdfe07259d\"\u003e\u003ccode\u003e5288a6e\u003c/code\u003e\u003c/a\u003e Add missing \u003ca href=\"https://github.com/ignores\"\u003e\u003ccode\u003e@​ignores\u003c/code\u003e\u003c/a\u003e_leakcheck to new cross-thread test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/c72eda095d99e82ca0c767afe56baecbc4c131a2\"\u003e\u003ccode\u003ec72eda0\u003c/code\u003e\u003c/a\u003e Fix cross-thread notifier scheduling race\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/908b93730ffef5cee0594e4482b3a43b476c43a4\"\u003e\u003ccode\u003e908b937\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gevent/gevent/issues/2195\"\u003e#2195\u003c/a\u003e from ddorian/fix-popen-exit-reentrant-close\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/b58795f8a659e767b0317cd199d68f273b742167\"\u003e\u003ccode\u003eb58795f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gevent/gevent/issues/2191\"\u003e#2191\u003c/a\u003e from ddorian/fix-1865-global-shutdown-lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gevent/gevent/commit/ede2e71a859198b96a22f4c683fa210e750406e6\"\u003e\u003ccode\u003eede2e71\u003c/code\u003e\u003c/a\u003e Always use 'versionchanged:: NEXT' to let the release machinery fill in the c...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gevent/gevent/compare/26.7.0...26.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.1 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreams\u003c/strong\u003e — \u003ccode\u003eMAXCOUNT\u003c/code\u003e / \u003ccode\u003eMAXSIZE\u003c/code\u003e options for \u003ccode\u003eXREAD\u003c/code\u003e and \u003ccode\u003eXREADGROUP\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTime Series\u003c/strong\u003e — \u003ccode\u003eTS.READ\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e), \u003ccode\u003eTS.QUERYLABELS\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e), \u003ccode\u003eTS.NRANGE\u003c/code\u003e / \u003ccode\u003eTS.NREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e),\nand an \u003ccode\u003eexclude_empty\u003c/code\u003e (\u003ccode\u003eEXCLUDEEMPTY\u003c/code\u003e) option for \u003ccode\u003eTS.MRANGE\u003c/code\u003e / \u003ccode\u003eTS.MREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSearch\u003c/strong\u003e — \u003ccode\u003eFT.ALIASLIST\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e) and a \u003ccode\u003eCOLLECT\u003c/code\u003e reducer for aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSentinel\u003c/strong\u003e — replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TS.NRANGE and TS.NREVRANGE support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.READ command support to the timeseries module (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add SDIFFCARD and SUNIONCARD command support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add LMOVEM and BLMOVEM commands for moving multiple list elements (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add async maintenance-notifications support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add COLLECT reducer support to search aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and TS.MREVRANGE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.QUERYLABELS support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Experimental\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add client-side HIMPORT fieldset support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe feature considered unstable and \u003cstrong\u003epublic API might be changed in the future minor version\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: detect closed pooled connection without consuming pending push data (RESP3 + hiredis) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4156\"\u003e#4156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Sentinel pool capacity loss after failover (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4193\"\u003e#4193\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683\"\u003e\u003ccode\u003ee013126\u003c/code\u003e\u003c/a\u003e Testing with 8.10 GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4227\"\u003e#4227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1\"\u003e\u003ccode\u003e059d1e9\u003c/code\u003e\u003c/a\u003e Fixed TS.NRANGE commands to correctly apply aggregators (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4225\"\u003e#4225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f\"\u003e\u003ccode\u003ed486a0a\u003c/code\u003e\u003c/a\u003e Fix FIELDNAME alias dropping first character of un-prefixed fields (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4224\"\u003e#4224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2\"\u003e\u003ccode\u003efb93104\u003c/code\u003e\u003c/a\u003e feat: add client-side HIMPORT fieldset support for standalone and cluster cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9\"\u003e\u003ccode\u003e9197609\u003c/code\u003e\u003c/a\u003e Fix lat/lon swap in search querystring geo() helper (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb\"\u003e\u003ccode\u003e14714a0\u003c/code\u003e\u003c/a\u003e fix: Fixed double decoding issue with unquote() (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a\"\u003e\u003ccode\u003e227280a\u003c/code\u003e\u003c/a\u003e Update lib version to 8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056\"\u003e\u003ccode\u003e88d16d0\u003c/code\u003e\u003c/a\u003e Decode ACL LOG string values on the default RESP3 legacy callback (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4201\"\u003e#4201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76\"\u003e\u003ccode\u003e599fd75\u003c/code\u003e\u003c/a\u003e feat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7\"\u003e\u003ccode\u003e71e275e\u003c/code\u003e\u003c/a\u003e test: add VectorField RERANK serialization tests for sync and async search (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v8.0.1...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.66.1 to 2.68.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.68.1\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003eenable_logs\u003c/code\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e(logs) Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7237\"\u003e#7237\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e, our logging integrations for the standard library logging module as well as Loguru will auto-collect logs and send them to Sentry as Sentry logs by default, preserving old behavior. Turning automatic collection off for a specific integration can still be achieved using the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration option.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.logging import LoggingIntegration\nfrom sentry_sdk.integrations.loguru import LoguruIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\nenable_logs=True,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nLoggingIntegration(capture_sentry_logs=True),\u003cbr /\u003e\nLoguruIntegration(capture_sentry_logs=False),\u003cbr /\u003e\n],\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003ePlease note that the \u003ccode\u003eenable_logs\u003c/code\u003e option is deprecated and will be removed in the next major release. The \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API now works regardless of it, and auto-collection can be opted into via the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration-level options, which are \u003ccode\u003eFalse\u003c/code\u003e by default, unless you have \u003ccode\u003eenable_logs=True\u003c/code\u003e. We've added this compatibility layer to make the transition to a \u003ccode\u003eenable_logs\u003c/code\u003e-free world easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(django) Add \u003ccode\u003efailed_request_status_codes\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7140\"\u003e#7140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7207\"\u003e#7207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(google_genai) Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7210\"\u003e#7210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Use \u003ccode\u003egen_ai.tool.definitions\u003c/code\u003e attribute when data collection is enabled by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7204\"\u003e#7204\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph,huggingface_hub) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7208\"\u003e#7208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7205\"\u003e#7205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai_agents) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7209\"\u003e#7209\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.68.0\u003c/h2\u003e\n\u003ch3\u003eImportant\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWe're making \u003ccode\u003eenable_logs\u003c/code\u003e and \u003ccode\u003eenable_metrics\u003c/code\u003e no-op with this release (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7177\"\u003e#7177\u003c/a\u003e), and they'll be dropped in the next major.\u003c/p\u003e\n\u003cp\u003ePreviously, \u003ccode\u003eenable_logs\u003c/code\u003e also controlled automatic logs collection from the logging and Loguru integrations. These integrations now get an integration-level \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e boolean option to allow for more control over the auto-collection. These options are \u003ccode\u003eFalse\u003c/code\u003e by default, i.e., \u003cstrong\u003enothing is auto-collected without your explicit opt-in\u003c/strong\u003e.\u003c/p\u003e\n\u003ch4\u003eAction Needed\u003c/h4\u003e\n\u003cp\u003eIf you had \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf you were using the \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API, no action necessary, the API will just work.\u003c/li\u003e\n\u003cli\u003eIf you were auto-collecting logs from either \u003ccode\u003eLoggingIntegration\u003c/code\u003e or \u003ccode\u003eLoguruIntegration\u003c/code\u003e, the auto-collection \u003cstrong\u003ewill be turned off in this release\u003c/strong\u003e. You can switch auto-collection on explicitly with:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.logging import LoggingIntegration\nfrom sentry_sdk.integrations.loguru import LoguruIntegration\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.68.1\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003eenable_logs\u003c/code\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e(logs) Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7237\"\u003e#7237\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e, our logging integrations for the standard library logging module as well as Loguru will auto-collect logs and send them to Sentry as Sentry logs by default, preserving old behavior. Turning automatic collection off for a specific integration can still be achieved using the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration option.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.logging import LoggingIntegration\nfrom sentry_sdk.integrations.loguru import LoguruIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\nenable_logs=True,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nLoggingIntegration(capture_sentry_logs=True),\u003cbr /\u003e\nLoguruIntegration(capture_sentry_logs=False),\u003cbr /\u003e\n],\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003ePlease note that the \u003ccode\u003eenable_logs\u003c/code\u003e option is deprecated and will be removed in the next major release. The \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API now works regardless of it, and auto-collection can be opted into via the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration-level options, which are \u003ccode\u003eFalse\u003c/code\u003e by default, unless you have \u003ccode\u003eenable_logs=True\u003c/code\u003e. We've added this compatibility layer to make the transition to a \u003ccode\u003eenable_logs\u003c/code\u003e-free world easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(django) Add \u003ccode\u003efailed_request_status_codes\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7140\"\u003e#7140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7207\"\u003e#7207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(google_genai) Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7210\"\u003e#7210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Use \u003ccode\u003egen_ai.tool.definitions\u003c/code\u003e attribute when data collection is enabled by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7204\"\u003e#7204\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph,huggingface_hub) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7208\"\u003e#7208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7205\"\u003e#7205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai_agents) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7209\"\u003e#7209\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.68.0\u003c/h2\u003e\n\u003ch3\u003eImportant\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWe're making \u003ccode\u003eenable_logs\u003c/code\u003e and \u003ccode\u003eenable_metrics\u003c/code\u003e no-op with this release (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7177\"\u003e#7177\u003c/a\u003e), and they'll be dropped in the next major.\u003c/p\u003e\n\u003cp\u003ePreviously, \u003ccode\u003eenable_logs\u003c/code\u003e also controlled automatic logs collection from the logging and Loguru integrations. These integrations now get an integration-level \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e boolean option to allow for more control over the auto-collection. These options are \u003ccode\u003eFalse\u003c/code\u003e by default, i.e., \u003cstrong\u003enothing is auto-collected without your explicit opt-in\u003c/strong\u003e.\u003c/p\u003e\n\u003ch4\u003eAction Needed\u003c/h4\u003e\n\u003cp\u003eIf you had \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eIf you were using the \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API, no action necessary, the API will just work.\u003c/li\u003e\n\u003cli\u003eIf you were auto-collecting logs from either \u003ccode\u003eLoggingIntegration\u003c/code\u003e or \u003ccode\u003eLoguruIntegration\u003c/code\u003e, the auto-collection \u003cstrong\u003ewill be turned off in this release\u003c/strong\u003e. You can switch auto-collection on explicitly with:\u003c/li\u003e\n\u003c/ul\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e\u003c/code\u003e\u003c/pre\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/getsentry/sentry-python/commit/98f7d91809e71ed5a7b827f8b4f9acfc7ac1bae0\"\u003e\u003ccode\u003e98f7d91\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/8f886ff9b784da7c45f51a0dfbe42c7838e68c42\"\u003e\u003ccode\u003e8f886ff\u003c/code\u003e\u003c/a\u003e release: 2.68.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/df4ec02a1b4bfc50f6218908fe497dd0ec566801\"\u003e\u003ccode\u003edf4ec02\u003c/code\u003e\u003c/a\u003e fix(logs): Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e32031816394208bce58c050ff563bfde8d7b228\"\u003e\u003ccode\u003ee320318\u003c/code\u003e\u003c/a\u003e test(pyramid): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7218\"\u003e#7218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7b8a3857122d0a9c69aca784bd730bb0dcf729f6\"\u003e\u003ccode\u003e7b8a385\u003c/code\u003e\u003c/a\u003e test(bottle): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7217\"\u003e#7217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/cbcadc9cba1295fb78a90a2823d6fbd36bce1ba3\"\u003e\u003ccode\u003ecbcadc9\u003c/code\u003e\u003c/a\u003e test(sanic): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7216\"\u003e#7216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e42c798e0cd549b42bc748a53c7e16c2763ec427\"\u003e\u003ccode\u003ee42c798\u003c/code\u003e\u003c/a\u003e feat(tornado): Gate request body collection on data_collection option (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7215\"\u003e#7215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/d05bb60e0d9ecc66b2cc8b62ba0cfc0eaa343088\"\u003e\u003ccode\u003ed05bb60\u003c/code\u003e\u003c/a\u003e test(django): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7213\"\u003e#7213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/bcce67b1a6869229a0c74bcd93e4b8bcfde5cc7a\"\u003e\u003ccode\u003ebcce67b\u003c/code\u003e\u003c/a\u003e feat(wsgi): Gate request body collection on data_collection option (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7212\"\u003e#7212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/41220c4adba83c307aabae28057db830808adb3a\"\u003e\u003ccode\u003e41220c4\u003c/code\u003e\u003c/a\u003e fix(google_genai): Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, no...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.66.1...2.68.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.7 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\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/typeddjango/django-stubs/commit/2ec3fd3ce48e7a92cbe09a114d512dcea50571f7\"\u003e\u003ccode\u003e2ec3fd3\u003c/code\u003e\u003c/a\u003e Version 6.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5868773c9fa5ba236c2cc263799a02acc67f7c0b\"\u003e\u003ccode\u003e5868773\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.69.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3588\"\u003e#3588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e888491e34e5b9073f1c09eb84e91ed7ce36c775\"\u003e\u003ccode\u003ee888491\u003c/code\u003e\u003c/a\u003e Support custom arguments in queryset update methods (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3586\"\u003e#3586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ffd15cac28c39690acd98c3f9af9370f9fadedce\"\u003e\u003ccode\u003effd15ca\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3583\"\u003e#3583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1af6dcf52f19837fdc47b26350d351dea0a139c1\"\u003e\u003ccode\u003e1af6dcf\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.68.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/709e864c79e03239be2234457f59eb66ce69e3c7\"\u003e\u003ccode\u003e709e864\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.69 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5da937c127b581501b5707b547d861b46d8af41c\"\u003e\u003ccode\u003e5da937c\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.68 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3579\"\u003e#3579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7afd2da77ed93d0b3164ea4d203648a6c972f161\"\u003e\u003ccode\u003e7afd2da\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.67 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/07e22f2e4918163d1f3aa1137142cf281b5fbcb1\"\u003e\u003ccode\u003e07e22f2\u003c/code\u003e\u003c/a\u003e Explicit through default manager (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3576\"\u003e#3576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/db47c3b32275b6d6abef915303fd80fde3dd59da\"\u003e\u003ccode\u003edb47c3b\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.17 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.7...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.31.1 to 1.32.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.32.0 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#681](https://github.com/adamchainz/django-upgrade/issues/681) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/681\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eutils_text \u0026lt;utils_text\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003eunescape_entities()\u003c/code\u003e calls with \u003ccode\u003ehtml.unescape()\u003c/code\u003e.\nPreviously it incorrectly used \u003ccode\u003ehtml.escape()\u003c/code\u003e, which performs the inverse operation.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#684](https://github.com/adamchainz/django-upgrade/issues/684) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/684\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer crash on empty \u003ccode\u003eindex_together\u003c/code\u003e declarations.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#685](https://github.com/adamchainz/django-upgrade/issues/685) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/685\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to not add a duplicate \u003ccode\u003eindexes\u003c/code\u003e declaration when the existing one is not a list or tuple literal.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#686](https://github.com/adamchainz/django-upgrade/issues/686) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/686\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to add a missing comma when extending a multiline \u003ccode\u003eindexes\u003c/code\u003e list that has no trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#687](https://github.com/adamchainz/django-upgrade/issues/687) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/687\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to keep an empty \u003ccode\u003eindexes\u003c/code\u003e tuple a tuple when extending it with a single index.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#716](https://github.com/adamchainz/django-upgrade/issues/716) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/716\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eformat_html \u0026lt;format_html\u0026gt;\u003c/code\u003e fixer to skip calls with a parenthesized argument, where removing the \u003ccode\u003e.format()\u003c/code\u003e call would create a tuple.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#717](https://github.com/adamchainz/django-upgrade/issues/717) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/717\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer to add a missing comma before \u003ccode\u003enull=True\u003c/code\u003e when the final argument contains commas within brackets.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#688](https://github.com/adamchainz/django-upgrade/issues/688) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/688\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix fixers that modify call arguments to not treat a comment inside otherwise empty parentheses as an argument, which made the :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer produce invalid syntax.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#718](https://github.com/adamchainz/django-upgrade/issues/718) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/718\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to avoid a double comma when the existing \u003ccode\u003eheaders=\u003c/code\u003e dict has a trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#689](https://github.com/adamchainz/django-upgrade/issues/689) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/689\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to insert converted headers at the start of an existing \u003ccode\u003eheaders=\u003c/code\u003e dict.\nDjango gives \u003ccode\u003eheaders=\u003c/code\u003e entries precedence over \u003ccode\u003eHTTP_\u003c/code\u003e arguments, and the last duplicate key wins in a dict literal, so appending converted entries at the end previously flipped which value took effect.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#723](https://github.com/adamchainz/django-upgrade/issues/723) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/723\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etestcase_databases \u0026lt;testcase_databases\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003emulti_db = False\u003c/code\u003e to \u003ccode\u003edatabases = [\u0026quot;default\u0026quot;]\u003c/code\u003e rather than \u003ccode\u003edatabases = []\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/423ab5081e037d3c692113d654d49ea9e3ee0066\"\u003e\u003ccode\u003e423ab50\u003c/code\u003e\u003c/a\u003e Version 1.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7b1224a970289729eb50a1fffca04844a8c1ab1f\"\u003e\u003ccode\u003e7b1224a\u003c/code\u003e\u003c/a\u003e Tidy changelog (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/63607890eb3090bded91c6432b43948a1757bd1e\"\u003e\u003ccode\u003e6360789\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eforms_model_multiple_choice_field\u003c/code\u003e corrupting concatenated keys (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/02a46831ceb213421761f312e1368fa7b7e796d9\"\u003e\u003ccode\u003e02a4683\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etestcase_databases\u003c/code\u003e mapping of \u003ccode\u003emulti_db = False\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/bc85eb958b63b752cbd7454d6378e51ca50d891d\"\u003e\u003ccode\u003ebc85eb9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_decorators\u003c/code\u003e hoisting values above their definitions (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/4eb5abf3734ba10c96dd53abdf98e50c78c4adae\"\u003e\u003ccode\u003e4eb5abf\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_register\u003c/code\u003e referencing models defined after the admin class (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d782084a4fe43286d6b4b2d11676efad0a1356cb\"\u003e\u003ccode\u003ed782084\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003esettings_storages\u003c/code\u003e erasing settings referenced elsewhere (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/2f3eb7571f87ae8c62389ac8f977935f81fbe58e\"\u003e\u003ccode\u003e2f3eb75\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etest_http_headers\u003c/code\u003e precedence when merging into \u003ccode\u003eheaders=\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/723\"\u003e#723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d750615a98098ff0c44477041932a04089d5aa47\"\u003e\u003ccode\u003ed750615\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003estringagg\u003c/code\u003e moving import despite bare \u003ccode\u003eStringAgg\u003c/code\u003e references (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/722\"\u003e#722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/49cb8b9c2297d329a8f858beb54fb34e7274830a\"\u003e\u003ccode\u003e49cb8b9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eutils_timezone\u003c/code\u003e matching aliased \u003ccode\u003eutc\u003c/code\u003e imports (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/720\"\u003e#720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/django-upgrade/compare/1.31.1...1.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframe...\n\n_Description has been truncated_","html_url":"https://github.com/mpeyfuss/drf-template/pull/22","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mpeyfuss%2Fdrf-template/issues/22","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/22/packages"}},{"old_version":"3.18.0","new_version":"3.18.1","update_type":"patch","path":null,"pr_created_at":"2026-09-02T03:58:39.000Z","version_change":"3.18.0 → 3.18.1","issue":{"uuid":"5319545947","node_id":"PR_kwDOUK975c8AAAABB12lLQ","number":6,"state":"closed","title":"Bump the python group with 6 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T04:00:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-02T03:58:39.000Z","updated_at":"2026-09-04T04:00:28.000Z","time_to_close":172907,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":6,"packages":[{"name":"gunicorn","old_version":"26.1.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"sentry-sdk","old_version":"2.68.0","new_version":"2.68.1","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"uvicorn","old_version":"0.52.3","new_version":"0.52.4"},{"name":"coverage","old_version":"7.15.4","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"djangorestframework-stubs","old_version":"3.18.0","new_version":"3.18.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.16.3","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 6 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.1.0` | `26.2.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.68.0` | `2.68.1` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.52.3` | `0.52.4` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.4` | `7.16.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.18.0` | `3.18.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.3` | `0.16.5` |\n\nUpdates `gunicorn` from 26.1.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.1.0...26.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.68.0 to 2.68.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.68.1\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003eenable_logs\u003c/code\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e(logs) Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7237\"\u003e#7237\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e, our logging integrations for the standard library logging module as well as Loguru will auto-collect logs and send them to Sentry as Sentry logs by default, preserving old behavior. Turning automatic collection off for a specific integration can still be achieved using the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration option.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.logging import LoggingIntegration\nfrom sentry_sdk.integrations.loguru import LoguruIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\nenable_logs=True,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nLoggingIntegration(capture_sentry_logs=True),\u003cbr /\u003e\nLoguruIntegration(capture_sentry_logs=False),\u003cbr /\u003e\n],\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003ePlease note that the \u003ccode\u003eenable_logs\u003c/code\u003e option is deprecated and will be removed in the next major release. The \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API now works regardless of it, and auto-collection can be opted into via the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration-level options, which are \u003ccode\u003eFalse\u003c/code\u003e by default, unless you have \u003ccode\u003eenable_logs=True\u003c/code\u003e. We've added this compatibility layer to make the transition to a \u003ccode\u003eenable_logs\u003c/code\u003e-free world easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(django) Add \u003ccode\u003efailed_request_status_codes\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7140\"\u003e#7140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7207\"\u003e#7207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(google_genai) Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7210\"\u003e#7210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Use \u003ccode\u003egen_ai.tool.definitions\u003c/code\u003e attribute when data collection is enabled by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7204\"\u003e#7204\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph,huggingface_hub) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7208\"\u003e#7208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7205\"\u003e#7205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai_agents) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7209\"\u003e#7209\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/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.68.1\u003c/h2\u003e\n\u003ch3\u003e\u003ccode\u003eenable_logs\u003c/code\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e(logs) Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7237\"\u003e#7237\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eIf you have \u003ccode\u003eenable_logs\u003c/code\u003e set to \u003ccode\u003eTrue\u003c/code\u003e, our logging integrations for the standard library logging module as well as Loguru will auto-collect logs and send them to Sentry as Sentry logs by default, preserving old behavior. Turning automatic collection off for a specific integration can still be achieved using the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration option.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\nfrom sentry_sdk.integrations.logging import LoggingIntegration\nfrom sentry_sdk.integrations.loguru import LoguruIntegration\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\nenable_logs=True,\u003cbr /\u003e\nintegrations=[\u003cbr /\u003e\nLoggingIntegration(capture_sentry_logs=True),\u003cbr /\u003e\nLoguruIntegration(capture_sentry_logs=False),\u003cbr /\u003e\n],\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003ePlease note that the \u003ccode\u003eenable_logs\u003c/code\u003e option is deprecated and will be removed in the next major release. The \u003ccode\u003esentry_sdk.logger.X\u003c/code\u003e API now works regardless of it, and auto-collection can be opted into via the \u003ccode\u003ecapture_sentry_logs\u003c/code\u003e integration-level options, which are \u003ccode\u003eFalse\u003c/code\u003e by default, unless you have \u003ccode\u003eenable_logs=True\u003c/code\u003e. We've added this compatibility layer to make the transition to a \u003ccode\u003eenable_logs\u003c/code\u003e-free world easier.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(django) Add \u003ccode\u003efailed_request_status_codes\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7140\"\u003e#7140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7207\"\u003e#7207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(google_genai) Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7210\"\u003e#7210\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Use \u003ccode\u003egen_ai.tool.definitions\u003c/code\u003e attribute when data collection is enabled by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7204\"\u003e#7204\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph,huggingface_hub) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7208\"\u003e#7208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7205\"\u003e#7205\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(openai_agents) Gate \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, not inputs by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/7209\"\u003e#7209\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/getsentry/sentry-python/commit/98f7d91809e71ed5a7b827f8b4f9acfc7ac1bae0\"\u003e\u003ccode\u003e98f7d91\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/8f886ff9b784da7c45f51a0dfbe42c7838e68c42\"\u003e\u003ccode\u003e8f886ff\u003c/code\u003e\u003c/a\u003e release: 2.68.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/df4ec02a1b4bfc50f6218908fe497dd0ec566801\"\u003e\u003ccode\u003edf4ec02\u003c/code\u003e\u003c/a\u003e fix(logs): Don't stop sending auto-collected logs when \u003ccode\u003eenable_logs=True\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e32031816394208bce58c050ff563bfde8d7b228\"\u003e\u003ccode\u003ee320318\u003c/code\u003e\u003c/a\u003e test(pyramid): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7218\"\u003e#7218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7b8a3857122d0a9c69aca784bd730bb0dcf729f6\"\u003e\u003ccode\u003e7b8a385\u003c/code\u003e\u003c/a\u003e test(bottle): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7217\"\u003e#7217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/cbcadc9cba1295fb78a90a2823d6fbd36bce1ba3\"\u003e\u003ccode\u003ecbcadc9\u003c/code\u003e\u003c/a\u003e test(sanic): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7216\"\u003e#7216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e42c798e0cd549b42bc748a53c7e16c2763ec427\"\u003e\u003ccode\u003ee42c798\u003c/code\u003e\u003c/a\u003e feat(tornado): Gate request body collection on data_collection option (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7215\"\u003e#7215\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/d05bb60e0d9ecc66b2cc8b62ba0cfc0eaa343088\"\u003e\u003ccode\u003ed05bb60\u003c/code\u003e\u003c/a\u003e test(django): Add tests for data_collection gating of request body (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7213\"\u003e#7213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/bcce67b1a6869229a0c74bcd93e4b8bcfde5cc7a\"\u003e\u003ccode\u003ebcce67b\u003c/code\u003e\u003c/a\u003e feat(wsgi): Gate request body collection on data_collection option (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/7212\"\u003e#7212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/41220c4adba83c307aabae28057db830808adb3a\"\u003e\u003ccode\u003e41220c4\u003c/code\u003e\u003c/a\u003e fix(google_genai): Gate streaming \u003ccode\u003egen_ai.response.tool_calls\u003c/code\u003e on outputs, no...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.68.0...2.68.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.52.3 to 0.52.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\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.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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.4 to 7.16.0\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.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\u003c/blockquote\u003e\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.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\nreach the subprocesses.  The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as\nthe entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e\nslipped through and failed later with \u0026quot;Can't combine statement coverage\ndata with branch data\u0026quot;.  Each named concurrency library is now properly\nconsidered (\u003ccode\u003epull 2270\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any\nmeasured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on\nWindows.  The original extension is now restored on the annotated copy (\u003ccode\u003epull 2265\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2261: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003ecoveragepy/coveragepy#2261\u003c/a\u003e\n.. _pull 2262: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003ecoveragepy/coveragepy#2262\u003c/a\u003e\n.. _pull 2263: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003ecoveragepy/coveragepy#2263\u003c/a\u003e\n.. _pull 2265: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003ecoveragepy/coveragepy#2265\u003c/a\u003e\n.. _issue 2266: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003ecoveragepy/coveragepy#2266\u003c/a\u003e\n.. _pull 2268: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003ecoveragepy/coveragepy#2268\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3e9fc1653ef31089d02eb7618b9d9ac9414378fc\"\u003e\u003ccode\u003e3e9fc16\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/38be8d13afee6b6525492fc375c739cdfb675e9b\"\u003e\u003ccode\u003e38be8d1\u003c/code\u003e\u003c/a\u003e build: control check-manifest explicitly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8eb1266ead5c6d356d3437637a509ff86b566253\"\u003e\u003ccode\u003e8eb1266\u003c/code\u003e\u003c/a\u003e docs(build): no longer commit sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1a8b3fa57d56bb70bad62c93d224c18a0fbaae6f\"\u003e\u003ccode\u003e1a8b3fa\u003c/code\u003e\u003c/a\u003e docs: remove sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/aeaa79b812d1bc637ebb5582ab12c076e192c87e\"\u003e\u003ccode\u003eaeaa79b\u003c/code\u003e\u003c/a\u003e docs: linklint is now sphinx-linklint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d5eaf3f6d38f58746bc69e87e64c0b0277a9077d\"\u003e\u003ccode\u003ed5eaf3f\u003c/code\u003e\u003c/a\u003e test: a branchless way to re-add extensions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/57e52fd431cecc1ca03de2c5b1288e0b330c2ef4\"\u003e\u003ccode\u003e57e52fd\u003c/code\u003e\u003c/a\u003e docs: adjust CHANGES for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b9d304d77f7ce3d55df3a46339dbc56d1f49df58\"\u003e\u003ccode\u003eb9d304d\u003c/code\u003e\u003c/a\u003e fix: check for multiprocessing in a --concurrency list (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a6ef9284afbc7d1f392821864b64ddbda0051fc5\"\u003e\u003ccode\u003ea6ef928\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/070461fcfde0437b5b778c2c2a72e433a0a391aa\"\u003e\u003ccode\u003e070461f\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2271\"\u003e#2271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.4...7.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.18.0 to 3.18.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.1\u003c/h2\u003e\n\u003cp\u003eThis release dropped Python 3.10 support, following django-stubs upstream (requires Python 3.11+ now).\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark stub-only synthetic types with \u003ccode\u003e@type_check_only\u003c/code\u003e by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1038\"\u003etypeddjango/djangorestframework-stubs#1038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1047\"\u003etypeddjango/djangorestframework-stubs#1047\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e types by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1049\"\u003etypeddjango/djangorestframework-stubs#1049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.10 support by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1035\"\u003etypeddjango/djangorestframework-stubs#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCleanup Python 3.10 compatibility by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1036\"\u003etypeddjango/djangorestframework-stubs#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCategorize stubtest allowlist_todo.txt entries by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1037\"\u003etypeddjango/djangorestframework-stubs#1037\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1039\"\u003etypeddjango/djangorestframework-stubs#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.1 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1050\"\u003etypeddjango/djangorestframework-stubs#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/11062a8e197e9b003e0b1d1a63a930bf0ceed2c0\"\u003e\u003ccode\u003e11062a8\u003c/code\u003e\u003c/a\u003e Version 3.18.1 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/1d74beaf94c86427d4fe0f9269c46e1457881cfa\"\u003e\u003ccode\u003e1d74bea\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd11a58c5cecad38202d3b89c030182ab89596dd\"\u003e\u003ccode\u003efd11a58\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd549233349d09f98979e57812072e8909309b65\"\u003e\u003ccode\u003efd54923\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1047\"\u003e#1047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/33361020c2aecfee710c5a4e6c25dbf6d8603314\"\u003e\u003ccode\u003e3336102\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/e4c9d11557dacb19a3e34791e9c7908397fe318e\"\u003e\u003ccode\u003ee4c9d11\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/3410442d566a2d6ae8058b2881fb2adbf86c259a\"\u003e\u003ccode\u003e3410442\u003c/code\u003e\u003c/a\u003e Bump sqlparse from 0.5.5 to 0.6.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/36692fc5a7ee1c87df369c1dc64c84ea9879b4c7\"\u003e\u003ccode\u003e36692fc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1041\"\u003e#1041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/5247f84db1b5e2b47abc736b0164f4fc4cf58f72\"\u003e\u003ccode\u003e5247f84\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10.0.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/603aa1241e8175cc1cfbc1ade9020b047a9cae2d\"\u003e\u003ccode\u003e603aa12\u003c/code\u003e\u003c/a\u003e Fix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.16.3 to 0.16.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b\"\u003e\u003ccode\u003eeb78048\u003c/code\u003e\u003c/a\u003e [ty] Bump ecosystem-analyzer for HTML escaping (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28104\"\u003e#28104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.3...0.16.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/Muji-24/TeamBoards/pull/6","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Muji-24%2FTeamBoards/issues/6","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/6/packages"}},{"old_version":"3.17.1","new_version":"3.18.1","update_type":"minor","path":null,"pr_created_at":"2026-09-01T21:43:46.000Z","version_change":"3.17.1 → 3.18.1","issue":{"uuid":"5317136079","node_id":"PR_kwDOT1EvT88AAAABBz-G5w","number":16,"state":"closed","title":"Bump the python group across 1 directory with 12 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T21:36:46.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-01T21:43:46.000Z","updated_at":"2026-09-04T21:36:48.000Z","time_to_close":258780,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":12,"packages":[{"name":"django","old_version":"6.0.8","new_version":"6.1","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.19.0","new_version":"65.19.1"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"coverage","old_version":"7.15.4","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.9","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.13.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.16.2","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 12 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.8` | `6.1` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.19.0` | `65.19.1` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.2.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.4` | `7.16.0` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.9` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.1` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.13.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.2` | `0.16.5` |\n\n\nUpdates `django` from 6.0.8 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fe0a859f537d4238cf49fca39073513206f83122\"\u003e\u003ccode\u003efe0a859\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/62770454c1beb3e9b0ef1f7c35c5670b4df935d8\"\u003e\u003ccode\u003e6277045\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated man page for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fc78c5cdbb621dff3893c109433022896022fde1\"\u003e\u003ccode\u003efc78c5c\u003c/code\u003e\u003c/a\u003e [6.1.x] Finalized release notes for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c58d86162cd59602df96f0e716cae9849acb3ddb\"\u003e\u003ccode\u003ec58d861\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dc1b8deff467010aaae71471ae12ebc82188a8a3\"\u003e\u003ccode\u003edc1b8de\u003c/code\u003e\u003c/a\u003e [6.1.x] Added missing lang override in translation fetching helper for Serbia...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1f5bf635df6f0919191f649aef29acb3063978f2\"\u003e\u003ccode\u003e1f5bf63\u003c/code\u003e\u003c/a\u003e [6.1.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36735\"\u003e#36735\u003c/a\u003e -- Added DatabaseFeatures.supports_uuid4_function_in_defa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/809998448b45284aa6152112feb46d927b209019\"\u003e\u003ccode\u003e8099984\u003c/code\u003e\u003c/a\u003e [6.1.x] Added CVE-2026-15307, CVE-2026-15337, CVE-2026-15830, and CVE-2026-15...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a\"\u003e\u003ccode\u003e5a260d3\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15920 -- Made display_for_field() validate URLs before...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/9e4a3f186b6b07b483bfd9195ea06734663fcd06\"\u003e\u003ccode\u003e9e4a3f1\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15830 -- Mitigated potential DoS via nested geometry c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5b3523d29be25948e1dd90b3863a002f00fc865f\"\u003e\u003ccode\u003e5b3523d\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15337 -- Mitigated potential DoS in check_for_language().\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.8...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.19.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.4 to 7.16.0\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.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\u003c/blockquote\u003e\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.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\nreach the subprocesses.  The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as\nthe entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e\nslipped through and failed later with \u0026quot;Can't combine statement coverage\ndata with branch data\u0026quot;.  Each named concurrency library is now properly\nconsidered (\u003ccode\u003epull 2270\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any\nmeasured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on\nWindows.  The original extension is now restored on the annotated copy (\u003ccode\u003epull 2265\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2261: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003ecoveragepy/coveragepy#2261\u003c/a\u003e\n.. _pull 2262: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003ecoveragepy/coveragepy#2262\u003c/a\u003e\n.. _pull 2263: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003ecoveragepy/coveragepy#2263\u003c/a\u003e\n.. _pull 2265: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003ecoveragepy/coveragepy#2265\u003c/a\u003e\n.. _issue 2266: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003ecoveragepy/coveragepy#2266\u003c/a\u003e\n.. _pull 2268: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003ecoveragepy/coveragepy#2268\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3e9fc1653ef31089d02eb7618b9d9ac9414378fc\"\u003e\u003ccode\u003e3e9fc16\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/38be8d13afee6b6525492fc375c739cdfb675e9b\"\u003e\u003ccode\u003e38be8d1\u003c/code\u003e\u003c/a\u003e build: control check-manifest explicitly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8eb1266ead5c6d356d3437637a509ff86b566253\"\u003e\u003ccode\u003e8eb1266\u003c/code\u003e\u003c/a\u003e docs(build): no longer commit sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1a8b3fa57d56bb70bad62c93d224c18a0fbaae6f\"\u003e\u003ccode\u003e1a8b3fa\u003c/code\u003e\u003c/a\u003e docs: remove sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/aeaa79b812d1bc637ebb5582ab12c076e192c87e\"\u003e\u003ccode\u003eaeaa79b\u003c/code\u003e\u003c/a\u003e docs: linklint is now sphinx-linklint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d5eaf3f6d38f58746bc69e87e64c0b0277a9077d\"\u003e\u003ccode\u003ed5eaf3f\u003c/code\u003e\u003c/a\u003e test: a branchless way to re-add extensions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/57e52fd431cecc1ca03de2c5b1288e0b330c2ef4\"\u003e\u003ccode\u003e57e52fd\u003c/code\u003e\u003c/a\u003e docs: adjust CHANGES for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b9d304d77f7ce3d55df3a46339dbc56d1f49df58\"\u003e\u003ccode\u003eb9d304d\u003c/code\u003e\u003c/a\u003e fix: check for multiprocessing in a --concurrency list (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a6ef9284afbc7d1f392821864b64ddbda0051fc5\"\u003e\u003ccode\u003ea6ef928\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/070461fcfde0437b5b778c2c2a72e433a0a391aa\"\u003e\u003ccode\u003e070461f\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2271\"\u003e#2271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.4...7.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003cli\u003eImproved cache hit/miss reporting in the Cache panel for \u003ccode\u003ecache.get()\u003c/code\u003e\ncalls with a supplied default value, while documenting the remaining\nambiguity when a cached value equals the supplied default.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f307de14d1a533273b6de7bd39579b043eb54a99\"\u003e\u003ccode\u003ef307de1\u003c/code\u003e\u003c/a\u003e Version 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/73951a4c517bafa5369228f2fca8306510f1cbf1\"\u003e\u003ccode\u003e73951a4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2439\"\u003e#2439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/678b687e0a30c2657dc21b1d859d1141098997a0\"\u003e\u003ccode\u003e678b687\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/7627683d89fc1c77bc2dc4550f15eede9a86cee6\"\u003e\u003ccode\u003e7627683\u003c/code\u003e\u003c/a\u003e Serialize the TaskResult class for Tasks panel. (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2444\"\u003e#2444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.9 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/2ec3fd3ce48e7a92cbe09a114d512dcea50571f7\"\u003e\u003ccode\u003e2ec3fd3\u003c/code\u003e\u003c/a\u003e Version 6.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5868773c9fa5ba236c2cc263799a02acc67f7c0b\"\u003e\u003ccode\u003e5868773\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.69.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3588\"\u003e#3588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e888491e34e5b9073f1c09eb84e91ed7ce36c775\"\u003e\u003ccode\u003ee888491\u003c/code\u003e\u003c/a\u003e Support custom arguments in queryset update methods (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3586\"\u003e#3586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ffd15cac28c39690acd98c3f9af9370f9fadedce\"\u003e\u003ccode\u003effd15ca\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3583\"\u003e#3583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1af6dcf52f19837fdc47b26350d351dea0a139c1\"\u003e\u003ccode\u003e1af6dcf\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.68.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/709e864c79e03239be2234457f59eb66ce69e3c7\"\u003e\u003ccode\u003e709e864\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.69 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5da937c127b581501b5707b547d861b46d8af41c\"\u003e\u003ccode\u003e5da937c\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.68 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3579\"\u003e#3579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7afd2da77ed93d0b3164ea4d203648a6c972f161\"\u003e\u003ccode\u003e7afd2da\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.67 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/07e22f2e4918163d1f3aa1137142cf281b5fbcb1\"\u003e\u003ccode\u003e07e22f2\u003c/code\u003e\u003c/a\u003e Explicit through default manager (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3576\"\u003e#3576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/db47c3b32275b6d6abef915303fd80fde3dd59da\"\u003e\u003ccode\u003edb47c3b\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.17 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.31.1 to 1.32.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.32.0 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#681](https://github.com/adamchainz/django-upgrade/issues/681) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/681\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eutils_text \u0026lt;utils_text\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003eunescape_entities()\u003c/code\u003e calls with \u003ccode\u003ehtml.unescape()\u003c/code\u003e.\nPreviously it incorrectly used \u003ccode\u003ehtml.escape()\u003c/code\u003e, which performs the inverse operation.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#684](https://github.com/adamchainz/django-upgrade/issues/684) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/684\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer crash on empty \u003ccode\u003eindex_together\u003c/code\u003e declarations.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#685](https://github.com/adamchainz/django-upgrade/issues/685) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/685\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to not add a duplicate \u003ccode\u003eindexes\u003c/code\u003e declaration when the existing one is not a list or tuple literal.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#686](https://github.com/adamchainz/django-upgrade/issues/686) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/686\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to add a missing comma when extending a multiline \u003ccode\u003eindexes\u003c/code\u003e list that has no trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#687](https://github.com/adamchainz/django-upgrade/issues/687) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/687\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to keep an empty \u003ccode\u003eindexes\u003c/code\u003e tuple a tuple when extending it with a single index.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#716](https://github.com/adamchainz/django-upgrade/issues/716) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/716\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eformat_html \u0026lt;format_html\u0026gt;\u003c/code\u003e fixer to skip calls with a parenthesized argument, where removing the \u003ccode\u003e.format()\u003c/code\u003e call would create a tuple.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#717](https://github.com/adamchainz/django-upgrade/issues/717) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/717\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer to add a missing comma before \u003ccode\u003enull=True\u003c/code\u003e when the final argument contains commas within brackets.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#688](https://github.com/adamchainz/django-upgrade/issues/688) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/688\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix fixers that modify call arguments to not treat a comment inside otherwise empty parentheses as an argument, which made the :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer produce invalid syntax.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#718](https://github.com/adamchainz/django-upgrade/issues/718) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/718\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to avoid a double comma when the existing \u003ccode\u003eheaders=\u003c/code\u003e dict has a trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#689](https://github.com/adamchainz/django-upgrade/issues/689) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/689\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to insert converted headers at the start of an existing \u003ccode\u003eheaders=\u003c/code\u003e dict.\nDjango gives \u003ccode\u003eheaders=\u003c/code\u003e entries precedence over \u003ccode\u003eHTTP_\u003c/code\u003e arguments, and the last duplicate key wins in a dict literal, so appending converted entries at the end previously flipped which value took effect.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#723](https://github.com/adamchainz/django-upgrade/issues/723) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/723\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etestcase_databases \u0026lt;testcase_databases\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003emulti_db = False\u003c/code\u003e to \u003ccode\u003edatabases = [\u0026quot;default\u0026quot;]\u003c/code\u003e rather than \u003ccode\u003edatabases = []\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/423ab5081e037d3c692113d654d49ea9e3ee0066\"\u003e\u003ccode\u003e423ab50\u003c/code\u003e\u003c/a\u003e Version 1.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7b1224a970289729eb50a1fffca04844a8c1ab1f\"\u003e\u003ccode\u003e7b1224a\u003c/code\u003e\u003c/a\u003e Tidy changelog (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/63607890eb3090bded91c6432b43948a1757bd1e\"\u003e\u003ccode\u003e6360789\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eforms_model_multiple_choice_field\u003c/code\u003e corrupting concatenated keys (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/02a46831ceb213421761f312e1368fa7b7e796d9\"\u003e\u003ccode\u003e02a4683\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etestcase_databases\u003c/code\u003e mapping of \u003ccode\u003emulti_db = False\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/bc85eb958b63b752cbd7454d6378e51ca50d891d\"\u003e\u003ccode\u003ebc85eb9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_decorators\u003c/code\u003e hoisting values above their definitions (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/4eb5abf3734ba10c96dd53abdf98e50c78c4adae\"\u003e\u003ccode\u003e4eb5abf\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_register\u003c/code\u003e referencing models defined after the admin class (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d782084a4fe43286d6b4b2d11676efad0a1356cb\"\u003e\u003ccode\u003ed782084\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003esettings_storages\u003c/code\u003e erasing settings referenced elsewhere (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/2f3eb7571f87ae8c62389ac8f977935f81fbe58e\"\u003e\u003ccode\u003e2f3eb75\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etest_http_headers\u003c/code\u003e precedence when merging into \u003ccode\u003eheaders=\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/723\"\u003e#723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d750615a98098ff0c44477041932a04089d5aa47\"\u003e\u003ccode\u003ed750615\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003estringagg\u003c/code\u003e moving import despite bare \u003ccode\u003eStringAgg\u003c/code\u003e references (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/722\"\u003e#722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/49cb8b9c2297d329a8f858beb54fb34e7274830a\"\u003e\u003ccode\u003e49cb8b9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eutils_timezone\u003c/code\u003e matching aliased \u003ccode\u003eutc\u003c/code\u003e imports (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/720\"\u003e#720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/django-upgrade/compare/1.31.1...1.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.17.1 to 3.18.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.1\u003c/h2\u003e\n\u003cp\u003eThis release dropped Python 3.10 support, following django-stubs upstream (requires Python 3.11+ now).\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark stub-only synthetic types with \u003ccode\u003e@type_check_only\u003c/code\u003e by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1038\"\u003etypeddjango/djangorestframework-stubs#1038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1047\"\u003etypeddjango/djangorestframework-stubs#1047\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e types by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1049\"\u003etypeddjango/djangorestframework-stubs#1049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.10 support by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1035\"\u003etypeddjango/djangorestframework-stubs#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCleanup Python 3.10 compatibility by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1036\"\u003etypeddjango/djangorestframework-stubs#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCategorize stubtest allowlist_todo.txt entries by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1037\"\u003etypeddjango/djangorestframework-stubs#1037\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1039\"\u003etypeddjango/djangorestframework-stubs#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.1 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1050\"\u003etypeddjango/djangorestframework-stubs#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThis is the first version to be based on DRF 3.18\u003c/li\u003e\n\u003cli\u003eThis is the last version to support \u003ccode\u003edjango-stubs\u003c/code\u003e 6.0.x - next release will require 6.1.x\u003c/li\u003e\n\u003cli\u003eThis is the last version to support Python 3.10 - following django-stubs upstream\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop obsolete coreapi/coreschema from stubs (removed in DRF 3.17) by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1025\"\u003etypeddjango/djangorestframework-stubs#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate stubs for djangorestframework 3.18.0 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1030\"\u003etypeddjango/djangorestframework-stubs#1030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUnlock django-stubs dev dependency pinning in pyproject.toml by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1033\"\u003etypeddjango/djangorestframework-stubs#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1034\"\u003etypeddjango/djangorestframework-stubs#1034\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.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/typeddjango/djangorestframework-stubs/commit/11062a8e197e9b003e0b1d1a63a930bf0ceed2c0\"\u003e\u003ccode\u003e11062a8\u003c/code\u003e\u003c/a\u003e Version 3.18.1 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/1d74beaf94c86427d4fe0f9269c46e1457881cfa\"\u003e\u003ccode\u003e1d74bea\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd11a58c5cecad38202d3b89c030182ab89596dd\"\u003e\u003ccode\u003efd11a58\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd549233349d09f98979e57812072e8909309b65\"\u003e\u003ccode\u003efd54923\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1047\"\u003e#1047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/33361020c2aecfee710c5a4e6c25dbf6d8603314\"\u003e\u003ccode\u003e3336102\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/e4c9d11557dacb19a3e34791e9c7908397fe318e\"\u003e\u003ccode\u003ee4c9d11\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/3410442d566a2d6ae8058b2881fb2adbf86c259a\"\u003e\u003ccode\u003e3410442\u003c/code\u003e\u003c/a\u003e Bump sqlparse from 0.5.5 to 0.6.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/36692fc5a7ee1c87df369c1dc64c84ea9879b4c7\"\u003e\u003ccode\u003e36692fc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1041\"\u003e#1041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/5247f84db1b5e2b47abc736b0164f4fc4cf58f72\"\u003e\u003ccode\u003e5247f84\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10.0.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/603aa1241e8175cc1cfbc1ade9020b047a9cae2d\"\u003e\u003ccode\u003e603aa12\u003c/code\u003e\u003c/a\u003e Fix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.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.3.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\u003eSee full diff in \u003ca href=\"https://github.com/python/mypy/compare/v2.3.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 `pre-commit` from 4.6.1 to 4.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.2\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.2 - 2026-08-10\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003elanguage: node\u003c/code\u003e hooks that contain \u003ccode\u003e\u0026quot;scripts\u0026quot;: {\u0026quot;build\u0026quot;: ...}\u003c/code\u003e with\nnpm 11.x.\n\u003cul\u003e\n\u003cli\u003eRegressed in 4.6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3737\"\u003e#3737\u003c/a\u003e issue by \u003ca href=\"https://github.com/mheiges\"\u003e\u003ccode\u003e@​mheiges\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/9767b6c8211a6bf683875a0afcf2b390457a4b66\"\u003e\u003ccode\u003e9767b6c\u003c/code\u003e\u003c/a\u003e v4.6.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/42ee3ff5ac1cae639613c9ad002d0502ae82384f\"\u003e\u003ccode\u003e42ee3ff\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3743\"\u003e#3743\u003c/a\u003e from pre-commit/npm-build-scripts-11-x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/30566198cb2d05201625f92b660a34c38ffe2dc7\"\u003e\u003ccode\u003e3056619\u003c/code\u003e\u003c/a\u003e fix \u003ccode\u003elanguage: node\u003c/code\u003e for hooks with build scripts and npm 11.x\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.6.1...v4.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-django` from 4.13.0 to 4.14.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-django/releases\"\u003epytest-django's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.14.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pytest-django.readthedocs.io/en/stable/changelog.html#v4-14-0-2026-08-10\"\u003ehttps://pytest-django.readthedocs.io/en/stable/changelog.html#v4-14-0-2026-08-10\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/pytest-dev/pytest-django/blob/main/docs/changelog.rst\"\u003epytest-django's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.14.0 (2026-08-10)\u003c/h2\u003e\n\u003cp\u003eCompatibility\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRestored (unofficial) support for Django 5.0 and Django 5.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements\n^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a \u003ccode\u003edjango\u003c/code\u003e extra to the package. By depending on this extra\n(e.g. \u003ccode\u003epip install pytest-django[django]\u003c/code\u003e), the dependency resolver\nwill ensure you get a version of pytest-django that is compatible with\nyour version of Django (lower bound only). At least from now on...\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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-django/commit/1a6b6121c7f1f20e2a32c5f1ece7b6671160b968\"\u003e\u003ccode\u003e1a6b612\u003c/code\u003e\u003c/a\u003e Release 4.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/fffb11d199a4f59e5acec5cb42a8ca257ce987e2\"\u003e\u003ccode\u003efffb11d\u003c/code\u003e\u003c/a\u003e docs: remove $ for consistency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/e8c0606c3871db20f2273bd700c8a51337205622\"\u003e\u003ccode\u003ee8c0606\u003c/code\u003e\u003c/a\u003e docs: move the \u003ccode\u003edjango\u003c/code\u003e extra explanation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/b66deb68fd5820a763005b5e689821737031524a\"\u003e\u003ccode\u003eb66deb6\u003c/code\u003e\u003c/a\u003e tests: strict import to make pyright happy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/823db395089fe268641417de452404162580a7ce\"\u003e\u003ccode\u003e823db39\u003c/code\u003e\u003c/a\u003e tests: fix wrong type (typing only)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/a1eaf5dcdc191b6e95a4d552e30c0aa54d7febf2\"\u003e\u003ccode\u003ea1eaf5d\u003c/code\u003e\u003c/a\u003e Drop django\u0026lt;5 message asserts compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/2ea14230006228f0896b7c785400f17347bdf612\"\u003e\u003ccode\u003e2ea1423\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003e_pre_setup_ran_eagerly\u003c/code\u003e on Django 5.0 and 5.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/903429ca05f98dd78b9f24c2ce84e80be24c01c2\"\u003e\u003ccode\u003e903429c\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003edjango\u003c/code\u003e extra to ensure Django dependency compatible lower bound\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/96615893af607fb89fb568445bfedb7783c7aeb0\"\u003e\u003ccode\u003e9661589\u003c/code\u003e\u003c/a\u003e docs: prefer newer pytest config TOML format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/76461962b11e3740dddf9185a4a4985e7f40cf63\"\u003e\u003ccode\u003e7646196\u003c/code\u003e\u003c/a\u003e docs: remove needless comment\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-django/compare/v4.13.0...v4.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.16.2 to 0.16.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commi...\n\n_Description has been truncated_","html_url":"https://github.com/athulya3404/EasyTechStore/pull/16","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/athulya3404%2FEasyTechStore/issues/16","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/16/packages"}},{"old_version":"3.18.0","new_version":"3.18.1","update_type":"patch","path":null,"pr_created_at":"2026-09-01T19:44:00.000Z","version_change":"3.18.0 → 3.18.1","issue":{"uuid":"5316081817","node_id":"PR_kwDOUCrC3M8AAAABBzIJog","number":11,"state":"closed","title":"Bump the python group across 1 directory with 5 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T19:38:27.000Z","author_association":null,"state_reason":null,"created_at":"2026-09-01T19:44:00.000Z","updated_at":"2026-09-04T19:38:29.000Z","time_to_close":258867,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":5,"packages":[{"name":"gunicorn","old_version":"26.1.0","new_version":"26.2.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"uvicorn","old_version":"0.52.3","new_version":"0.52.4"},{"name":"coverage","old_version":"7.15.4","new_version":"7.16.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"djangorestframework-stubs","old_version":"3.18.0","new_version":"3.18.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.16.3","new_version":"0.16.5","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.1.0` | `26.2.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.52.3` | `0.52.4` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.4` | `7.16.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.18.0` | `3.18.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.3` | `0.16.5` |\n\n\nUpdates `gunicorn` from 26.1.0 to 26.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.2.0\u003c/h2\u003e\n\u003cp\u003eCleartext HTTP/2 lands, and an HTTP/2 security fix.\u003c/p\u003e\n\u003ch2\u003eCleartext HTTP/2 (h2c)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003ehttp2_cleartext\u003c/code\u003e accepts \u003ccode\u003eprior-knowledge\u003c/code\u003e, \u003ccode\u003eupgrade\u003c/code\u003e, \u003ccode\u003eboth\u003c/code\u003e or \u003ccode\u003eoff\u003c/code\u003e (the\ndefault). Prior knowledge serves a connection that opens with the HTTP/2\npreface; \u003ccode\u003eupgrade\u003c/code\u003e honours an HTTP/1.1 \u003ccode\u003eUpgrade: h2c\u003c/code\u003e request. Both work on the\ngthread, gevent and asgi workers.\u003c/p\u003e\n\u003cp\u003eThis is for deployments where TLS is terminated by a proxy that speaks HTTP/2\nupstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e are considered; everyone else is served HTTP/1.x exactly\nas if the setting were off. Each mechanism is enabled separately, so turning one\non does not turn the other on.\u003c/p\u003e\n\u003cp\u003eDo not expose a cleartext HTTP/2 port to the internet.\u003c/p\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eHTTP2Request\u003c/code\u003e built its headers straight from the stream, so nothing the HTTP/1\npath enforces applied over HTTP/2: the underscore and \u003ccode\u003eheader_map\u003c/code\u003e policy,\nduplicate \u003ccode\u003eHost\u003c/code\u003e and \u003ccode\u003eContent-Type\u003c/code\u003e, control characters in values, and the\n\u003ccode\u003eforwarded_allow_ips\u003c/code\u003e trust gate. An untrusted client could set \u003ccode\u003eSCRIPT_NAME\u003c/code\u003e\nand forge \u003ccode\u003eHTTP_*\u003c/code\u003e entries in the WSGI environ, and decide \u003ccode\u003ewsgi.url_scheme\u003c/code\u003e\nthrough \u003ccode\u003e:scheme\u003c/code\u003e. Both request classes now share one policy mixin, and the\nscheme comes from the transport.\u003c/p\u003e\n\u003cp\u003eIf you serve HTTP/2, this is the reason to upgrade.\u003c/p\u003e\n\u003ch2\u003eOther HTTP/2 fixes\u003c/h2\u003e\n\u003cp\u003eWSGI responses were buffered whole before anything was sent; they stream now.\nHEAD, 204 and 304 no longer carry a body. Events read while blocked on a\nflow-control window were discarded, losing requests and body data outright.\n\u003ccode\u003esendfile()\u003c/code\u003e is refused on HTTP/2 responses rather than bypassing framing.\u003c/p\u003e\n\u003ch2\u003eRequest bodies dropped on Upgrade requests\u003c/h2\u003e\n\u003cp\u003eOn the ASGI worker with the fast parser, any request carrying an \u003ccode\u003eUpgrade\u003c/code\u003e\nheader reached the application with an empty body, whatever the header's value\nand with HTTP/2 switched off entirely. Fixed in \u003ccode\u003egunicorn_h1c\u003c/code\u003e 0.6.9, which the\n\u003ccode\u003efast\u003c/code\u003e extra now requires.\u003c/p\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://gunicorn.org/news/\"\u003ehttps://gunicorn.org/news/\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/benoitc/gunicorn/commit/36f2a3c1b80dfa41d70859d12c5bfbbdc23a3c38\"\u003e\u003ccode\u003e36f2a3c\u003c/code\u003e\u003c/a\u003e gunicorn 26.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbba3505f423bfb91af3a87e49ed9d232f39a8fe\"\u003e\u003ccode\u003ecbba350\u003c/code\u003e\u003c/a\u003e test: cover the h2c edge paths that had none\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/988541112ebcf3f795c020fc394aa7eed75f9f53\"\u003e\u003ccode\u003e9885411\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3703\"\u003e#3703\u003c/a\u003e from cormier/fix-inconsistency-in-control-socket-docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/86f0919806a2d4d4cce376cc2088352e7643b139\"\u003e\u003ccode\u003e86f0919\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3704\"\u003e#3704\u003c/a\u003e from methane/doc-wsgi-h1c\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/585355122efe736946b977c5605e404ff2d6ddd4\"\u003e\u003ccode\u003e5853551\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3712\"\u003e#3712\u003c/a\u003e from Rotzbua/patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7bce87e2aa29a4a794eb2b113ff811cad6a80736\"\u003e\u003ccode\u003e7bce87e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3700\"\u003e#3700\u003c/a\u003e from benoitc/fix/sponsor-logo-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/972dfb03b110c430712c32a3d92ef6397ff8eff6\"\u003e\u003ccode\u003e972dfb0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3690\"\u003e#3690\u003c/a\u003e from melbinjp/docs/contributing-settings-path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7b3f16be8d9cc051538b7f0b58b236b37c9550f8\"\u003e\u003ccode\u003e7b3f16b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3711\"\u003e#3711\u003c/a\u003e from benoitc/docs/http2-changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5bf237c0c7ef5bcdc63046645a17d6bafd609a34\"\u003e\u003ccode\u003e5bf237c\u003c/code\u003e\u003c/a\u003e http2: require gunicorn_h1c 0.6.9 and drop the upgrade body workaround\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7cf03385c574228e28c4952fd410ed2df02acc94\"\u003e\u003ccode\u003e7cf0338\u003c/code\u003e\u003c/a\u003e test: skip the fast-parser cases when gunicorn_h1c is absent\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.1.0...26.2.0\"\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.52.3 to 0.52.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn[standard]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.52.4\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove duplicate \u003ccode\u003eDate\u003c/code\u003e headers from accepted WebSocket handshakes with \u003ccode\u003ewebsockets-sansio\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\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.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\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8988c23704fc373c9206cca53ec57dd8ad7f44a5\"\u003e\u003ccode\u003e8988c23\u003c/code\u003e\u003c/a\u003e Stabilize macOS Python 3.13 signal shutdown tests (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3084\"\u003e#3084\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/898ddca9254b53c5bf7a6ee509756704caaa949f\"\u003e\u003ccode\u003e898ddca\u003c/code\u003e\u003c/a\u003e Update PyPI publish action to version 1.14.2 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3083\"\u003e#3083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3869f8aac2bdd040fa3fbe564e1dad67e2637641\"\u003e\u003ccode\u003e3869f8a\u003c/code\u003e\u003c/a\u003e Restore Mermaid diagram rendering (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3080\"\u003e#3080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/64148a9c574e1eb87d3d09b3ce4c256606f8d973\"\u003e\u003ccode\u003e64148a9\u003c/code\u003e\u003c/a\u003e Version 0.52.4 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3079\"\u003e#3079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9e9e5691bd14d5c4cd66d9bd76c7730bc48461a2\"\u003e\u003ccode\u003e9e9e569\u003c/code\u003e\u003c/a\u003e docs: correct release example PR number (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3072\"\u003e#3072\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b783dacab50b9d6767b0cf65826b2dc3aae21909\"\u003e\u003ccode\u003eb783dac\u003c/code\u003e\u003c/a\u003e Remove duplicate Date header from SansIO WebSocket handshakes (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3078\"\u003e#3078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/27019b2a4b1fa6d68a289fcf7d738fbdc6ee4e5d\"\u003e\u003ccode\u003e27019b2\u003c/code\u003e\u003c/a\u003e chore(deps): bump the python-packages group across 1 directory with 11 update...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1b6427311bb84a15addee688f6d41d96e33f8b0a\"\u003e\u003ccode\u003e1b64273\u003c/code\u003e\u003c/a\u003e Fix a typo in index.md (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/3006\"\u003e#3006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.52.3...0.52.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.4 to 7.16.0\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.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\u003c/blockquote\u003e\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.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\nreach the subprocesses.  The check only recognized \u003ccode\u003emultiprocessing\u003c/code\u003e as\nthe entire option value, so \u003ccode\u003e--concurrency=multiprocessing,thread\u003c/code\u003e\nslipped through and failed later with \u0026quot;Can't combine statement coverage\ndata with branch data\u0026quot;.  Each named concurrency library is now properly\nconsidered (\u003ccode\u003epull 2270\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003ecoverage annotate -d DIR\u003c/code\u003e raised an \u003ccode\u003eAssertionError\u003c/code\u003e if any\nmeasured file had an extension other than \u003ccode\u003e.py\u003c/code\u003e, such as a \u003ccode\u003e.pyw\u003c/code\u003e file on\nWindows.  The original extension is now restored on the annotated copy (\u003ccode\u003epull 2265\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2261: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2261\"\u003ecoveragepy/coveragepy#2261\u003c/a\u003e\n.. _pull 2262: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2262\"\u003ecoveragepy/coveragepy#2262\u003c/a\u003e\n.. _pull 2263: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2263\"\u003ecoveragepy/coveragepy#2263\u003c/a\u003e\n.. _pull 2265: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2265\"\u003ecoveragepy/coveragepy#2265\u003c/a\u003e\n.. _issue 2266: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2266\"\u003ecoveragepy/coveragepy#2266\u003c/a\u003e\n.. _pull 2268: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2268\"\u003ecoveragepy/coveragepy#2268\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3e9fc1653ef31089d02eb7618b9d9ac9414378fc\"\u003e\u003ccode\u003e3e9fc16\u003c/code\u003e\u003c/a\u003e docs: prep for 7.16.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/38be8d13afee6b6525492fc375c739cdfb675e9b\"\u003e\u003ccode\u003e38be8d1\u003c/code\u003e\u003c/a\u003e build: control check-manifest explicitly\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8eb1266ead5c6d356d3437637a509ff86b566253\"\u003e\u003ccode\u003e8eb1266\u003c/code\u003e\u003c/a\u003e docs(build): no longer commit sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1a8b3fa57d56bb70bad62c93d224c18a0fbaae6f\"\u003e\u003ccode\u003e1a8b3fa\u003c/code\u003e\u003c/a\u003e docs: remove sample_html\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/aeaa79b812d1bc637ebb5582ab12c076e192c87e\"\u003e\u003ccode\u003eaeaa79b\u003c/code\u003e\u003c/a\u003e docs: linklint is now sphinx-linklint\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d5eaf3f6d38f58746bc69e87e64c0b0277a9077d\"\u003e\u003ccode\u003ed5eaf3f\u003c/code\u003e\u003c/a\u003e test: a branchless way to re-add extensions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/57e52fd431cecc1ca03de2c5b1288e0b330c2ef4\"\u003e\u003ccode\u003e57e52fd\u003c/code\u003e\u003c/a\u003e docs: adjust CHANGES for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b9d304d77f7ce3d55df3a46339dbc56d1f49df58\"\u003e\u003ccode\u003eb9d304d\u003c/code\u003e\u003c/a\u003e fix: check for multiprocessing in a --concurrency list (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2270\"\u003e#2270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a6ef9284afbc7d1f392821864b64ddbda0051fc5\"\u003e\u003ccode\u003ea6ef928\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/070461fcfde0437b5b778c2c2a72e433a0a391aa\"\u003e\u003ccode\u003e070461f\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group with 4 updates (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2271\"\u003e#2271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.4...7.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.18.0 to 3.18.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.1\u003c/h2\u003e\n\u003cp\u003eThis release dropped Python 3.10 support, following django-stubs upstream (requires Python 3.11+ now).\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMark stub-only synthetic types with \u003ccode\u003e@type_check_only\u003c/code\u003e by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1038\"\u003etypeddjango/djangorestframework-stubs#1038\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1047\"\u003etypeddjango/djangorestframework-stubs#1047\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e types by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1049\"\u003etypeddjango/djangorestframework-stubs#1049\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop Python 3.10 support by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1035\"\u003etypeddjango/djangorestframework-stubs#1035\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCleanup Python 3.10 compatibility by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1036\"\u003etypeddjango/djangorestframework-stubs#1036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCategorize stubtest allowlist_todo.txt entries by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1037\"\u003etypeddjango/djangorestframework-stubs#1037\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1039\"\u003etypeddjango/djangorestframework-stubs#1039\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.1 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1050\"\u003etypeddjango/djangorestframework-stubs#1050\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/11062a8e197e9b003e0b1d1a63a930bf0ceed2c0\"\u003e\u003ccode\u003e11062a8\u003c/code\u003e\u003c/a\u003e Version 3.18.1 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1050\"\u003e#1050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/1d74beaf94c86427d4fe0f9269c46e1457881cfa\"\u003e\u003ccode\u003e1d74bea\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd11a58c5cecad38202d3b89c030182ab89596dd\"\u003e\u003ccode\u003efd11a58\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eManyRelatedField\u003c/code\u003e type parameters \u0026amp; relation field \u003ccode\u003edefault\u003c/code\u003e/\u003ccode\u003einitial\u003c/code\u003e t...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/fd549233349d09f98979e57812072e8909309b65\"\u003e\u003ccode\u003efd54923\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ePrimaryKeyRelatedField\u003c/code\u003e \u003ccode\u003epk_field\u003c/code\u003e attribute \u0026amp; parameter type (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1047\"\u003e#1047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/33361020c2aecfee710c5a4e6c25dbf6d8603314\"\u003e\u003ccode\u003e3336102\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1046\"\u003e#1046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/e4c9d11557dacb19a3e34791e9c7908397fe318e\"\u003e\u003ccode\u003ee4c9d11\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/3410442d566a2d6ae8058b2881fb2adbf86c259a\"\u003e\u003ccode\u003e3410442\u003c/code\u003e\u003c/a\u003e Bump sqlparse from 0.5.5 to 0.6.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1042\"\u003e#1042\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/36692fc5a7ee1c87df369c1dc64c84ea9879b4c7\"\u003e\u003ccode\u003e36692fc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1041\"\u003e#1041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/5247f84db1b5e2b47abc736b0164f4fc4cf58f72\"\u003e\u003ccode\u003e5247f84\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10.0.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1040\"\u003e#1040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/603aa1241e8175cc1cfbc1ade9020b047a9cae2d\"\u003e\u003ccode\u003e603aa12\u003c/code\u003e\u003c/a\u003e Fix remaining items in stubtest \u003ccode\u003eallowlist_todo.txt\u003c/code\u003e and remove the file (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1039\"\u003e#1039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.18.0...3.18.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.16.3 to 0.16.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.16.5\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.sh | sh\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eInstall prebuilt binaries via powershell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003epowershell -ExecutionPolicy Bypass -c \u0026quot;irm https://releases.astral.sh/github/ruff/releases/download/0.16.5/ruff-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload ruff 0.16.5\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.16.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-27.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIntroduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-async\u003c/code\u003e] Detect blocking generic HTTP requests (\u003ccode\u003eASYNC210\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28024\"\u003e#28024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-datetimez\u003c/code\u003e] Allow timezone-safe \u003ccode\u003estrptime\u003c/code\u003e chains (\u003ccode\u003eDTZ007\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28023\"\u003e#28023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Respect side effects in \u003ccode\u003elambda\u003c/code\u003e defaults (\u003ccode\u003eSIM401\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/28000\"\u003e#28000\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix duplicated \u0026quot;of\u0026quot; in \u003ccode\u003eClientOptions\u003c/code\u003e doc comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27978\"\u003e#27978\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDocument rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AlexWaygood\"\u003e\u003ccode\u003e@​AlexWaygood\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sharkdp\"\u003e\u003ccode\u003e@​sharkdp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jelle-openai\"\u003e\u003ccode\u003e@​jelle-openai\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aarushkandukoori\"\u003e\u003ccode\u003e@​aarushkandukoori\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.16.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-08-20.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-use-pathlib\u003c/code\u003e] Add autofix for \u003ccode\u003ePTH116\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26460\"\u003e#26460\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Restrict \u003ccode\u003edelete-full-slice\u003c/code\u003e to lists (\u003ccode\u003eFURB131\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27711\"\u003e#27711\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Skip \u003ccode\u003eFURB101\u003c/code\u003e and \u003ccode\u003eFURB103\u003c/code\u003e when the \u003ccode\u003eopen\u003c/code\u003e argument is a file descriptor (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27643\"\u003e#27643\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eInvalidInstruction\u003c/code\u003e on Windows CPUs that do not support \u003ccode\u003ePOPCNT\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27803\"\u003e#27803\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Emit semantic syntax errors in string type definitions as \u003ccode\u003eF722\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27835\"\u003e#27835\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Allow \u003ccode\u003eos._exit\u003c/code\u003e imports in \u003ccode\u003eimport-private-name\u003c/code\u003e (\u003ccode\u003ePLC2701\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27738\"\u003e#27738\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9e4938c4a60bed3e87a11ee1e1db1bd23f4d964a\"\u003e\u003ccode\u003e9e4938c\u003c/code\u003e\u003c/a\u003e Bump 0.16.5 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28110\"\u003e#28110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/aad0e909ef1390f4b2a3ba8aa0a67fb8ea5cbacd\"\u003e\u003ccode\u003eaad0e90\u003c/code\u003e\u003c/a\u003e Allow rules without codes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28049\"\u003e#28049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/5fdab73c5052350400c36b08c5d7710210343bc4\"\u003e\u003ccode\u003e5fdab73\u003c/code\u003e\u003c/a\u003e Update preview default rules and categories (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27877\"\u003e#27877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/29c8e5b2d0a46eb7dc4ff11c1b0a0dc5ccea52e4\"\u003e\u003ccode\u003e29c8e5b\u003c/code\u003e\u003c/a\u003e Document rule acceptance guidelines (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27910\"\u003e#27910\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/50a4d7fd106603a5616b01ac3bef3306252b248f\"\u003e\u003ccode\u003e50a4d7f\u003c/code\u003e\u003c/a\u003e Document the new category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27906\"\u003e#27906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ada87950ea188f882f69b7bd6e2213a9696e3ee2\"\u003e\u003ccode\u003eada8795\u003c/code\u003e\u003c/a\u003e Introduce category selectors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27666\"\u003e#27666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d8947238863b61922bfc83f07edcc697c1cc07c0\"\u003e\u003ccode\u003ed894723\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda parameters through callable type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28109\"\u003e#28109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2685fdebbcf9938736fed8c45886a629f9c99a06\"\u003e\u003ccode\u003e2685fde\u003c/code\u003e\u003c/a\u003e [ty] Narrow functional enum members in \u003ccode\u003e==\u003c/code\u003e and \u003ccode\u003ematch\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28103\"\u003e#28103\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/efcffd2178ce62e9951a53d4c50cadc225a0cfec\"\u003e\u003ccode\u003eefcffd2\u003c/code\u003e\u003c/a\u003e [ty] Intersection simplifications with subtype-related generic specialization...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb780488037504e11f145ed778654fd8a825028b\"\u003e\u003ccode\u003eeb78048\u003c/code\u003e\u003c/a\u003e [ty] Bump ecosystem-analyzer for HTML escaping (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/28104\"\u003e#28104\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.16.3...0.16.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/DARELLE26/mentorlink/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DARELLE26%2Fmentorlink/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}},{"old_version":"3.17.1","new_version":"3.18.0","update_type":"minor","path":null,"pr_created_at":"2026-08-25T08:22:03.000Z","version_change":"3.17.1 → 3.18.0","issue":{"uuid":"5243643953","node_id":"PR_kwDOUDghOM8AAAABA6DMVw","number":5,"state":"closed","title":"Bump the python group with 15 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T14:38:03.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-25T08:22:03.000Z","updated_at":"2026-09-04T14:38:05.000Z","time_to_close":886560,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":15,"packages":[{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"flower","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/mher/flower"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"coverage","old_version":"7.15.3","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.7","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.43.2","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.16.1","new_version":"0.16.4","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 15 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [flower](https://github.com/mher/flower) | `2.0.1` | `2.1.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.3` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.7` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.43.2` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.1` | `0.16.4` |\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flower` from 2.0.1 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/mher/flower/releases\"\u003eflower's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the GitLab authentication handler name by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented database filename by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented max tasks default by \u003ca href=\"https://github.com/masahiro331\"\u003e\u003ccode\u003e@​masahiro331\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1415\"\u003e#1415\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/mher/flower/blob/v2.1.0/CHANGELOG.md\"\u003eflower's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlower 2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design.\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options.\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters.\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard.\u003c/li\u003e\n\u003cli\u003eEnabled API access in the Docker Compose demo.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop.\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined.\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections.\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files.\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the GitLab authentication handler name \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the documented database filename \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\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/mher/flower/commit/3597bd1a94280cb3a3f2cbe53d0b6616f56cbde8\"\u003e\u003ccode\u003e3597bd1\u003c/code\u003e\u003c/a\u003e Set release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/d083f7317e4e273ff62de59082b89ce390cecf50\"\u003e\u003ccode\u003ed083f73\u003c/code\u003e\u003c/a\u003e Update documentation for 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b58869bcdcceb46d37d806fee8698fefd9d94bd9\"\u003e\u003ccode\u003eb58869b\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/e6cf8ef78776098bf8d3f1674056fc00dd62e388\"\u003e\u003ccode\u003ee6cf8ef\u003c/code\u003e\u003c/a\u003e Add Python 3.13 and 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/8ecede927b87e49ddb2856fbf61f7577d3c87273\"\u003e\u003ccode\u003e8ecede9\u003c/code\u003e\u003c/a\u003e Document custom authentication providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/00d310bb92914a21318052aa4ed02a996a95ca00\"\u003e\u003ccode\u003e00d310b\u003c/code\u003e\u003c/a\u003e Persist dashboard counters across restarts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/0a5116087085596a466caee4caa473da1a8b8394\"\u003e\u003ccode\u003e0a51160\u003c/code\u003e\u003c/a\u003e Purge offline workers from metrics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/72a09c8795d29b4a8e042285bff4e9ac2b7afda4\"\u003e\u003ccode\u003e72a09c8\u003c/code\u003e\u003c/a\u003e Prevent duplicate worker inspections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/17ead90a68a2eec82be3e03c9f0350f02ddc60dd\"\u003e\u003ccode\u003e17ead90\u003c/code\u003e\u003c/a\u003e Make Redis queue inspection non-blocking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b11ddcb2175c47ac0001b3744d4e3bad41bc6ba4\"\u003e\u003ccode\u003eb11ddcb\u003c/code\u003e\u003c/a\u003e Update blocking operation handling\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mher/flower/compare/v2.0.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.3 to 7.15.4\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.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\u003c/blockquote\u003e\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.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in the HTML report, a source file name containing a double quote (legal\non POSIX) wasn't escaped where it's dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index\nand prev/next links, so it could close the attribute early and inject markup.\nPage URLs are now escaped. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2227_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report wrote file names and other fields into its\nline-oriented records without neutralizing control characters. A measured\nfile whose name contained a newline (legal on POSIX) could forge extra\nrecords, inflating the coverage seen by tools that read the report. Control\ncharacters in a field are now replaced. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2226_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels are now provided for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2226: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003ecoveragepy/coveragepy#2226\u003c/a\u003e\n.. _pull 2227: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003ecoveragepy/coveragepy#2227\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-3:\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/4c0e7ff425ecbb33e2b994b41118a71eb4e39021\"\u003e\u003ccode\u003e4c0e7ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/db4cc3216ca5bb436eba697aaa74d886e4ea82c8\"\u003e\u003ccode\u003edb4cc32\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c33085c3fcec4dd01fc3a0419c90de7ee6b869a7\"\u003e\u003ccode\u003ec33085c\u003c/code\u003e\u003c/a\u003e style: start gradual move to ruff 0.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53a0fd51ba05047624baf58bf8f288d56185df93\"\u003e\u003ccode\u003e53a0fd5\u003c/code\u003e\u003c/a\u003e fix: neutralize control characters in lcov report fields (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b64d53dd6f113b68a19ac6c1b855e34bbebfad4e\"\u003e\u003ccode\u003eb64d53d\u003c/code\u003e\u003c/a\u003e build: make 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53792ab496adf740a38d1f67e0162705b4d67c07\"\u003e\u003ccode\u003e53792ab\u003c/code\u003e\u003c/a\u003e build: show the python version for kits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f6b03c77ffb8d58b25950bae63d36b7a1c585a70\"\u003e\u003ccode\u003ef6b03c7\u003c/code\u003e\u003c/a\u003e chore: make upgrade_one package=cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d9b660ac2a6bc64a39c4a2e7f195bb6bd6f7af89\"\u003e\u003ccode\u003ed9b660a\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b128a3172ec0cc4d70398f663e56d0362f5de4ea\"\u003e\u003ccode\u003eb128a31\u003c/code\u003e\u003c/a\u003e docs: oops, move this entry to the correct place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a7a2c15669cc6e8fdb46e5012954c795a63e9a27\"\u003e\u003ccode\u003ea7a2c15\u003c/code\u003e\u003c/a\u003e fix: escape filename urls in html report href attributes (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.3...7.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f307de14d1a533273b6de7bd39579b043eb54a99\"\u003e\u003ccode\u003ef307de1\u003c/code\u003e\u003c/a\u003e Version 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/73951a4c517bafa5369228f2fca8306510f1cbf1\"\u003e\u003ccode\u003e73951a4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2439\"\u003e#2439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/678b687e0a30c2657dc21b1d859d1141098997a0\"\u003e\u003ccode\u003e678b687\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/7627683d89fc1c77bc2dc4550f15eede9a86cee6\"\u003e\u003ccode\u003e7627683\u003c/code\u003e\u003c/a\u003e Serialize the TaskResult class for Tasks panel. (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2444\"\u003e#2444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.7 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\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/typeddjango/django-stubs/commit/2ec3fd3ce48e7a92cbe09a114d512dcea50571f7\"\u003e\u003ccode\u003e2ec3fd3\u003c/code\u003e\u003c/a\u003e Version 6.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5868773c9fa5ba236c2cc263799a02acc67f7c0b\"\u003e\u003ccode\u003e5868773\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.69.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3588\"\u003e#3588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e888491e34e5b9073f1c09eb84e91ed7ce36c775\"\u003e\u003ccode\u003ee888491\u003c/code\u003e\u003c/a\u003e Support custom arguments in queryset update methods (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3586\"\u003e#3586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ffd15cac28c39690acd98c3f9af9370f9fadedce\"\u003e\u003ccode\u003effd15ca\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3583\"\u003e#3583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1af6dcf52f19837fdc47b26350d351dea0a139c1\"\u003e\u003ccode\u003e1af6dcf\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.68.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/709e864c79e03239be2234457f59eb66ce69e3c7\"\u003e\u003ccode\u003e709e864\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.69 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5da937c127b581501b5707b547d861b46d8af41c\"\u003e\u003ccode\u003e5da937c\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.68 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3579\"\u003e#3579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7afd2da77ed93d0b3164ea4d203648a6c972f161\"\u003e\u003ccode\u003e7afd2da\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.67 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/07e22f2e4918163d1f3aa1137142cf281b5fbcb1\"\u003e\u003ccode\u003e07e22f2\u003c/code\u003e\u003c/a\u003e Explicit through default manager (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3576\"\u003e#3576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/db47c3b32275b6d6abef915303fd80fde3dd59da\"\u003e\u003ccode\u003edb47c3b\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.17 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.7...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.31.1 to 1.32.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.32.0 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#681](https://github.com/adamchainz/django-upgrade/issues/681) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/681\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eutils_text \u0026lt;utils_text\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003eunescape_entities()\u003c/code\u003e calls with \u003ccode\u003ehtml.unescape()\u003c/code\u003e.\nPreviously it incorrectly used \u003ccode\u003ehtml.escape()\u003c/code\u003e, which performs the inverse operation.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#684](https://github.com/adamchainz/django-upgrade/issues/684) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/684\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer crash on empty \u003ccode\u003eindex_together\u003c/code\u003e declarations.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#685](https://github.com/adamchainz/django-upgrade/issues/685) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/685\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to not add a duplicate \u003ccode\u003eindexes\u003c/code\u003e declaration when the existing one is not a list or tuple literal.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#686](https://github.com/adamchainz/django-upgrade/issues/686) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/686\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to add a missing comma when extending a multiline \u003ccode\u003eindexes\u003c/code\u003e list that has no trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#687](https://github.com/adamchainz/django-upgrade/issues/687) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/687\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to keep an empty \u003ccode\u003eindexes\u003c/code\u003e tuple a tuple when extending it with a single index.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#716](https://github.com/adamchainz/django-upgrade/issues/716) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/716\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eformat_html \u0026lt;format_html\u0026gt;\u003c/code\u003e fixer to skip calls with a parenthesized argument, where removing the \u003ccode\u003e.format()\u003c/code\u003e call would create a tuple.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#717](https://github.com/adamchainz/django-upgrade/issues/717) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/717\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer to add a missing comma before \u003ccode\u003enull=True\u003c/code\u003e when the final argument contains commas within brackets.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#688](https://github.com/adamchainz/django-upgrade/issues/688) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/688\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix fixers that modify call arguments to not treat a comment inside otherwise empty parentheses as an argument, which made the :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer produce invalid syntax.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#718](https://github.com/adamchainz/django-upgrade/issues/718) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/718\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to avoid a double comma when the existing \u003ccode\u003eheaders=\u003c/code\u003e dict has a trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#689](https://github.com/adamchainz/django-upgrade/issues/689) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/689\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to insert converted headers at the start of an existing \u003ccode\u003eheaders=\u003c/code\u003e dict.\nDjango gives \u003ccode\u003eheaders=\u003c/code\u003e entries precedence over \u003ccode\u003eHTTP_\u003c/code\u003e arguments, and the last duplicate key wins in a dict literal, so appending converted entries at the end previously flipped which value took effect.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#723](https://github.com/adamchainz/django-upgrade/issues/723) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/723\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etestcase_databases \u0026lt;testcase_databases\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003emulti_db = False\u003c/code\u003e to \u003ccode\u003edatabases = [\u0026quot;default\u0026quot;]\u003c/code\u003e rather than \u003ccode\u003edatabases = []\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/423ab5081e037d3c692113d654d49ea9e3ee0066\"\u003e\u003ccode\u003e423ab50\u003c/code\u003e\u003c/a\u003e Version 1.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7b1224a970289729eb50a1fffca04844a8c1ab1f\"\u003e\u003ccode\u003e7b1224a\u003c/code\u003e\u003c/a\u003e Tidy changelog (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/63607890eb3090bded91c6432b43948a1757bd1e\"\u003e\u003ccode\u003e6360789\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eforms_model_multiple_choice_field\u003c/code\u003e corrupting concatenated keys (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/02a46831ceb213421761f312e1368fa7b7e796d9\"\u003e\u003ccode\u003e02a4683\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etestcase_databases\u003c/code\u003e mapping of \u003ccode\u003emulti_db = False\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/bc85eb958b63b752cbd7454d6378e51ca50d891d\"\u003e\u003ccode\u003ebc85eb9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_decorators\u003c/code\u003e hoisting values above their definitions (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/4eb5abf3734ba10c96dd53abdf98e50c78c4adae\"\u003e\u003ccode\u003e4eb5abf\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_register\u003c/code\u003e referencing models defined after the admin class (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d782084a4fe43286d6b4b2d11676efad0a1356cb\"\u003e\u003ccode\u003ed782084\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003esettings_storages\u003c/code\u003e erasing settings referenced elsewhere (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/2f3eb7571f87ae8c62389ac8f977935f81fbe58e\"\u003e\u003ccode\u003e2f3eb75\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etest_http_headers\u003c/code\u003e precedence when merging into \u003ccode\u003eheaders=\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/723\"\u003e#723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d750615a98098ff0c44477041932a04089d5aa47\"\u003e\u003ccode\u003ed750615\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003estringagg\u003c/code\u003e moving import despite bare \u003ccode\u003eStringAgg\u003c/code\u003e references (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/722\"\u003e#722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/49cb8b9c2297d329a8f858beb54fb34e7274830a\"\u003e\u003ccode\u003e49cb8b9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eutils_timezone\u003c/code\u003e matching aliased \u003ccode\u003eutc\u003c/code\u003e imports (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/720\"\u003e#720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/django-upgrade/compare/1.31.1...1.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThis is the first version to be based on DRF 3.18\u003c/li\u003e\n\u003cli\u003eThis is the last version to support \u003ccode\u003edjango-stubs\u003c/code\u003e 6.0.x - next release will require 6.1.x\u003c/li\u003e\n\u003cli\u003eThis is the last ver...\n\n_Description has been truncated_","html_url":"https://github.com/rl-institut/SustAgriTool/pull/5","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rl-institut%2FSustAgriTool/issues/5","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/5/packages"}},{"old_version":"3.17.0","new_version":"3.18.0","update_type":"minor","path":null,"pr_created_at":"2026-08-24T09:25:58.000Z","version_change":"3.17.0 → 3.18.0","issue":{"uuid":"5233154581","node_id":"PR_kwDOS9VYHs8AAAABAxtqTQ","number":66,"state":"closed","title":"chore(deps): bump the python group across 1 directory with 20 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T09:11:09.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-24T09:25:58.000Z","updated_at":"2026-09-04T09:11:11.000Z","time_to_close":949511,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":20,"packages":[{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1"},{"name":"django-crispy-forms","old_version":"2.6","new_version":"2.7","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"drf-spectacular","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/tfranzel/drf-spectacular"},{"name":"flower","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/mher/flower"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"redis","old_version":"8.0.0","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.14.1","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.5","new_version":"6.1.0"},{"name":"djangorestframework-stubs","old_version":"3.17.0","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.39.2","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.0","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest","old_version":"9.1.0","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.15.18","new_version":"0.16.4","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 20 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [django-anymail[mailgun]](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.6` | `2.7` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [drf-spectacular](https://github.com/tfranzel/drf-spectacular) | `0.29.0` | `0.30.0` |\n| [flower](https://github.com/mher/flower) | `2.0.1` | `2.1.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [redis](https://github.com/redis/redis-py) | `8.0.0` | `8.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.14.1` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.5` | `6.1.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.0` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.39.2` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.0` | `4.6.2` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.1.0` | `9.1.1` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.18` | `0.16.4` |\n\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail[mailgun]` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail[mailgun]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail[mailgun]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\nin Django's documentation for recommendations.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.6 to 2.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/e7fbb538595dde3a4598b4403e60ecca0905fa74\"\u003e\u003ccode\u003ee7fbb53\u003c/code\u003e\u003c/a\u003e Release 2.7. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1438\"\u003e#1438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/9d6b32129dea4c89caa87218a11192503646b9da\"\u003e\u003ccode\u003e9d6b321\u003c/code\u003e\u003c/a\u003e Bumped github actions versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/974b5b7390c0b11698c348128b164990cb6f044b\"\u003e\u003ccode\u003e974b5b7\u003c/code\u003e\u003c/a\u003e Bumped RTD OS and Python versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/5218268f520ca19c665e6f02a49df647eb977af6\"\u003e\u003ccode\u003e5218268\u003c/code\u003e\u003c/a\u003e Confirmed support for Django 6.1. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/847873cf09f0ee96beb38273190860008a6712dd\"\u003e\u003ccode\u003e847873c\u003c/code\u003e\u003c/a\u003e docs: replace 'basestring' with 'str' (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.6...2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tfranzel/drf-spectacular/releases\"\u003edrf-spectacular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.30.0\u003c/h2\u003e\n\u003cp\u003eAfter working through the backlog for several week, we are finally in a comfortable place again. Thank you to all contributors and users that waited patiently for me the catch up. It does not include all the PRs that were opened, but imho the most critical ones.\u003c/p\u003e\n\u003cp\u003eThis release includes many small improvement, a few bug fixes, updates to the test suite and a renovated test matrix. Some minor schema corrections are to be expected, but nothing drastic. It is mostly fixing small inconsistencies and improving corner cases.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression introduced in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1450\"\u003e#1450\u003c/a\u003e by \u003ca href=\"https://github.com/hoefling\"\u003e\u003ccode\u003e@​hoefling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1469\"\u003etfranzel/drf-spectacular#1469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dependency definition for Django 5.2 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1487\"\u003etfranzel/drf-spectacular#1487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for Django 6.0 and and DRF 3.17 by \u003ca href=\"https://github.com/vgrozdanic\"\u003e\u003ccode\u003e@​vgrozdanic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1496\"\u003etfranzel/drf-spectacular#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Support for unsigned integers uint16, uint32 and uint64 by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1483\"\u003etfranzel/drf-spectacular#1483\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement x-spec-enum-id for type hint Choices. by \u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1486\"\u003etfranzel/drf-spectacular#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClarifies Docs in Customizations.rst by \u003ca href=\"https://github.com/APCBoston\"\u003e\u003ccode\u003e@​APCBoston\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1489\"\u003etfranzel/drf-spectacular#1489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd setting to disable docstring extraction by \u003ca href=\"https://github.com/philipstarkey\"\u003e\u003ccode\u003e@​philipstarkey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1491\"\u003etfranzel/drf-spectacular#1491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for polymorphic built-in drf support by \u003ca href=\"https://github.com/mastacheata\"\u003e\u003ccode\u003e@​mastacheata\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1490\"\u003etfranzel/drf-spectacular#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument \u003ccode\u003edjango-rest-knox\u003c/code\u003e support by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1503\"\u003etfranzel/drf-spectacular#1503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd help text to spectacular management command arguments \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1175\"\u003e#1175\u003c/a\u003e by \u003ca href=\"https://github.com/jbbqqf\"\u003e\u003ccode\u003e@​jbbqqf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1502\"\u003etfranzel/drf-spectacular#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange conflicting license field for 3.8 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1504\"\u003etfranzel/drf-spectacular#1504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1438 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1505\"\u003etfranzel/drf-spectacular#1505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd blueprint for django-rest-knox by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1506\"\u003etfranzel/drf-spectacular#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1499 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1511\"\u003etfranzel/drf-spectacular#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType hint build_bearer_security_scheme_object by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1509\"\u003etfranzel/drf-spectacular#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHousekeeping by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1512\"\u003etfranzel/drf-spectacular#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1501 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1514\"\u003etfranzel/drf-spectacular#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nullable FileField response schema when blank=True (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1493\"\u003e#1493\u003c/a\u003e) by \u003ca href=\"https://github.com/mojtabasohrabi\"\u003e\u003ccode\u003e@​mojtabasohrabi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1501\"\u003etfranzel/drf-spectacular#1501\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/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1487\"\u003etfranzel/drf-spectacular#1487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vgrozdanic\"\u003e\u003ccode\u003e@​vgrozdanic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1496\"\u003etfranzel/drf-spectacular#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1486\"\u003etfranzel/drf-spectacular#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/APCBoston\"\u003e\u003ccode\u003e@​APCBoston\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1489\"\u003etfranzel/drf-spectacular#1489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/philipstarkey\"\u003e\u003ccode\u003e@​philipstarkey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1491\"\u003etfranzel/drf-spectacular#1491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mastacheata\"\u003e\u003ccode\u003e@​mastacheata\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1490\"\u003etfranzel/drf-spectacular#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jbbqqf\"\u003e\u003ccode\u003e@​jbbqqf\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1502\"\u003etfranzel/drf-spectacular#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mojtabasohrabi\"\u003e\u003ccode\u003e@​mojtabasohrabi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1501\"\u003etfranzel/drf-spectacular#1501\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.0\"\u003ehttps://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.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/tfranzel/drf-spectacular/blob/master/CHANGELOG.rst\"\u003edrf-spectacular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.30.0 (2026-07-06)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd OAS 3.2 schema for validation \u0026amp; test\u003c/li\u003e\n\u003cli\u003eType hint build_bearer_security_scheme_object (\u003ccode\u003e[#1509](https://github.com/tfranzel/drf-spectacular/issues/1509) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1509\u0026gt;\u003c/code\u003e_) [johnthagen]\u003c/li\u003e\n\u003cli\u003eFix formatted CharField allow_blank handling (\u003ccode\u003e[#1511](https://github.com/tfranzel/drf-spectacular/issues/1511) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1511\u0026gt;\u003c/code\u003e\u003cem\u003e, (\u003ccode\u003e[#1499](https://github.com/tfranzel/drf-spectacular/issues/1499) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1499\u0026gt;\u003c/code\u003e\u003c/em\u003e)) [Luciano de la Iglesia]\u003c/li\u003e\n\u003cli\u003eConsider allOf anyOf with nullable on OAS3.1 \u003ccode\u003e[#1480](https://github.com/tfranzel/drf-spectacular/issues/1480) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1480\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eProper handling for OAS 3.2\u003c/li\u003e\n\u003cli\u003efix modification of user-provided schematas \u003ccode\u003e[#1500](https://github.com/tfranzel/drf-spectacular/issues/1500) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1500\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003erelax contraint on oneOf null case with OAS3.1 \u003ccode\u003e[#1480](https://github.com/tfranzel/drf-spectacular/issues/1480) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1480\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eAdd blueprint for django-rest-knox (\u003ccode\u003e[#1506](https://github.com/tfranzel/drf-spectacular/issues/1506) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1506\u0026gt;\u003c/code\u003e_) [johnthagen]\u003c/li\u003e\n\u003cli\u003eMitigate GeneratedField lost arguments and special case for DecimalField \u003ccode\u003e[#1166](https://github.com/tfranzel/drf-spectacular/issues/1166) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1166\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eWebhook explicit operationId (\u003ccode\u003e[#1505](https://github.com/tfranzel/drf-spectacular/issues/1505) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1505\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003echange conflicting license field for 3.8 (\u003ccode\u003e[#1504](https://github.com/tfranzel/drf-spectacular/issues/1504) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1504\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eDocument django-rest-knox support [johnthagen]\u003c/li\u003e\n\u003cli\u003eadd help text to spectacular management command arguments \u003ccode\u003e[#1175](https://github.com/tfranzel/drf-spectacular/issues/1175) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1175\u0026gt;\u003c/code\u003e_ [Jean-Baptiste Braun]\u003c/li\u003e\n\u003cli\u003eMark FileField as nullable in response when not required \u003ccode\u003e[#1493](https://github.com/tfranzel/drf-spectacular/issues/1493) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1493\u0026gt;\u003c/code\u003e_ [mojtaba sohrabi]\u003c/li\u003e\n\u003cli\u003eExtend Choices hint fix with generated label description \u003ccode\u003e[#1486](https://github.com/tfranzel/drf-spectacular/issues/1486) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1486\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eSuppress py\u0026lt;=3.14 deprecation warning \u003ccode\u003e[#1497](https://github.com/tfranzel/drf-spectacular/issues/1497) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1497\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eRemove ancient DRF3.11 and Django2.2 due to contrib packages failing\u003c/li\u003e\n\u003cli\u003efeat: add support for django 6.0 and and drf 3.17 [Vjeran Grozdanic]\u003c/li\u003e\n\u003cli\u003eAdd setting to disable docstring extraction [Phil Starkey]\u003c/li\u003e\n\u003cli\u003efeat: add support for polymorphic built-in drf support [Benedikt Bauer]\u003c/li\u003e\n\u003cli\u003eClarifies post-processing hooks [Andy Piltser-Cowan]\u003c/li\u003e\n\u003cli\u003eClarifies customizations step 5 [Andy Piltser-Cowan]\u003c/li\u003e\n\u003cli\u003eFix dependency definition for Django 5.2 [Ülgen Sarıkavak]\u003c/li\u003e\n\u003cli\u003eImplement x-spec-enum-id for type hint Choices. [Noam Kushinsky]\u003c/li\u003e\n\u003cli\u003eAdd Support for unsigned integers uint16, uint32 and uint64 [Nicolas Delaby]\u003c/li\u003e\n\u003cli\u003eFix regression introduced in \u003ccode\u003e[#1450](https://github.com/tfranzel/drf-spectacular/issues/1450) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1450\u0026gt;\u003c/code\u003e_ (\u003ccode\u003e[#1469](https://github.com/tfranzel/drf-spectacular/issues/1469) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1469\u0026gt;\u003c/code\u003e_) [Oleg Höfling]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBreaking changes / important additions:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMany small improvement, bug fixes, updates to the test suite and renovated test matrix. Some minor schema corrections are to be expected, but nothing drastic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/1a5c44a15b2d06744f49285f1f58992f938a05fa\"\u003e\u003ccode\u003e1a5c44a\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/6ba553fc827613d7b36efc9d9f53043e4a2e5443\"\u003e\u003ccode\u003e6ba553f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1514\"\u003e#1514\u003c/a\u003e from tfranzel/pr1501\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d4787a4e2ef0ff4b7c6a72fe3dddf1ea8e8a963c\"\u003e\u003ccode\u003ed4787a4\u003c/code\u003e\u003c/a\u003e Adapt FileField null handling \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d8679422975c68bc3a2c97c278957ec043d915c1\"\u003e\u003ccode\u003ed867942\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1512\"\u003e#1512\u003c/a\u003e from tfranzel/housekeeping26\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/5685cf8b731f9a93d9c66003ac2569d4ef7540a8\"\u003e\u003ccode\u003e5685cf8\u003c/code\u003e\u003c/a\u003e Add OAS 3.2 schema for validation \u0026amp; test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/9fa6f7c1f8d99ef14d9dfa11b89f432ba370242f\"\u003e\u003ccode\u003e9fa6f7c\u003c/code\u003e\u003c/a\u003e minor cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/69033ea1e371fb254731c9e9164fd403ace3c5d4\"\u003e\u003ccode\u003e69033ea\u003c/code\u003e\u003c/a\u003e update linting version due to misleading security warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d9e0de6717c9953b3e9c66da6a5bc6aefb714827\"\u003e\u003ccode\u003ed9e0de6\u003c/code\u003e\u003c/a\u003e Type hint build_bearer_security_scheme_object (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1509\"\u003e#1509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/9b18b302b697ba1a5e86271a7e4d090a5995cc21\"\u003e\u003ccode\u003e9b18b30\u003c/code\u003e\u003c/a\u003e Pr1499 (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1511\"\u003e#1511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/6e3c72ea5df8e8452a2b8c3e792a7cab23814446\"\u003e\u003ccode\u003e6e3c72e\u003c/code\u003e\u003c/a\u003e Consider allOf anyOf with nullable on OAS3.1 \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1480\"\u003e#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flower` from 2.0.1 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/mher/flower/releases\"\u003eflower's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the GitLab authentication handler name by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented database filename by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented max tasks default by \u003ca href=\"https://github.com/masahiro331\"\u003e\u003ccode\u003e@​masahiro331\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1415\"\u003e#1415\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/mher/flower/blob/v2.1.0/CHANGELOG.md\"\u003eflower's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlower 2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design.\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options.\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters.\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard.\u003c/li\u003e\n\u003cli\u003eEnabled API access in the Docker Compose demo.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop.\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined.\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections.\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files.\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the GitLab authentication handler name \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the documented database filename \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\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/mher/flower/commit/3597bd1a94280cb3a3f2cbe53d0b6616f56cbde8\"\u003e\u003ccode\u003e3597bd1\u003c/code\u003e\u003c/a\u003e Set release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/d083f7317e4e273ff62de59082b89ce390cecf50\"\u003e\u003ccode\u003ed083f73\u003c/code\u003e\u003c/a\u003e Update documentation for 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b58869bcdcceb46d37d806fee8698fefd9d94bd9\"\u003e\u003ccode\u003eb58869b\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/e6cf8ef78776098bf8d3f1674056fc00dd62e388\"\u003e\u003ccode\u003ee6cf8ef\u003c/code\u003e\u003c/a\u003e Add Python 3.13 and 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/8ecede927b87e49ddb2856fbf61f7577d3c87273\"\u003e\u003ccode\u003e8ecede9\u003c/code\u003e\u003c/a\u003e Document custom authentication providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/00d310bb92914a21318052aa4ed02a996a95ca00\"\u003e\u003ccode\u003e00d310b\u003c/code\u003e\u003c/a\u003e Persist dashboard counters across restarts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/0a5116087085596a466caee4caa473da1a8b8394\"\u003e\u003ccode\u003e0a51160\u003c/code\u003e\u003c/a\u003e Purge offline workers from metrics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/72a09c8795d29b4a8e042285bff4e9ac2b7afda4\"\u003e\u003ccode\u003e72a09c8\u003c/code\u003e\u003c/a\u003e Prevent duplicate worker inspections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/17ead90a68a2eec82be3e03c9f0350f02ddc60dd\"\u003e\u003ccode\u003e17ead90\u003c/code\u003e\u003c/a\u003e Make Redis queue inspection non-blocking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b11ddcb2175c47ac0001b3744d4e3bad41bc6ba4\"\u003e\u003ccode\u003eb11ddcb\u003c/code\u003e\u003c/a\u003e Update blocking operation handling\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mher/flower/compare/v2.0.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.2.0 to 12.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove non-image ImageCms modes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9697\"\u003e#9697\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd release notes for SBOM and performance improvements \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd security release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9741\"\u003e#9741\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd release notes for Python 3.15 beta wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9696\"\u003e#9696\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eImageFont can also be used with ImageText \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9597\"\u003e#9597\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdditional guidelines for security reports \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9659\"\u003e#9659\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFixed typo \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9636\"\u003e#9636\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9591\"\u003e#9591\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRevise development support information in README \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9583\"\u003e#9583\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd INCIDENT_RESPONSE.md \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9555\"\u003e#9555\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd STRIDE threat model to security docs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9562\"\u003e#9562\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9556\"\u003e#9556\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate README with revised security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9553\"\u003e#9553\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9552\"\u003e#9552\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9534\"\u003e#9534\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9720\"\u003e#9720\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9653\"\u003e#9653\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v4 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9665\"\u003e#9665\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9655\"\u003e#9655\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libavif to v1.4.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9652\"\u003e#9652\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9651\"\u003e#9651\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency check-jsonschema to v0.37.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9650\"\u003e#9650\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate google/oss-fuzz digest to d872252 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9614\"\u003e#9614\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9609\"\u003e#9609\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libpng to v1.6.58 - autoclosed \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9608\"\u003e#9608\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9610\"\u003e#9610\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.20.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9599\"\u003e#9599\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9611\"\u003e#9611\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9607\"\u003e#9607\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMove dependency versions to single JSON and enable Renovate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9559\"\u003e#9559\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated raqm to 0.10.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9557\"\u003e#9557\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9532\"\u003e#9532\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTesting\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove matrix.os from benchmark \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9735\"\u003e#9735\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRemove references to libavif patch \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9734\"\u003e#9734\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd benchmark tests \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9654\"\u003e#9654\u003c/a\u003e [\u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUse reshape() instead of setting NumPy array shape directly \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9728\"\u003e#9728\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d\"\u003e\u003ccode\u003ebb1d8e8\u003c/code\u003e\u003c/a\u003e 12.3.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e63fc481dc2e07e21d5403deafb8f1ed98a513af\"\u003e\u003ccode\u003ee63fc48\u003c/code\u003e\u003c/a\u003e Add release notes for SBOM and performance improvements (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/13b701bbab291eec4bc87ea17ba06c94e5fe3054\"\u003e\u003ccode\u003e13b701b\u003c/code\u003e\u003c/a\u003e Add release notes for \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5564ca72fcd59d040e270af5dcf17a0d7161c364\"\u003e\u003ccode\u003e5564ca7\u003c/code\u003e\u003c/a\u003e List methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a0920fd384f800b5d0ba3dd29ecdeae4f1d4043b\"\u003e\u003ccode\u003ea0920fd\u003c/code\u003e\u003c/a\u003e Speed up ImageChops operations (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9738\"\u003e#9738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/07e9a6cd5336dc6cf8cae9165cd70cdd2b3e42fc\"\u003e\u003ccode\u003e07e9a6c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.filter()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9736\"\u003e#9736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a94578cf9649ea13e426cf7fb2b71b39ffc0dd50\"\u003e\u003ccode\u003ea94578c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.getchannel()\u003c/code\u003e, \u003ccode\u003eImage.merge()\u003c/code\u003e, \u003ccode\u003eImage.putalpha()\u003c/code\u003e and `Image...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/53e02c43c919d149b2a154a5180079f9df18fbbb\"\u003e\u003ccode\u003e53e02c4\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.fill()\u003c/code\u003e, \u003ccode\u003eImage.linear_gradient()\u003c/code\u003e and `Image.radial_gradient...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/af037475be8634ba739744243164ba9e2c8346a6\"\u003e\u003ccode\u003eaf03747\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.resample()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9739\"\u003e#9739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5c9ca56c3e5fba52b647809fbb0986c87e73a571\"\u003e\u003ccode\u003e5c9ca56\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003ealpha_composite\u003c/code\u003e, \u003ccode\u003ematrix\u003c/code\u003e, \u003ccode\u003enegative\u003c/code\u003e, \u003ccode\u003equantize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9740\"\u003e#9740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.2.0...12.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.0 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDI...\n\n_Description has been truncated_","html_url":"https://github.com/hhhylaiii/maiagent_reply_platform/pull/66","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hhhylaiii%2Fmaiagent_reply_platform/issues/66","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/66/packages"}},{"old_version":"3.17.1","new_version":"3.18.0","update_type":"minor","path":null,"pr_created_at":"2026-08-24T08:00:08.000Z","version_change":"3.17.1 → 3.18.0","issue":{"uuid":"5232428120","node_id":"PR_kwDOToTEA88AAAABAxIriw","number":20,"state":"closed","title":"build(deps): bump the python group across 1 directory with 16 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T07:57:59.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-24T08:00:08.000Z","updated_at":"2026-09-04T07:58:01.000Z","time_to_close":950271,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":16,"packages":[{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"flower","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/mher/flower"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"yfinance","old_version":"1.5.2","new_version":"1.6.0","repository_url":"https://github.com/ranaroussi/yfinance"},{"name":"coverage","old_version":"7.15.2","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.7","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.43.1","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.16.1","new_version":"0.16.4","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 16 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [flower](https://github.com/mher/flower) | `2.0.1` | `2.1.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [yfinance](https://github.com/ranaroussi/yfinance) | `1.5.2` | `1.6.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.2` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.7` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.43.1` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.1` | `0.16.4` |\n\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flower` from 2.0.1 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/mher/flower/releases\"\u003eflower's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the GitLab authentication handler name by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented database filename by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented max tasks default by \u003ca href=\"https://github.com/masahiro331\"\u003e\u003ccode\u003e@​masahiro331\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1415\"\u003e#1415\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/mher/flower/blob/v2.1.0/CHANGELOG.md\"\u003eflower's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlower 2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design.\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options.\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters.\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard.\u003c/li\u003e\n\u003cli\u003eEnabled API access in the Docker Compose demo.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop.\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined.\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections.\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files.\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the GitLab authentication handler name \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the documented database filename \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\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/mher/flower/commit/3597bd1a94280cb3a3f2cbe53d0b6616f56cbde8\"\u003e\u003ccode\u003e3597bd1\u003c/code\u003e\u003c/a\u003e Set release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/d083f7317e4e273ff62de59082b89ce390cecf50\"\u003e\u003ccode\u003ed083f73\u003c/code\u003e\u003c/a\u003e Update documentation for 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b58869bcdcceb46d37d806fee8698fefd9d94bd9\"\u003e\u003ccode\u003eb58869b\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/e6cf8ef78776098bf8d3f1674056fc00dd62e388\"\u003e\u003ccode\u003ee6cf8ef\u003c/code\u003e\u003c/a\u003e Add Python 3.13 and 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/8ecede927b87e49ddb2856fbf61f7577d3c87273\"\u003e\u003ccode\u003e8ecede9\u003c/code\u003e\u003c/a\u003e Document custom authentication providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/00d310bb92914a21318052aa4ed02a996a95ca00\"\u003e\u003ccode\u003e00d310b\u003c/code\u003e\u003c/a\u003e Persist dashboard counters across restarts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/0a5116087085596a466caee4caa473da1a8b8394\"\u003e\u003ccode\u003e0a51160\u003c/code\u003e\u003c/a\u003e Purge offline workers from metrics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/72a09c8795d29b4a8e042285bff4e9ac2b7afda4\"\u003e\u003ccode\u003e72a09c8\u003c/code\u003e\u003c/a\u003e Prevent duplicate worker inspections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/17ead90a68a2eec82be3e03c9f0350f02ddc60dd\"\u003e\u003ccode\u003e17ead90\u003c/code\u003e\u003c/a\u003e Make Redis queue inspection non-blocking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b11ddcb2175c47ac0001b3744d4e3bad41bc6ba4\"\u003e\u003ccode\u003eb11ddcb\u003c/code\u003e\u003c/a\u003e Update blocking operation handling\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mher/flower/compare/v2.0.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `yfinance` from 1.5.2 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ranaroussi/yfinance/releases\"\u003eyfinance's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003cp\u003eMain changes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ePrice repair improvements\u003c/li\u003e\n\u003cli\u003eFew new fields to Balance Sheet and Screener\u003c/li\u003e\n\u003cli\u003eMany little fixes\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull changelog \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2935\"\u003e#2935\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/foley40\"\u003e\u003ccode\u003e@​foley40\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/dokson\"\u003e\u003ccode\u003e@​dokson\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/vignesh-nagarajan-vn\"\u003e\u003ccode\u003e@​vignesh-nagarajan-vn\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/shanehull\"\u003e\u003ccode\u003e@​shanehull\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/DogInfantry\"\u003e\u003ccode\u003e@​DogInfantry\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Kaif10\"\u003e\u003ccode\u003e@​Kaif10\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/DMZ22\"\u003e\u003ccode\u003e@​DMZ22\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/Aaritp\"\u003e\u003ccode\u003e@​Aaritp\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/etbala\"\u003e\u003ccode\u003e@​etbala\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://github.com/aleks-drozy\"\u003e\u003ccode\u003e@​aleks-drozy\u003c/code\u003e\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/ranaroussi/yfinance/blob/main/CHANGELOG.rst\"\u003eyfinance's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003cp\u003eFeatures / improvements\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing balance sheet keys: FixedMaturityInvestments, EquityInves… \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2879\"\u003e#2879\u003c/a\u003e \u003ca href=\"https://github.com/foley40\"\u003e\u003ccode\u003e@​foley40\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: Screener: add dividendyield and dividendpershare.lasttwelvemonths \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2888\"\u003e#2888\u003c/a\u003e \u003ca href=\"https://github.com/shanehull\"\u003e\u003ccode\u003e@​shanehull\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't claim 'possibly delisted' when Yahoo explains the missing data \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2903\"\u003e#2903\u003c/a\u003e \u003ca href=\"https://github.com/vignesh-nagarajan-vn\"\u003e\u003ccode\u003e@​vignesh-nagarajan-vn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix error messages showing internal 15m interval for 30m requests \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2900\"\u003e#2900\u003c/a\u003e \u003ca href=\"https://github.com/vignesh-nagarajan-vn\"\u003e\u003ccode\u003e@​vignesh-nagarajan-vn\u003c/code\u003e\u003c/a\u003e\nFixes:\u003c/li\u003e\n\u003cli\u003eFix generic-unit timedelta DeprecationWarning for sub-day intervals (\u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2882\"\u003e#2882\u003c/a\u003e) \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2891\"\u003e#2891\u003c/a\u003e \u003ca href=\"https://github.com/DogInfantry\"\u003e\u003ccode\u003e@​DogInfantry\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: read-only 'Adj Close' array crash in dividend-adjust repair \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2897\"\u003e#2897\u003c/a\u003e \u003ca href=\"https://github.com/Kaif10\"\u003e\u003ccode\u003e@​Kaif10\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix AttributeError in Lookup error handling (self.ticker -\u0026gt; self.query) \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2896\"\u003e#2896\u003c/a\u003e \u003ca href=\"https://github.com/nyxst4ck\"\u003e\u003ccode\u003e@​nyxst4ck\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: handle null result from Yahoo API in _fetch_info \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2906\"\u003e#2906\u003c/a\u003e \u003ca href=\"https://github.com/foley40\"\u003e\u003ccode\u003e@​foley40\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix multi-day interval TypeError and actually silence the numpy\u0026gt;=2.5 Timedelta warning \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2915\"\u003e#2915\u003c/a\u003e \u003ca href=\"https://github.com/DMZ22\"\u003e\u003ccode\u003e@​DMZ22\u003c/code\u003e\u003c/a\u003e\nPrice repair:\u003c/li\u003e\n\u003cli\u003ePrice repair fixes \u0026amp; improvements \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2908\"\u003e#2908\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: repair=True should not permanently convert GBp/ZAc/ILA prices to main currency \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2907\"\u003e#2907\u003c/a\u003e \u003ca href=\"https://github.com/foley40\"\u003e\u003ccode\u003e@​foley40\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrice repair improvements \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2943\"\u003e#2943\u003c/a\u003e\nDocs / maintenance\u003c/li\u003e\n\u003cli\u003eFix pandas 3 timezone assertion in test_download_multi_small_interval \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2901\"\u003e#2901\u003c/a\u003e \u003ca href=\"https://github.com/vignesh-nagarajan-vn\"\u003e\u003ccode\u003e@​vignesh-nagarajan-vn\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix grammar and formatting in advanced documentation \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2909\"\u003e#2909\u003c/a\u003e \u003ca href=\"https://github.com/Aaritp\"\u003e\u003ccode\u003e@​Aaritp\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-enable test_no_expensive_calls_introduced without requests_cache \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2911\"\u003e#2911\u003c/a\u003e \u003ca href=\"https://github.com/dokson\"\u003e\u003ccode\u003e@​dokson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePin ruff ruleset for deterministic CI \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2919\"\u003e#2919\u003c/a\u003e \u003ca href=\"https://github.com/dokson\"\u003e\u003ccode\u003e@​dokson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate packaging to pyproject.toml \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2920\"\u003e#2920\u003c/a\u003e \u003ca href=\"https://github.com/dokson\"\u003e\u003ccode\u003e@​dokson\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix: NaN equality comparison  \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2933\"\u003e#2933\u003c/a\u003e \u003ca href=\"https://github.com/foley40\"\u003e\u003ccode\u003e@​foley40\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate to pyproject.toml \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2849\"\u003e#2849\u003c/a\u003e \u003ca href=\"https://github.com/etbala\"\u003e\u003ccode\u003e@​etbala\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: state download()'s actual returned index timezone contract \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2936\"\u003e#2936\u003c/a\u003e \u003ca href=\"https://github.com/aleks-drozy\"\u003e\u003ccode\u003e@​aleks-drozy\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/ranaroussi/yfinance/commit/93eb4c234acc7d0cf9d176e602b8443179546253\"\u003e\u003ccode\u003e93eb4c2\u003c/code\u003e\u003c/a\u003e Update GH actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/0af231f6a47eee5e773290830d228de0c20d5ee1\"\u003e\u003ccode\u003e0af231f\u003c/code\u003e\u003c/a\u003e Version 1.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/777dc546a2464ae1f8716fd1991da157d251575c\"\u003e\u003ccode\u003e777dc54\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2935\"\u003e#2935\u003c/a\u003e from ranaroussi/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/9b3fcbcd1a43481611c04daf990e2032275306a5\"\u003e\u003ccode\u003e9b3fcbc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2943\"\u003e#2943\u003c/a\u003e from ranaroussi/price-repair-improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/8b85f90ff92d6f90c5f31fca4cb21235dfadbfc9\"\u003e\u003ccode\u003e8b85f90\u003c/code\u003e\u003c/a\u003e Price repair improvements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/f85430919a8c6f1876e35931aee529ed8ecf8f98\"\u003e\u003ccode\u003ef854309\u003c/code\u003e\u003c/a\u003e Fix regression in PR \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2907\"\u003e#2907\u003c/a\u003e (see last comment)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/984a687ac18fb864ffd3cd99b953a47e406d256d\"\u003e\u003ccode\u003e984a687\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2936\"\u003e#2936\u003c/a\u003e from aleks-drozy/docs/download-tz-contract\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/24ee2ff842515d730cac56c847a155981f7c03fe\"\u003e\u003ccode\u003e24ee2ff\u003c/code\u003e\u003c/a\u003e docs: state download()'s actual returned index timezone contract\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/d611015d485bee175bede120d6638066fef12d05\"\u003e\u003ccode\u003ed611015\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2915\"\u003e#2915\u003c/a\u003e from DMZ22/fix-timedelta-deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranaroussi/yfinance/commit/61780c70e9bf1a8cb896e7ebdf48d22e9679545a\"\u003e\u003ccode\u003e61780c7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ranaroussi/yfinance/issues/2849\"\u003e#2849\u003c/a\u003e from etbala/dependency-management\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ranaroussi/yfinance/compare/1.5.2...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.2 to 7.15.4\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.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\u003c/blockquote\u003e\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.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in the HTML report, a source file name containing a double quote (legal\non POSIX) wasn't escaped where it's dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index\nand prev/next links, so it could close the attribute early and inject markup.\nPage URLs are now escaped. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2227_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report wrote file names and other fields into its\nline-oriented records without neutralizing control characters. A measured\nfile whose name contained a newline (legal on POSIX) could forge extra\nrecords, inflating the coverage seen by tools that read the report. Control\ncharacters in a field are now replaced. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2226_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels are now provided for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2226: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003ecoveragepy/coveragepy#2226\u003c/a\u003e\n.. _pull 2227: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003ecoveragepy/coveragepy#2227\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the\ncombination would be prevented when read from the coverage.py configuration.\nBut using the context API as pytest-cov does, contexts would be silently\ndropped. Now a warning is issued, thanks to \u003ccode\u003eJisang Han \u0026lt;pull 2234_\u0026gt;\u003c/code\u003e\u003cem\u003e.\nCloses \u003ccode\u003eissue 2200\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA performance improvement in the low-level line number bookkeeping when\ncombining data files, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2239_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance improvement in HTML reporting by reducing the number of times\nfiles have to be parsed, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2240_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2200: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003ecoveragepy/coveragepy#2200\u003c/a\u003e\n.. _pull 2234: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003ecoveragepy/coveragepy#2234\u003c/a\u003e\n.. _pull 2239: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003ecoveragepy/coveragepy#2239\u003c/a\u003e\n.. _pull 2240: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2240\"\u003ecoveragepy/coveragepy#2240\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-2:\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/4c0e7ff425ecbb33e2b994b41118a71eb4e39021\"\u003e\u003ccode\u003e4c0e7ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/db4cc3216ca5bb436eba697aaa74d886e4ea82c8\"\u003e\u003ccode\u003edb4cc32\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c33085c3fcec4dd01fc3a0419c90de7ee6b869a7\"\u003e\u003ccode\u003ec33085c\u003c/code\u003e\u003c/a\u003e style: start gradual move to ruff 0.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53a0fd51ba05047624baf58bf8f288d56185df93\"\u003e\u003ccode\u003e53a0fd5\u003c/code\u003e\u003c/a\u003e fix: neutralize control characters in lcov report fields (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b64d53dd6f113b68a19ac6c1b855e34bbebfad4e\"\u003e\u003ccode\u003eb64d53d\u003c/code\u003e\u003c/a\u003e build: make 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53792ab496adf740a38d1f67e0162705b4d67c07\"\u003e\u003ccode\u003e53792ab\u003c/code\u003e\u003c/a\u003e build: show the python version for kits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f6b03c77ffb8d58b25950bae63d36b7a1c585a70\"\u003e\u003ccode\u003ef6b03c7\u003c/code\u003e\u003c/a\u003e chore: make upgrade_one package=cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d9b660ac2a6bc64a39c4a2e7f195bb6bd6f7af89\"\u003e\u003ccode\u003ed9b660a\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b128a3172ec0cc4d70398f663e56d0362f5de4ea\"\u003e\u003ccode\u003eb128a31\u003c/code\u003e\u003c/a\u003e docs: oops, move this entry to the correct place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a7a2c15669cc6e8fdb46e5012954c795a63e9a27\"\u003e\u003ccode\u003ea7a2c15\u003c/code\u003e\u003c/a\u003e fix: escape filename urls in html report href attributes (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.2...7.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f307de14d1a533273b6de7bd39579b043eb54a99\"\u003e\u003ccode\u003ef307de1\u003c/code\u003e\u003c/a\u003e Version 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/73951a4c517bafa5369228f2fca8306510f1cbf1\"\u003e\u003ccode\u003e73951a4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2439\"\u003e#2439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/678b687e0a30c2657dc21b1d859d1141098997a0\"\u003e\u003ccode\u003e678b687\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/7627683d89fc1c77bc2dc4550f15eede9a86cee6\"\u003e\u003ccode\u003e7627683\u003c/code\u003e\u003c/a\u003e Serialize the TaskResult class for Tasks panel. (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2444\"\u003e#2444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.7 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\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/summ...\n\n_Description has been truncated_","html_url":"https://github.com/santhoshkannan-dev/TradeLoom/pull/20","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/santhoshkannan-dev%2FTradeLoom/issues/20","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/20/packages"}},{"old_version":"3.17.1","new_version":"3.18.0","update_type":"minor","path":null,"pr_created_at":"2026-08-21T23:38:18.000Z","version_change":"3.17.1 → 3.18.0","issue":{"uuid":"5219007422","node_id":"PR_kwDOTs1Bhs8AAAABAnD6VA","number":15,"state":"closed","title":"Bump the python group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-03T23:38:00.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-21T23:38:18.000Z","updated_at":"2026-09-03T23:38:02.000Z","time_to_close":1123182,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":15,"packages":[{"name":"django","old_version":"6.0.7","new_version":"6.1","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"coverage","old_version":"7.15.2","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.7","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.43.1","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.16.1","new_version":"0.16.3","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.7` | `6.1` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.2` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.7` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.43.1` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.1` | `0.16.3` |\n\n\nUpdates `django` from 6.0.7 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fe0a859f537d4238cf49fca39073513206f83122\"\u003e\u003ccode\u003efe0a859\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/62770454c1beb3e9b0ef1f7c35c5670b4df935d8\"\u003e\u003ccode\u003e6277045\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated man page for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fc78c5cdbb621dff3893c109433022896022fde1\"\u003e\u003ccode\u003efc78c5c\u003c/code\u003e\u003c/a\u003e [6.1.x] Finalized release notes for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c58d86162cd59602df96f0e716cae9849acb3ddb\"\u003e\u003ccode\u003ec58d861\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dc1b8deff467010aaae71471ae12ebc82188a8a3\"\u003e\u003ccode\u003edc1b8de\u003c/code\u003e\u003c/a\u003e [6.1.x] Added missing lang override in translation fetching helper for Serbia...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1f5bf635df6f0919191f649aef29acb3063978f2\"\u003e\u003ccode\u003e1f5bf63\u003c/code\u003e\u003c/a\u003e [6.1.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36735\"\u003e#36735\u003c/a\u003e -- Added DatabaseFeatures.supports_uuid4_function_in_defa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/809998448b45284aa6152112feb46d927b209019\"\u003e\u003ccode\u003e8099984\u003c/code\u003e\u003c/a\u003e [6.1.x] Added CVE-2026-15307, CVE-2026-15337, CVE-2026-15830, and CVE-2026-15...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a\"\u003e\u003ccode\u003e5a260d3\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15920 -- Made display_for_field() validate URLs before...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/9e4a3f186b6b07b483bfd9195ea06734663fcd06\"\u003e\u003ccode\u003e9e4a3f1\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15830 -- Mitigated potential DoS via nested geometry c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5b3523d29be25948e1dd90b3863a002f00fc865f\"\u003e\u003ccode\u003e5b3523d\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15337 -- Mitigated potential DoS in check_for_language().\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.7...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.2 to 7.15.4\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.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\u003c/blockquote\u003e\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.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in the HTML report, a source file name containing a double quote (legal\non POSIX) wasn't escaped where it's dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index\nand prev/next links, so it could close the attribute early and inject markup.\nPage URLs are now escaped. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2227_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report wrote file names and other fields into its\nline-oriented records without neutralizing control characters. A measured\nfile whose name contained a newline (legal on POSIX) could forge extra\nrecords, inflating the coverage seen by tools that read the report. Control\ncharacters in a field are now replaced. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2226_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels are now provided for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2226: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003ecoveragepy/coveragepy#2226\u003c/a\u003e\n.. _pull 2227: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003ecoveragepy/coveragepy#2227\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the\ncombination would be prevented when read from the coverage.py configuration.\nBut using the context API as pytest-cov does, contexts would be silently\ndropped. Now a warning is issued, thanks to \u003ccode\u003eJisang Han \u0026lt;pull 2234_\u0026gt;\u003c/code\u003e\u003cem\u003e.\nCloses \u003ccode\u003eissue 2200\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA performance improvement in the low-level line number bookkeeping when\ncombining data files, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2239_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance improvement in HTML reporting by reducing the number of times\nfiles have to be parsed, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2240_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2200: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003ecoveragepy/coveragepy#2200\u003c/a\u003e\n.. _pull 2234: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003ecoveragepy/coveragepy#2234\u003c/a\u003e\n.. _pull 2239: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003ecoveragepy/coveragepy#2239\u003c/a\u003e\n.. _pull 2240: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2240\"\u003ecoveragepy/coveragepy#2240\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-2:\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/4c0e7ff425ecbb33e2b994b41118a71eb4e39021\"\u003e\u003ccode\u003e4c0e7ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/db4cc3216ca5bb436eba697aaa74d886e4ea82c8\"\u003e\u003ccode\u003edb4cc32\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c33085c3fcec4dd01fc3a0419c90de7ee6b869a7\"\u003e\u003ccode\u003ec33085c\u003c/code\u003e\u003c/a\u003e style: start gradual move to ruff 0.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53a0fd51ba05047624baf58bf8f288d56185df93\"\u003e\u003ccode\u003e53a0fd5\u003c/code\u003e\u003c/a\u003e fix: neutralize control characters in lcov report fields (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b64d53dd6f113b68a19ac6c1b855e34bbebfad4e\"\u003e\u003ccode\u003eb64d53d\u003c/code\u003e\u003c/a\u003e build: make 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53792ab496adf740a38d1f67e0162705b4d67c07\"\u003e\u003ccode\u003e53792ab\u003c/code\u003e\u003c/a\u003e build: show the python version for kits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f6b03c77ffb8d58b25950bae63d36b7a1c585a70\"\u003e\u003ccode\u003ef6b03c7\u003c/code\u003e\u003c/a\u003e chore: make upgrade_one package=cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d9b660ac2a6bc64a39c4a2e7f195bb6bd6f7af89\"\u003e\u003ccode\u003ed9b660a\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b128a3172ec0cc4d70398f663e56d0362f5de4ea\"\u003e\u003ccode\u003eb128a31\u003c/code\u003e\u003c/a\u003e docs: oops, move this entry to the correct place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a7a2c15669cc6e8fdb46e5012954c795a63e9a27\"\u003e\u003ccode\u003ea7a2c15\u003c/code\u003e\u003c/a\u003e fix: escape filename urls in html report href attributes (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.2...7.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f307de14d1a533273b6de7bd39579b043eb54a99\"\u003e\u003ccode\u003ef307de1\u003c/code\u003e\u003c/a\u003e Version 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/73951a4c517bafa5369228f2fca8306510f1cbf1\"\u003e\u003ccode\u003e73951a4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2439\"\u003e#2439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/678b687e0a30c2657dc21b1d859d1141098997a0\"\u003e\u003ccode\u003e678b687\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/7627683d89fc1c77bc2dc4550f15eede9a86cee6\"\u003e\u003ccode\u003e7627683\u003c/code\u003e\u003c/a\u003e Serialize the TaskResult class for Tasks panel. (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2444\"\u003e#2444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.7 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\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/typeddjango/django-stubs/commit/2ec3fd3ce48e7a92cbe09a114d512dcea50571f7\"\u003e\u003ccode\u003e2ec3fd3\u003c/code\u003e\u003c/a\u003e Version 6.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5868773c9fa5ba236c2cc263799a02acc67f7c0b\"\u003e\u003ccode\u003e5868773\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.69.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3588\"\u003e#3588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e888491e34e5b9073f1c09eb84e91ed7ce36c775\"\u003e\u003ccode\u003ee888491\u003c/code\u003e\u003c/a\u003e Support custom arguments in queryset update methods (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3586\"\u003e#3586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ffd15cac28c39690acd98c3f9af9370f9fadedce\"\u003e\u003ccode\u003effd15ca\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3583\"\u003e#3583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1af6dcf52f19837fdc47b26350d351dea0a139c1\"\u003e\u003ccode\u003e1af6dcf\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.68.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/709e864c79e03239be2234457f59eb66ce69e3c7\"\u003e\u003ccode\u003e709e864\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.69 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5da937c127b581501b5707b547d861b46d8af41c\"\u003e\u003ccode\u003e5da937c\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.68 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3579\"\u003e#3579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7afd2da77ed93d0b3164ea4d203648a6c972f161\"\u003e\u003ccode\u003e7afd2da\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.67 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/07e22f2e4918163d1f3aa1137142cf281b5fbcb1\"\u003e\u003ccode\u003e07e22f2\u003c/code\u003e\u003c/a\u003e Explicit through default manager (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3576\"\u003e#3576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/db47c3b32275b6d6abef915303fd80fde3dd59da\"\u003e\u003ccode\u003edb47c3b\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.17 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.7...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.31.1 to 1.32.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.32.0 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#681](https://github.com/adamchainz/django-upgrade/issues/681) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/681\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eutils_text \u0026lt;utils_text\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003eunescape_entities()\u003c/code\u003e calls with \u003ccode\u003ehtml.unescape()\u003c/code\u003e.\nPreviously it incorrectly used \u003ccode\u003ehtml.escape()\u003c/code\u003e, which performs the inverse operation.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#684](https://github.com/adamchainz/django-upgrade/issues/684) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/684\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer crash on empty \u003ccode\u003eindex_together\u003c/code\u003e declarations.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#685](https://github.com/adamchainz/django-upgrade/issues/685) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/685\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to not add a duplicate \u003ccode\u003eindexes\u003c/code\u003e declaration when the existing one is not a list or tuple literal.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#686](https://github.com/adamchainz/django-upgrade/issues/686) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/686\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to add a missing comma when extending a multiline \u003ccode\u003eindexes\u003c/code\u003e list that has no trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#687](https://github.com/adamchainz/django-upgrade/issues/687) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/687\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to keep an empty \u003ccode\u003eindexes\u003c/code\u003e tuple a tuple when extending it with a single index.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#716](https://github.com/adamchainz/django-upgrade/issues/716) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/716\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eformat_html \u0026lt;format_html\u0026gt;\u003c/code\u003e fixer to skip calls with a parenthesized argument, where removing the \u003ccode\u003e.format()\u003c/code\u003e call would create a tuple.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#717](https://github.com/adamchainz/django-upgrade/issues/717) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/717\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer to add a missing comma before \u003ccode\u003enull=True\u003c/code\u003e when the final argument contains commas within brackets.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#688](https://github.com/adamchainz/django-upgrade/issues/688) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/688\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix fixers that modify call arguments to not treat a comment inside otherwise empty parentheses as an argument, which made the :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer produce invalid syntax.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#718](https://github.com/adamchainz/django-upgrade/issues/718) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/718\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to avoid a double comma when the existing \u003ccode\u003eheaders=\u003c/code\u003e dict has a trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#689](https://github.com/adamchainz/django-upgrade/issues/689) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/689\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to insert converted headers at the start of an existing \u003ccode\u003eheaders=\u003c/code\u003e dict.\nDjango gives \u003ccode\u003eheaders=\u003c/code\u003e entries precedence over \u003ccode\u003eHTTP_\u003c/code\u003e arguments, and the last duplicate key wins in a dict literal, so appending converted entries at the end previously flipped which value took effect.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#723](https://github.com/adamchainz/django-upgrade/issues/723) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/723\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etestcase_databases \u0026lt;testcase_databases\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003emulti_db = False\u003c/code\u003e to \u003ccode\u003edatabases = [\u0026quot;default\u0026quot;]\u003c/code\u003e rather than \u003ccode\u003edatabases = []\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/423ab5081e037d3c692113d654d49ea9e3ee0066\"\u003e\u003ccode\u003e423ab50\u003c/code\u003e\u003c/a\u003e Version 1.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7b1224a970289729eb50a1fffca04844a8c1ab1f\"\u003e\u003ccode\u003e7b1224a\u003c/code\u003e\u003c/a\u003e Tidy changelog (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/63607890eb3090bded91c6432b43948a1757bd1e\"\u003e\u003ccode\u003e6360789\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eforms_model_multiple_choice_field\u003c/code\u003e corrupting concatenated keys (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/728\"\u003e#728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/02a46831ceb213421761f312e1368fa7b7e796d9\"\u003e\u003ccode\u003e02a4683\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etestcase_databases\u003c/code\u003e mapping of \u003ccode\u003emulti_db = False\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/727\"\u003e#727\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/bc85eb958b63b752cbd7454d6378e51ca50d891d\"\u003e\u003ccode\u003ebc85eb9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_decorators\u003c/code\u003e hoisting values above their definitions (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/726\"\u003e#726\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/4eb5abf3734ba10c96dd53abdf98e50c78c4adae\"\u003e\u003ccode\u003e4eb5abf\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eadmin_register\u003c/code\u003e referencing models defined after the admin class (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/725\"\u003e#725\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d782084a4fe43286d6b4b2d11676efad0a1356cb\"\u003e\u003ccode\u003ed782084\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003esettings_storages\u003c/code\u003e erasing settings referenced elsewhere (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/2f3eb7571f87ae8c62389ac8f977935f81fbe58e\"\u003e\u003ccode\u003e2f3eb75\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003etest_http_headers\u003c/code\u003e precedence when merging into \u003ccode\u003eheaders=\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/723\"\u003e#723\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/d750615a98098ff0c44477041932a04089d5aa47\"\u003e\u003ccode\u003ed750615\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003estringagg\u003c/code\u003e moving import despite bare \u003ccode\u003eStringAgg\u003c/code\u003e references (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/722\"\u003e#722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/49cb8b9c2297d329a8f858beb54fb34e7274830a\"\u003e\u003ccode\u003e49cb8b9\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eutils_timezone\u003c/code\u003e matching aliased \u003ccode\u003eutc\u003c/code\u003e imports (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/720\"\u003e#720\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/adamchainz/django-upgrade/compare/1.31.1...1.32.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThis is the first version to be based on DRF 3.18\u003c/li\u003e\n\u003cli\u003eThis is the last version to support \u003ccode\u003edjango-stubs\u003c/code\u003e 6.0.x - next release will require 6.1.x\u003c/li\u003e\n\u003cli\u003eThis is the last version to support Python 3.10 - following django-stubs upstream\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop obsolete coreapi/coreschema from stubs (removed in DRF 3.17) by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1025\"\u003etypeddjango/djangorestframework-stubs#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate stubs for djangorestframework 3.18.0 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1030\"\u003etypeddjango/djangorestframework-stubs#1030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUnlock django-stubs dev dependency pinning in pyproject.toml by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1033\"\u003etypeddjango/djangorestframework-stubs#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1034\"\u003etypeddjango/djangorestframework-stubs#1034\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.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/typeddjango/djangorestframework-stubs/commit/18a30a10d0f0f6811fbd52c27a68d5a0396ae3bb\"\u003e\u003ccode\u003e18a30a1\u003c/code\u003e\u003c/a\u003e Version 3.18.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/31c54035164fd91bc60cb384519ed34bf255e8fa\"\u003e\u003ccode\u003e31c5403\u003c/code\u003e\u003c/a\u003e Update stubs for djangorestframework 3.18.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/40522032009bc3fb8914b5858ffc62979969c4d8\"\u003e\u003ccode\u003e4052203\u003c/code\u003e\u003c/a\u003e Unlock django-stubs pinning in pyproject.toml (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/ebb2bcc45fcdf9304d85efc7e8b2f477c4482b95\"\u003e\u003ccode\u003eebb2bcc\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1031\"\u003e#1031\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/c34d9bb79ada9af7293302c7fcb66ff344a56b69\"\u003e\u003ccode\u003ec34d9bb\u003c/code\u003e\u003c/a\u003e Update dependency django to ==6.1.* (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1023\"\u003e#1023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/762c2d1de8722c640b18afbc4dbf1b3423bd2b5b\"\u003e\u003ccode\u003e762c2d1\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1028\"\u003e#1028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/135195b6d8d52b3c833c65d010df8b4be5fae4ea\"\u003e\u003ccode\u003e135195b\u003c/code\u003e\u003c/a\u003e Update dependency pre-commit to v4.6.2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1027\"\u003e#1027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/41decd6d3de29391fd2aed96aa7750dab572bf40\"\u003e\u003ccode\u003e41decd6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/f5ced24033de0cd0ae75c8f3bbe76753ed2527d4\"\u003e\u003ccode\u003ef5ced24\u003c/code\u003e\u003c/a\u003e Remove coreapi/coreschema from stubs (DRF 3.17+) (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b7ef8fb3a3654cb40f6352f0514050b3ed5a941b\"\u003e\u003ccode\u003eb7ef8fb\u003c/code\u003e\u003c/a\u003e Update dependency djangorestframework to v3.18.0 \u0026amp; create new allowlist (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1024\"\u003e#1024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djlint` from 1.43.1 to 1.44.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/djlint/djLint/releases\"\u003edjlint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.44.2\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eH037\u003c/code\u003e no longer reports two attributes whose names differ only before a \u003ccode\u003e.\u003c/code\u003e as duplicates (\u003ccode\u003edata-a.checked\u003c/code\u003e and \u003ccode\u003edata-b.checked\u003c/code\u003e, or alpine's \u003ccode\u003ex-on:click.prevent\u003c/code\u003e and \u003ccode\u003ex-on:keyup.prevent\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAn attribute whose name merely ends in the name a rule looks for is no longer mistaken for it. \u003ccode\u003edata-alt\u003c/code\u003e and \u003ccode\u003edata-x.alt\u003c/code\u003e left \u003ccode\u003eH013\u003c/code\u003e silent on an image with no \u003ccode\u003ealt\u003c/code\u003e, \u003ccode\u003edata-lang\u003c/code\u003e and \u003ccode\u003exml:lang\u003c/code\u003e silenced \u003ccode\u003eH005\u003c/code\u003e, \u003ccode\u003edata-height\u003c/code\u003e and \u003ccode\u003edata-width\u003c/code\u003e silenced \u003ccode\u003eH006\u003c/code\u003e, \u003ccode\u003edata-name=\u0026quot;description\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH030\u003c/code\u003e and \u003ccode\u003edata-name=\u0026quot;keywords\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH031\u003c/code\u003e, and \u003ccode\u003edata-x.id\u003c/code\u003e satisfied a \u003ccode\u003e\u0026lt;label for\u0026gt;\u003c/code\u003e for \u003ccode\u003eH042\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eA name written inside an attribute value is no longer read as an attribute. \u003ccode\u003etitle=\u0026quot;alt=x\u0026quot;\u003c/code\u003e left \u003ccode\u003eH013\u003c/code\u003e silent, \u003ccode\u003eclass=\u0026quot;language-en\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH005\u003c/code\u003e, and \u003ccode\u003etitle=\u0026quot;the ID=5\u0026quot;\u003c/code\u003e was reported by \u003ccode\u003eH010\u003c/code\u003e as an uppercase attribute name.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eH005\u003c/code\u003e no longer reports a tag whose name only starts with \u003ccode\u003ehtml\u003c/code\u003e, such as \u003ccode\u003e\u0026lt;htmlx\u0026gt;\u003c/code\u003e, and points at the \u003ccode\u003e\u0026lt;html\u0026gt;\u003c/code\u003e tag itself rather than at everything up to the last \u003ccode\u003e\u0026gt;\u003c/code\u003e in the file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.44.1\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFormatting no longer changes what the page renders. A space that shows was dropped (\u003ccode\u003e\u0026lt;span\u0026gt;a\u0026lt;/span\u0026gt;\u0026lt;span\u0026gt; b \u0026lt;/span\u0026gt;\u003c/code\u003e rendered as \u003ccode\u003eab\u003c/code\u003e, \u003ccode\u003ea{% if x %} b {% endif %}c\u003c/code\u003e as \u003ccode\u003eabc\u003c/code\u003e), a space that shows nothing was added (\u003ccode\u003e\u0026lt;span\u0026gt;     \u0026lt;/span\u0026gt;\u003c/code\u003e became \u003ccode\u003e\u0026lt;span\u0026gt; \u0026lt;/span\u0026gt;\u003c/code\u003e), and moving a tag onto its own line could add one (\u003ccode\u003ex\u0026lt;img\u0026gt;y\u003c/code\u003e, or across a comment as in \u003ccode\u003ea{# c #}\u0026lt;img\u0026gt;\u003c/code\u003e). Whitespace is now kept where it renders and dropped where it does not.\u003c/li\u003e\n\u003cli\u003eA line break inside an attribute value is kept, so a \u003ccode\u003etitle\u003c/code\u003e tooltip no longer loses a line and a \u003ccode\u003edata-\u003c/code\u003e value read by script no longer comes back different. Line breaks in \u003ccode\u003eclass\u003c/code\u003e, \u003ccode\u003estyle\u003c/code\u003e, \u003ccode\u003esrcset\u003c/code\u003e and \u003ccode\u003esizes\u003c/code\u003e mean nothing and are still joined.\u003c/li\u003e\n\u003cli\u003eIndentation inside \u003ccode\u003e\u0026lt;pre\u0026gt;\u003c/code\u003e and \u003ccode\u003e\u0026lt;textarea\u0026gt;\u003c/code\u003e is left alone when the closing tag has something after it on its line (\u003ccode\u003e\u0026lt;pre\u0026gt;  a\\n  b\u0026lt;/pre\u0026gt; tail\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWhitespace css does not collapse, such as U+2005, is text, and is no longer stripped from the edges of an element or of the file.\u003c/li\u003e\n\u003cli\u003eTwo indenting fixes: a line that closes one tag and opens another (\u003ccode\u003e\u0026lt;/b\u0026gt;\u0026lt;i\u0026gt;\u003c/code\u003e) indents its contents again, and a line that closes more tags than it opens unindents even when a whole tag ends it (\u003ccode\u003e\u0026lt;/b\u0026gt;\u0026lt;small\u0026gt;\u0026lt;/small\u0026gt;\u003c/code\u003e). Both left the lines after them at the wrong level.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e--line-break-after-multiline-tag\u003c/code\u003e now applies only to tags actually written over several lines, as its help says. It was holding back the content of every element, splitting tags that fit on one line.\u003c/li\u003e\n\u003cli\u003eA \u003ccode\u003eclass\u003c/code\u003e value is tidied wherever it was written: \u003ccode\u003eclass=\u0026quot; a  b \u0026quot;\u003c/code\u003e becomes \u003ccode\u003eclass=\u0026quot;a b\u0026quot;\u003c/code\u003e. A tag whose attribute value holds a line break is spread over lines, since it cannot fit on one.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.44.0\u003c/h2\u003e\n\u003ch3\u003eFeature\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ccode\u003e--allow-empty-input\u003c/code\u003e option, and the matching \u003ccode\u003eallow_empty_input\u003c/code\u003e config key, exits \u003ccode\u003e0\u003c/code\u003e instead o...\n\n_Description has been truncated_","html_url":"https://github.com/kathalsahab/expense_tracker/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/kathalsahab%2Fexpense_tracker/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"}},{"old_version":"3.17.1","new_version":"3.18.0","update_type":"minor","path":null,"pr_created_at":"2026-08-21T18:38:25.000Z","version_change":"3.17.1 → 3.18.0","issue":{"uuid":"5217114662","node_id":"PR_kwDOToIJA88AAAABAlj9Qg","number":15,"state":"closed","title":"Bump the python group across 1 directory with 17 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T18:36:22.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-21T18:38:25.000Z","updated_at":"2026-09-04T18:36:24.000Z","time_to_close":1209477,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":17,"packages":[{"name":"django","old_version":"6.0.7","new_version":"6.1","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"redis","old_version":"8.0.1","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.15.2","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.7","new_version":"6.1.0"},{"name":"django-upgrade","old_version":"1.31.1","new_version":"1.32.0","repository_url":"https://github.com/adamchainz/django-upgrade"},{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.43.1","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.3.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.1","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.16.0","new_version":"0.16.3","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 17 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.7` | `6.1` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [django-anymail[sendgrid]](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [redis](https://github.com/redis/redis-py) | `8.0.1` | `8.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.2` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.7` | `6.1.0` |\n| [django-upgrade](https://github.com/adamchainz/django-upgrade) | `1.31.1` | `1.32.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.1` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.43.1` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.3.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.1` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.16.0` | `0.16.3` |\n\n\nUpdates `django` from 6.0.7 to 6.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fe0a859f537d4238cf49fca39073513206f83122\"\u003e\u003ccode\u003efe0a859\u003c/code\u003e\u003c/a\u003e [6.1.x] Bumped version for 6.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/62770454c1beb3e9b0ef1f7c35c5670b4df935d8\"\u003e\u003ccode\u003e6277045\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated man page for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fc78c5cdbb621dff3893c109433022896022fde1\"\u003e\u003ccode\u003efc78c5c\u003c/code\u003e\u003c/a\u003e [6.1.x] Finalized release notes for Django 6.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c58d86162cd59602df96f0e716cae9849acb3ddb\"\u003e\u003ccode\u003ec58d861\u003c/code\u003e\u003c/a\u003e [6.1.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dc1b8deff467010aaae71471ae12ebc82188a8a3\"\u003e\u003ccode\u003edc1b8de\u003c/code\u003e\u003c/a\u003e [6.1.x] Added missing lang override in translation fetching helper for Serbia...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1f5bf635df6f0919191f649aef29acb3063978f2\"\u003e\u003ccode\u003e1f5bf63\u003c/code\u003e\u003c/a\u003e [6.1.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/36735\"\u003e#36735\u003c/a\u003e -- Added DatabaseFeatures.supports_uuid4_function_in_defa...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/809998448b45284aa6152112feb46d927b209019\"\u003e\u003ccode\u003e8099984\u003c/code\u003e\u003c/a\u003e [6.1.x] Added CVE-2026-15307, CVE-2026-15337, CVE-2026-15830, and CVE-2026-15...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5a260d309a4c8010c2ebda24eb758a5d95e2508a\"\u003e\u003ccode\u003e5a260d3\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15920 -- Made display_for_field() validate URLs before...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/9e4a3f186b6b07b483bfd9195ea06734663fcd06\"\u003e\u003ccode\u003e9e4a3f1\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15830 -- Mitigated potential DoS via nested geometry c...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5b3523d29be25948e1dd90b3863a002f00fc865f\"\u003e\u003ccode\u003e5b3523d\u003c/code\u003e\u003c/a\u003e [6.1.x] Fixed CVE-2026-15337 -- Mitigated potential DoS in check_for_language().\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.7...6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail[sendgrid]` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail[sendgrid]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail[sendgrid]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\nin Django's documentation for recommendations.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.1 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreams\u003c/strong\u003e — \u003ccode\u003eMAXCOUNT\u003c/code\u003e / \u003ccode\u003eMAXSIZE\u003c/code\u003e options for \u003ccode\u003eXREAD\u003c/code\u003e and \u003ccode\u003eXREADGROUP\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTime Series\u003c/strong\u003e — \u003ccode\u003eTS.READ\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e), \u003ccode\u003eTS.QUERYLABELS\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e), \u003ccode\u003eTS.NRANGE\u003c/code\u003e / \u003ccode\u003eTS.NREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e),\nand an \u003ccode\u003eexclude_empty\u003c/code\u003e (\u003ccode\u003eEXCLUDEEMPTY\u003c/code\u003e) option for \u003ccode\u003eTS.MRANGE\u003c/code\u003e / \u003ccode\u003eTS.MREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSearch\u003c/strong\u003e — \u003ccode\u003eFT.ALIASLIST\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e) and a \u003ccode\u003eCOLLECT\u003c/code\u003e reducer for aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSentinel\u003c/strong\u003e — replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TS.NRANGE and TS.NREVRANGE support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.READ command support to the timeseries module (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add SDIFFCARD and SUNIONCARD command support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add LMOVEM and BLMOVEM commands for moving multiple list elements (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add async maintenance-notifications support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add COLLECT reducer support to search aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and TS.MREVRANGE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.QUERYLABELS support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Experimental\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add client-side HIMPORT fieldset support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe feature considered unstable and \u003cstrong\u003epublic API might be changed in the future minor version\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: detect closed pooled connection without consuming pending push data (RESP3 + hiredis) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4156\"\u003e#4156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Sentinel pool capacity loss after failover (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4193\"\u003e#4193\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683\"\u003e\u003ccode\u003ee013126\u003c/code\u003e\u003c/a\u003e Testing with 8.10 GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4227\"\u003e#4227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1\"\u003e\u003ccode\u003e059d1e9\u003c/code\u003e\u003c/a\u003e Fixed TS.NRANGE commands to correctly apply aggregators (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4225\"\u003e#4225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f\"\u003e\u003ccode\u003ed486a0a\u003c/code\u003e\u003c/a\u003e Fix FIELDNAME alias dropping first character of un-prefixed fields (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4224\"\u003e#4224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2\"\u003e\u003ccode\u003efb93104\u003c/code\u003e\u003c/a\u003e feat: add client-side HIMPORT fieldset support for standalone and cluster cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9\"\u003e\u003ccode\u003e9197609\u003c/code\u003e\u003c/a\u003e Fix lat/lon swap in search querystring geo() helper (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb\"\u003e\u003ccode\u003e14714a0\u003c/code\u003e\u003c/a\u003e fix: Fixed double decoding issue with unquote() (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a\"\u003e\u003ccode\u003e227280a\u003c/code\u003e\u003c/a\u003e Update lib version to 8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056\"\u003e\u003ccode\u003e88d16d0\u003c/code\u003e\u003c/a\u003e Decode ACL LOG string values on the default RESP3 legacy callback (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4201\"\u003e#4201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76\"\u003e\u003ccode\u003e599fd75\u003c/code\u003e\u003c/a\u003e feat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7\"\u003e\u003ccode\u003e71e275e\u003c/code\u003e\u003c/a\u003e test: add VectorField RERANK serialization tests for sync and async search (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v8.0.1...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.2 to 7.15.4\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.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\u003c/blockquote\u003e\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.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in the HTML report, a source file name containing a double quote (legal\non POSIX) wasn't escaped where it's dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index\nand prev/next links, so it could close the attribute early and inject markup.\nPage URLs are now escaped. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2227_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report wrote file names and other fields into its\nline-oriented records without neutralizing control characters. A measured\nfile whose name contained a newline (legal on POSIX) could forge extra\nrecords, inflating the coverage seen by tools that read the report. Control\ncharacters in a field are now replaced. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2226_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels are now provided for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2226: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003ecoveragepy/coveragepy#2226\u003c/a\u003e\n.. _pull 2227: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003ecoveragepy/coveragepy#2227\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the\ncombination would be prevented when read from the coverage.py configuration.\nBut using the context API as pytest-cov does, contexts would be silently\ndropped. Now a warning is issued, thanks to \u003ccode\u003eJisang Han \u0026lt;pull 2234_\u0026gt;\u003c/code\u003e\u003cem\u003e.\nCloses \u003ccode\u003eissue 2200\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA performance improvement in the low-level line number bookkeeping when\ncombining data files, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2239_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance improvement in HTML reporting by reducing the number of times\nfiles have to be parsed, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2240_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2200: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003ecoveragepy/coveragepy#2200\u003c/a\u003e\n.. _pull 2234: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003ecoveragepy/coveragepy#2234\u003c/a\u003e\n.. _pull 2239: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003ecoveragepy/coveragepy#2239\u003c/a\u003e\n.. _pull 2240: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2240\"\u003ecoveragepy/coveragepy#2240\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-2:\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/4c0e7ff425ecbb33e2b994b41118a71eb4e39021\"\u003e\u003ccode\u003e4c0e7ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/db4cc3216ca5bb436eba697aaa74d886e4ea82c8\"\u003e\u003ccode\u003edb4cc32\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c33085c3fcec4dd01fc3a0419c90de7ee6b869a7\"\u003e\u003ccode\u003ec33085c\u003c/code\u003e\u003c/a\u003e style: start gradual move to ruff 0.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53a0fd51ba05047624baf58bf8f288d56185df93\"\u003e\u003ccode\u003e53a0fd5\u003c/code\u003e\u003c/a\u003e fix: neutralize control characters in lcov report fields (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b64d53dd6f113b68a19ac6c1b855e34bbebfad4e\"\u003e\u003ccode\u003eb64d53d\u003c/code\u003e\u003c/a\u003e build: make 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53792ab496adf740a38d1f67e0162705b4d67c07\"\u003e\u003ccode\u003e53792ab\u003c/code\u003e\u003c/a\u003e build: show the python version for kits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f6b03c77ffb8d58b25950bae63d36b7a1c585a70\"\u003e\u003ccode\u003ef6b03c7\u003c/code\u003e\u003c/a\u003e chore: make upgrade_one package=cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d9b660ac2a6bc64a39c4a2e7f195bb6bd6f7af89\"\u003e\u003ccode\u003ed9b660a\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b128a3172ec0cc4d70398f663e56d0362f5de4ea\"\u003e\u003ccode\u003eb128a31\u003c/code\u003e\u003c/a\u003e docs: oops, move this entry to the correct place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a7a2c15669cc6e8fdb46e5012954c795a63e9a27\"\u003e\u003ccode\u003ea7a2c15\u003c/code\u003e\u003c/a\u003e fix: escape filename urls in html report href attributes (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.2...7.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize TaskResult in the Tasks panel to accommodate the storage mechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel’s kwargs column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize the TaskResult class for Tasks panel. by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2444\"\u003edjango-commons/django-debug-toolbar#2444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.1.0...7.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.1 (2026-08-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSerialize \u003ccode\u003eTaskResult\u003c/code\u003e in the Tasks panel to accommodate the storage\nmechanism.\u003c/li\u003e\n\u003cli\u003eRemoved whitespace on Task panel's \u003ccode\u003ekwargs\u003c/code\u003e column.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f307de14d1a533273b6de7bd39579b043eb54a99\"\u003e\u003ccode\u003ef307de1\u003c/code\u003e\u003c/a\u003e Version 7.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/73951a4c517bafa5369228f2fca8306510f1cbf1\"\u003e\u003ccode\u003e73951a4\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2439\"\u003e#2439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/678b687e0a30c2657dc21b1d859d1141098997a0\"\u003e\u003ccode\u003e678b687\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2442\"\u003e#2442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/7627683d89fc1c77bc2dc4550f15eede9a86cee6\"\u003e\u003ccode\u003e7627683\u003c/code\u003e\u003c/a\u003e Serialize the TaskResult class for Tasks panel. (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2444\"\u003e#2444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.7 to 6.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eThis is the first Django 6.1 release 🎉\u003c/p\u003e\n\u003cp\u003eDjango 6.0 and 5.2 are now in partial support mode.\nDjango 5.1 and 5.0 support was dropped (techically they would still work, but we don't test them no more).\nPython 3.10 support was dropped.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eBootstrap Django 6.1 by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3563\"\u003etypeddjango/django-stubs#3563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency django to v5.2.17 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3575\"\u003etypeddjango/django-stubs#3575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExplicit through default manager by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3576\"\u003etypeddjango/django-stubs#3576\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport custom arguments in queryset update methods by \u003ca href=\"https://github.com/WhyNotHugo\"\u003e\u003ccode\u003e@​WhyNotHugo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3586\"\u003etypeddjango/django-stubs#3586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 6.1.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3589\"\u003etypeddjango/django-stubs#3589\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFeedback is very welcome! 👍\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.9...6.1.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\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/typeddjango/django-stubs/commit/2ec3fd3ce48e7a92cbe09a114d512dcea50571f7\"\u003e\u003ccode\u003e2ec3fd3\u003c/code\u003e\u003c/a\u003e Version 6.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5868773c9fa5ba236c2cc263799a02acc67f7c0b\"\u003e\u003ccode\u003e5868773\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.69.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3588\"\u003e#3588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e888491e34e5b9073f1c09eb84e91ed7ce36c775\"\u003e\u003ccode\u003ee888491\u003c/code\u003e\u003c/a\u003e Support custom arguments in queryset update methods (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3586\"\u003e#3586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ffd15cac28c39690acd98c3f9af9370f9fadedce\"\u003e\u003ccode\u003effd15ca\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3583\"\u003e#3583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1af6dcf52f19837fdc47b26350d351dea0a139c1\"\u003e\u003ccode\u003e1af6dcf\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.68.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3582\"\u003e#3582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/709e864c79e03239be2234457f59eb66ce69e3c7\"\u003e\u003ccode\u003e709e864\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.69 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3580\"\u003e#3580\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5da937c127b581501b5707b547d861b46d8af41c\"\u003e\u003ccode\u003e5da937c\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.68 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3579\"\u003e#3579\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7afd2da77ed93d0b3164ea4d203648a6c972f161\"\u003e\u003ccode\u003e7afd2da\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.67 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3578\"\u003e#3578\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/07e22f2e4918163d1f3aa1137142cf281b5fbcb1\"\u003e\u003ccode\u003e07e22f2\u003c/code\u003e\u003c/a\u003e Explicit through default manager (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3576\"\u003e#3576\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/db47c3b32275b6d6abef915303fd80fde3dd59da\"\u003e\u003ccode\u003edb47c3b\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.17 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3575\"\u003e#3575\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.7...6.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-upgrade` from 1.31.1 to 1.32.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/adamchainz/django-upgrade/blob/main/docs/changelog.rst\"\u003edjango-upgrade's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.32.0 (2026-08-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSupport Python 3.15.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#681](https://github.com/adamchainz/django-upgrade/issues/681) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/681\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eutils_text \u0026lt;utils_text\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003eunescape_entities()\u003c/code\u003e calls with \u003ccode\u003ehtml.unescape()\u003c/code\u003e.\nPreviously it incorrectly used \u003ccode\u003ehtml.escape()\u003c/code\u003e, which performs the inverse operation.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#684](https://github.com/adamchainz/django-upgrade/issues/684) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/684\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer crash on empty \u003ccode\u003eindex_together\u003c/code\u003e declarations.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#685](https://github.com/adamchainz/django-upgrade/issues/685) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/685\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to not add a duplicate \u003ccode\u003eindexes\u003c/code\u003e declaration when the existing one is not a list or tuple literal.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#686](https://github.com/adamchainz/django-upgrade/issues/686) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/686\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to add a missing comma when extending a multiline \u003ccode\u003eindexes\u003c/code\u003e list that has no trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#687](https://github.com/adamchainz/django-upgrade/issues/687) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/687\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eindex_together \u0026lt;index_together\u0026gt;\u003c/code\u003e fixer to keep an empty \u003ccode\u003eindexes\u003c/code\u003e tuple a tuple when extending it with a single index.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#716](https://github.com/adamchainz/django-upgrade/issues/716) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/716\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003eformat_html \u0026lt;format_html\u0026gt;\u003c/code\u003e fixer to skip calls with a parenthesized argument, where removing the \u003ccode\u003e.format()\u003c/code\u003e call would create a tuple.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#717](https://github.com/adamchainz/django-upgrade/issues/717) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/717\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer to add a missing comma before \u003ccode\u003enull=True\u003c/code\u003e when the final argument contains commas within brackets.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#688](https://github.com/adamchainz/django-upgrade/issues/688) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/688\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix fixers that modify call arguments to not treat a comment inside otherwise empty parentheses as an argument, which made the :ref:\u003ccode\u003enull_boolean_field \u0026lt;null_boolean_field\u0026gt;\u003c/code\u003e fixer produce invalid syntax.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#718](https://github.com/adamchainz/django-upgrade/issues/718) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/718\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to avoid a double comma when the existing \u003ccode\u003eheaders=\u003c/code\u003e dict has a trailing comma.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#689](https://github.com/adamchainz/django-upgrade/issues/689) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/689\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etest_http_headers \u0026lt;test_http_headers\u0026gt;\u003c/code\u003e fixer to insert converted headers at the start of an existing \u003ccode\u003eheaders=\u003c/code\u003e dict.\nDjango gives \u003ccode\u003eheaders=\u003c/code\u003e entries precedence over \u003ccode\u003eHTTP_\u003c/code\u003e arguments, and the last duplicate key wins in a dict literal, so appending converted entries at the end previously flipped which value took effect.\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003ePR [#723](https://github.com/adamchainz/django-upgrade/issues/723) \u0026lt;https://github.com/adamchainz/django-upgrade/pull/723\u0026gt;\u003c/code\u003e__.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix :ref:\u003ccode\u003etestcase_databases \u0026lt;testcase_databases\u0026gt;\u003c/code\u003e fixer to rewrite \u003ccode\u003emulti_db = False\u003c/code\u003e to \u003ccode\u003edatabases = [\u0026quot;default\u0026quot;]\u003c/code\u003e rather than \u003ccode\u003edatabases = []\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/423ab5081e037d3c692113d654d49ea9e3ee0066\"\u003e\u003ccode\u003e423ab50\u003c/code\u003e\u003c/a\u003e Version 1.32.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/7b1224a970289729eb50a1fffca04844a8c1ab1f\"\u003e\u003ccode\u003e7b1224a\u003c/code\u003e\u003c/a\u003e Tidy changelog (\u003ca href=\"https://redirect.github.com/adamchainz/django-upgrade/issues/729\"\u003e#729\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/adamchainz/django-upgrade/commit/63607890eb3090bded91c6432b43948a1757bd1e\"\u003e\u003ccode\u003e6360789\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eforms_model_multiple_choice_field...\n\n_Description has been truncated_","html_url":"https://github.com/tchongwangbakayoko619-star/api_gestion_biblotheque/pull/15","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tchongwangbakayoko619-star%2Fapi_gestion_biblotheque/issues/15","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/15/packages"}},{"old_version":"3.17.0","new_version":"3.18.0","update_type":"minor","path":null,"pr_created_at":"2026-08-21T17:08:34.000Z","version_change":"3.17.0 → 3.18.0","issue":{"uuid":"5216433842","node_id":"PR_kwDOTJHTL88AAAABAlBHzQ","number":96,"state":"closed","title":"chore(deps): bump the python group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-09-04T17:08:05.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-21T17:08:34.000Z","updated_at":"2026-09-04T17:08:07.000Z","time_to_close":1209571,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":19,"packages":[{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.1"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1"},{"name":"django-crispy-forms","old_version":"2.6","new_version":"2.7","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"drf-spectacular","old_version":"0.29.0","new_version":"0.30.0","repository_url":"https://github.com/tfranzel/drf-spectacular"},{"name":"flower","old_version":"2.0.1","new_version":"2.1.0","repository_url":"https://github.com/mher/flower"},{"name":"gunicorn","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"redis","old_version":"8.0.1","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.14.3","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.1","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.6","new_version":"6.1.0"},{"name":"djangorestframework-stubs","old_version":"3.17.0","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.39.5","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.1","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.0","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.15.20","new_version":"0.16.3","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 19 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.1` |\n| [django-anymail[mailgun]](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.6` | `2.7` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [drf-spectacular](https://github.com/tfranzel/drf-spectacular) | `0.29.0` | `0.30.0` |\n| [flower](https://github.com/mher/flower) | `2.0.1` | `2.1.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `26.0.0` | `26.1.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [redis](https://github.com/redis/redis-py) | `8.0.1` | `8.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.14.3` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.6` | `6.1.0` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.0` | `3.18.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.39.5` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.1` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.0` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.20` | `0.16.3` |\n\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail[mailgun]` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail[mailgun]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail[mailgun]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\nin Django's documentation for recommendations.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.6 to 2.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/e7fbb538595dde3a4598b4403e60ecca0905fa74\"\u003e\u003ccode\u003ee7fbb53\u003c/code\u003e\u003c/a\u003e Release 2.7. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1438\"\u003e#1438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/9d6b32129dea4c89caa87218a11192503646b9da\"\u003e\u003ccode\u003e9d6b321\u003c/code\u003e\u003c/a\u003e Bumped github actions versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/974b5b7390c0b11698c348128b164990cb6f044b\"\u003e\u003ccode\u003e974b5b7\u003c/code\u003e\u003c/a\u003e Bumped RTD OS and Python versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/5218268f520ca19c665e6f02a49df647eb977af6\"\u003e\u003ccode\u003e5218268\u003c/code\u003e\u003c/a\u003e Confirmed support for Django 6.1. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/847873cf09f0ee96beb38273190860008a6712dd\"\u003e\u003ccode\u003e847873c\u003c/code\u003e\u003c/a\u003e docs: replace 'basestring' with 'str' (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.6...2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular` from 0.29.0 to 0.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tfranzel/drf-spectacular/releases\"\u003edrf-spectacular's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.30.0\u003c/h2\u003e\n\u003cp\u003eAfter working through the backlog for several week, we are finally in a comfortable place again. Thank you to all contributors and users that waited patiently for me the catch up. It does not include all the PRs that were opened, but imho the most critical ones.\u003c/p\u003e\n\u003cp\u003eThis release includes many small improvement, a few bug fixes, updates to the test suite and a renovated test matrix. Some minor schema corrections are to be expected, but nothing drastic. It is mostly fixing small inconsistencies and improving corner cases.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix regression introduced in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1450\"\u003e#1450\u003c/a\u003e by \u003ca href=\"https://github.com/hoefling\"\u003e\u003ccode\u003e@​hoefling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1469\"\u003etfranzel/drf-spectacular#1469\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix dependency definition for Django 5.2 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1487\"\u003etfranzel/drf-spectacular#1487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for Django 6.0 and and DRF 3.17 by \u003ca href=\"https://github.com/vgrozdanic\"\u003e\u003ccode\u003e@​vgrozdanic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1496\"\u003etfranzel/drf-spectacular#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Support for unsigned integers uint16, uint32 and uint64 by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1483\"\u003etfranzel/drf-spectacular#1483\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplement x-spec-enum-id for type hint Choices. by \u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1486\"\u003etfranzel/drf-spectacular#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClarifies Docs in Customizations.rst by \u003ca href=\"https://github.com/APCBoston\"\u003e\u003ccode\u003e@​APCBoston\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1489\"\u003etfranzel/drf-spectacular#1489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd setting to disable docstring extraction by \u003ca href=\"https://github.com/philipstarkey\"\u003e\u003ccode\u003e@​philipstarkey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1491\"\u003etfranzel/drf-spectacular#1491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add support for polymorphic built-in drf support by \u003ca href=\"https://github.com/mastacheata\"\u003e\u003ccode\u003e@​mastacheata\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1490\"\u003etfranzel/drf-spectacular#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocument \u003ccode\u003edjango-rest-knox\u003c/code\u003e support by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1503\"\u003etfranzel/drf-spectacular#1503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd help text to spectacular management command arguments \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1175\"\u003e#1175\u003c/a\u003e by \u003ca href=\"https://github.com/jbbqqf\"\u003e\u003ccode\u003e@​jbbqqf\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1502\"\u003etfranzel/drf-spectacular#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echange conflicting license field for 3.8 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1504\"\u003etfranzel/drf-spectacular#1504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1438 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1505\"\u003etfranzel/drf-spectacular#1505\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd blueprint for django-rest-knox by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1506\"\u003etfranzel/drf-spectacular#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1499 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1511\"\u003etfranzel/drf-spectacular#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType hint build_bearer_security_scheme_object by \u003ca href=\"https://github.com/johnthagen\"\u003e\u003ccode\u003e@​johnthagen\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1509\"\u003etfranzel/drf-spectacular#1509\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHousekeeping by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1512\"\u003etfranzel/drf-spectacular#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePr1501 by \u003ca href=\"https://github.com/tfranzel\"\u003e\u003ccode\u003e@​tfranzel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1514\"\u003etfranzel/drf-spectacular#1514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix nullable FileField response schema when blank=True (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1493\"\u003e#1493\u003c/a\u003e) by \u003ca href=\"https://github.com/mojtabasohrabi\"\u003e\u003ccode\u003e@​mojtabasohrabi\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1501\"\u003etfranzel/drf-spectacular#1501\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/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1487\"\u003etfranzel/drf-spectacular#1487\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vgrozdanic\"\u003e\u003ccode\u003e@​vgrozdanic\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1496\"\u003etfranzel/drf-spectacular#1496\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1486\"\u003etfranzel/drf-spectacular#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/APCBoston\"\u003e\u003ccode\u003e@​APCBoston\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1489\"\u003etfranzel/drf-spectacular#1489\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/philipstarkey\"\u003e\u003ccode\u003e@​philipstarkey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1491\"\u003etfranzel/drf-spectacular#1491\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mastacheata\"\u003e\u003ccode\u003e@​mastacheata\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1490\"\u003etfranzel/drf-spectacular#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jbbqqf\"\u003e\u003ccode\u003e@​jbbqqf\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1502\"\u003etfranzel/drf-spectacular#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mojtabasohrabi\"\u003e\u003ccode\u003e@​mojtabasohrabi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/pull/1501\"\u003etfranzel/drf-spectacular#1501\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.0\"\u003ehttps://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.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/tfranzel/drf-spectacular/blob/master/CHANGELOG.rst\"\u003edrf-spectacular's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.30.0 (2026-07-06)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd OAS 3.2 schema for validation \u0026amp; test\u003c/li\u003e\n\u003cli\u003eType hint build_bearer_security_scheme_object (\u003ccode\u003e[#1509](https://github.com/tfranzel/drf-spectacular/issues/1509) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1509\u0026gt;\u003c/code\u003e_) [johnthagen]\u003c/li\u003e\n\u003cli\u003eFix formatted CharField allow_blank handling (\u003ccode\u003e[#1511](https://github.com/tfranzel/drf-spectacular/issues/1511) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1511\u0026gt;\u003c/code\u003e\u003cem\u003e, (\u003ccode\u003e[#1499](https://github.com/tfranzel/drf-spectacular/issues/1499) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1499\u0026gt;\u003c/code\u003e\u003c/em\u003e)) [Luciano de la Iglesia]\u003c/li\u003e\n\u003cli\u003eConsider allOf anyOf with nullable on OAS3.1 \u003ccode\u003e[#1480](https://github.com/tfranzel/drf-spectacular/issues/1480) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1480\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eProper handling for OAS 3.2\u003c/li\u003e\n\u003cli\u003efix modification of user-provided schematas \u003ccode\u003e[#1500](https://github.com/tfranzel/drf-spectacular/issues/1500) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1500\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003erelax contraint on oneOf null case with OAS3.1 \u003ccode\u003e[#1480](https://github.com/tfranzel/drf-spectacular/issues/1480) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1480\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eAdd blueprint for django-rest-knox (\u003ccode\u003e[#1506](https://github.com/tfranzel/drf-spectacular/issues/1506) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1506\u0026gt;\u003c/code\u003e_) [johnthagen]\u003c/li\u003e\n\u003cli\u003eMitigate GeneratedField lost arguments and special case for DecimalField \u003ccode\u003e[#1166](https://github.com/tfranzel/drf-spectacular/issues/1166) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1166\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eWebhook explicit operationId (\u003ccode\u003e[#1505](https://github.com/tfranzel/drf-spectacular/issues/1505) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1505\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003echange conflicting license field for 3.8 (\u003ccode\u003e[#1504](https://github.com/tfranzel/drf-spectacular/issues/1504) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1504\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eDocument django-rest-knox support [johnthagen]\u003c/li\u003e\n\u003cli\u003eadd help text to spectacular management command arguments \u003ccode\u003e[#1175](https://github.com/tfranzel/drf-spectacular/issues/1175) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1175\u0026gt;\u003c/code\u003e_ [Jean-Baptiste Braun]\u003c/li\u003e\n\u003cli\u003eMark FileField as nullable in response when not required \u003ccode\u003e[#1493](https://github.com/tfranzel/drf-spectacular/issues/1493) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1493\u0026gt;\u003c/code\u003e_ [mojtaba sohrabi]\u003c/li\u003e\n\u003cli\u003eExtend Choices hint fix with generated label description \u003ccode\u003e[#1486](https://github.com/tfranzel/drf-spectacular/issues/1486) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1486\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eSuppress py\u0026lt;=3.14 deprecation warning \u003ccode\u003e[#1497](https://github.com/tfranzel/drf-spectacular/issues/1497) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1497\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003eRemove ancient DRF3.11 and Django2.2 due to contrib packages failing\u003c/li\u003e\n\u003cli\u003efeat: add support for django 6.0 and and drf 3.17 [Vjeran Grozdanic]\u003c/li\u003e\n\u003cli\u003eAdd setting to disable docstring extraction [Phil Starkey]\u003c/li\u003e\n\u003cli\u003efeat: add support for polymorphic built-in drf support [Benedikt Bauer]\u003c/li\u003e\n\u003cli\u003eClarifies post-processing hooks [Andy Piltser-Cowan]\u003c/li\u003e\n\u003cli\u003eClarifies customizations step 5 [Andy Piltser-Cowan]\u003c/li\u003e\n\u003cli\u003eFix dependency definition for Django 5.2 [Ülgen Sarıkavak]\u003c/li\u003e\n\u003cli\u003eImplement x-spec-enum-id for type hint Choices. [Noam Kushinsky]\u003c/li\u003e\n\u003cli\u003eAdd Support for unsigned integers uint16, uint32 and uint64 [Nicolas Delaby]\u003c/li\u003e\n\u003cli\u003eFix regression introduced in \u003ccode\u003e[#1450](https://github.com/tfranzel/drf-spectacular/issues/1450) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1450\u0026gt;\u003c/code\u003e_ (\u003ccode\u003e[#1469](https://github.com/tfranzel/drf-spectacular/issues/1469) \u0026lt;https://github.com/tfranzel/drf-spectacular/issues/1469\u0026gt;\u003c/code\u003e_) [Oleg Höfling]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBreaking changes / important additions:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eMany small improvement, bug fixes, updates to the test suite and renovated test matrix. Some minor schema corrections are to be expected, but nothing drastic.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/1a5c44a15b2d06744f49285f1f58992f938a05fa\"\u003e\u003ccode\u003e1a5c44a\u003c/code\u003e\u003c/a\u003e version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/6ba553fc827613d7b36efc9d9f53043e4a2e5443\"\u003e\u003ccode\u003e6ba553f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1514\"\u003e#1514\u003c/a\u003e from tfranzel/pr1501\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d4787a4e2ef0ff4b7c6a72fe3dddf1ea8e8a963c\"\u003e\u003ccode\u003ed4787a4\u003c/code\u003e\u003c/a\u003e Adapt FileField null handling \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d8679422975c68bc3a2c97c278957ec043d915c1\"\u003e\u003ccode\u003ed867942\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1512\"\u003e#1512\u003c/a\u003e from tfranzel/housekeeping26\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/5685cf8b731f9a93d9c66003ac2569d4ef7540a8\"\u003e\u003ccode\u003e5685cf8\u003c/code\u003e\u003c/a\u003e Add OAS 3.2 schema for validation \u0026amp; test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/9fa6f7c1f8d99ef14d9dfa11b89f432ba370242f\"\u003e\u003ccode\u003e9fa6f7c\u003c/code\u003e\u003c/a\u003e minor cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/69033ea1e371fb254731c9e9164fd403ace3c5d4\"\u003e\u003ccode\u003e69033ea\u003c/code\u003e\u003c/a\u003e update linting version due to misleading security warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/d9e0de6717c9953b3e9c66da6a5bc6aefb714827\"\u003e\u003ccode\u003ed9e0de6\u003c/code\u003e\u003c/a\u003e Type hint build_bearer_security_scheme_object (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1509\"\u003e#1509\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/9b18b302b697ba1a5e86271a7e4d090a5995cc21\"\u003e\u003ccode\u003e9b18b30\u003c/code\u003e\u003c/a\u003e Pr1499 (\u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1511\"\u003e#1511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular/commit/6e3c72ea5df8e8452a2b8c3e792a7cab23814446\"\u003e\u003ccode\u003e6e3c72e\u003c/code\u003e\u003c/a\u003e Consider allOf anyOf with nullable on OAS3.1 \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular/issues/1480\"\u003e#1480\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tfranzel/drf-spectacular/compare/0.29.0...0.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `flower` from 2.0.1 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/mher/flower/releases\"\u003eflower's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ev2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the GitLab authentication handler name by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented database filename by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFixed the documented max tasks default by \u003ca href=\"https://github.com/masahiro331\"\u003e\u003ccode\u003e@​masahiro331\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/mher/flower/issues/1415\"\u003e#1415\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/mher/flower/blob/v2.1.0/CHANGELOG.md\"\u003eflower's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eFlower 2.1.0\u003c/h1\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded read-only mode for the UI and API \u003ca href=\"https://redirect.github.com/mher/flower/issues/1468\"\u003e#1468\u003c/a\u003e by \u003ca href=\"https://github.com/MrEarle\"\u003e\u003ccode\u003e@​MrEarle\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated the UI with a responsive design.\u003c/li\u003e\n\u003cli\u003eAdded persistent dark mode with light and system theme options.\u003c/li\u003e\n\u003cli\u003eAdded a browser favicon \u003ca href=\"https://redirect.github.com/mher/flower/issues/1502\"\u003e#1502\u003c/a\u003e by \u003ca href=\"https://github.com/rolfws\"\u003e\u003ccode\u003e@​rolfws\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved task search with boolean operators and field filters.\u003c/li\u003e\n\u003cli\u003ePreserved task-table preferences across visits \u003ca href=\"https://redirect.github.com/mher/flower/issues/1333\"\u003e#1333\u003c/a\u003e by \u003ca href=\"https://github.com/fretman92\"\u003e\u003ccode\u003e@​fretman92\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded TLS support for Redis Sentinel \u003ca href=\"https://redirect.github.com/mher/flower/issues/1327\"\u003e#1327\u003c/a\u003e by \u003ca href=\"https://github.com/cyberjunk\"\u003e\u003ccode\u003e@​cyberjunk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded AMQPS support for RabbitMQ connections by \u003ca href=\"https://github.com/borland667\"\u003e\u003ccode\u003e@​borland667\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdated and auto-provisioned the Grafana dashboard.\u003c/li\u003e\n\u003cli\u003eEnabled API access in the Docker Compose demo.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance and reliability\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved blocking broker and control operations off the I/O loop.\u003c/li\u003e\n\u003cli\u003eMade Redis queue inspection asynchronous and pipelined.\u003c/li\u003e\n\u003cli\u003ePrevented duplicate worker inspections.\u003c/li\u003e\n\u003cli\u003eFixed broker connection leaks \u003ca href=\"https://redirect.github.com/mher/flower/issues/1490\"\u003e#1490\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePurged stale offline-worker Prometheus metrics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1128\"\u003e#1128\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePersisted dashboard counters across restarts \u003ca href=\"https://redirect.github.com/mher/flower/issues/787\"\u003e#787\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved handling of missing custom configuration files.\u003c/li\u003e\n\u003cli\u003eFixed startup banner output when using a dynamic port \u003ca href=\"https://redirect.github.com/mher/flower/issues/1449\"\u003e#1449\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker active-task totals when counts are null \u003ca href=\"https://redirect.github.com/mher/flower/issues/1511\"\u003e#1511\u003c/a\u003e by \u003ca href=\"https://github.com/M4RC0Sx\"\u003e\u003ccode\u003e@​M4RC0Sx\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed undefined worker pool grow and shrink values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1324\"\u003e#1324\u003c/a\u003e by \u003ca href=\"https://github.com/daydaychen\"\u003e\u003ccode\u003e@​daydaychen\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Redis SSL configurations \u003ca href=\"https://redirect.github.com/mher/flower/issues/1177\"\u003e#1177\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed percent-encoded IPv6 broker addresses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1220\"\u003e#1220\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eStopped exposing broker alternate URLs in worker statistics \u003ca href=\"https://redirect.github.com/mher/flower/issues/1512\"\u003e#1512\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed broker page rendering when queue inspection fails \u003ca href=\"https://redirect.github.com/mher/flower/issues/1501\"\u003e#1501\u003c/a\u003e by \u003ca href=\"https://github.com/alexei\"\u003e\u003ccode\u003e@​alexei\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed autoscaling response interpolation \u003ca href=\"https://redirect.github.com/mher/flower/issues/1427\"\u003e#1427\u003c/a\u003e by \u003ca href=\"https://github.com/funkyrailroad\"\u003e\u003ccode\u003e@​funkyrailroad\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eImproved GitHub OAuth errors when email access is unavailable \u003ca href=\"https://redirect.github.com/mher/flower/issues/1486\"\u003e#1486\u003c/a\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003ePrevented authentication failures while rendering error pages \u003ca href=\"https://redirect.github.com/mher/flower/issues/1268\"\u003e#1268\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/mher/flower/issues/1499\"\u003e#1499\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task search for non-string values \u003ca href=\"https://redirect.github.com/mher/flower/issues/1401\"\u003e#1401\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed task state filters to require the state prefix \u003ca href=\"https://redirect.github.com/mher/flower/issues/1516\"\u003e#1516\u003c/a\u003e by \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed worker names in timeout and rate-limit error responses \u003ca href=\"https://redirect.github.com/mher/flower/issues/1506\"\u003e#1506\u003c/a\u003e by \u003ca href=\"https://github.com/phanky1\"\u003e\u003ccode\u003e@​phanky1\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDocumented custom authentication providers \u003ca href=\"https://redirect.github.com/mher/flower/issues/1344\"\u003e#1344\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the GitLab authentication handler name \u003ca href=\"https://redirect.github.com/mher/flower/issues/1325\"\u003e#1325\u003c/a\u003e by \u003ca href=\"https://github.com/Saluev\"\u003e\u003ccode\u003e@​Saluev\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the persistent database CLI example \u003ca href=\"https://redirect.github.com/mher/flower/issues/1326\"\u003e#1326\u003c/a\u003e by \u003ca href=\"https://github.com/hatamiarash7\"\u003e\u003ccode\u003e@​hatamiarash7\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFixed the Grafana example URL \u003ca href=\"https://redirect.github.com/mher/flower/issues/1345\"\u003e#1345\u003c/a\u003e by \u003ca href=\"https://github.com/NiclasvanEyk\"\u003e\u003ccode\u003e@​NiclasvanEyk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the nginx reverse-proxy example by \u003ca href=\"https://github.com/titovanton\"\u003e\u003ccode\u003e@​titovanton\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdded the GitHub repository link to the documentation by \u003ca href=\"https://github.com/PamelaM\"\u003e\u003ccode\u003e@​PamelaM\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCorrected the documented database filename \u003ca href=\"https://redirect.github.com/mher/flower/issues/1494\"\u003e#1494\u003c/a\u003e by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\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/mher/flower/commit/3597bd1a94280cb3a3f2cbe53d0b6616f56cbde8\"\u003e\u003ccode\u003e3597bd1\u003c/code\u003e\u003c/a\u003e Set release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/d083f7317e4e273ff62de59082b89ce390cecf50\"\u003e\u003ccode\u003ed083f73\u003c/code\u003e\u003c/a\u003e Update documentation for 2.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b58869bcdcceb46d37d806fee8698fefd9d94bd9\"\u003e\u003ccode\u003eb58869b\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'origin/master' into 2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/e6cf8ef78776098bf8d3f1674056fc00dd62e388\"\u003e\u003ccode\u003ee6cf8ef\u003c/code\u003e\u003c/a\u003e Add Python 3.13 and 3.14 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/8ecede927b87e49ddb2856fbf61f7577d3c87273\"\u003e\u003ccode\u003e8ecede9\u003c/code\u003e\u003c/a\u003e Document custom authentication providers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/00d310bb92914a21318052aa4ed02a996a95ca00\"\u003e\u003ccode\u003e00d310b\u003c/code\u003e\u003c/a\u003e Persist dashboard counters across restarts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/0a5116087085596a466caee4caa473da1a8b8394\"\u003e\u003ccode\u003e0a51160\u003c/code\u003e\u003c/a\u003e Purge offline workers from metrics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/72a09c8795d29b4a8e042285bff4e9ac2b7afda4\"\u003e\u003ccode\u003e72a09c8\u003c/code\u003e\u003c/a\u003e Prevent duplicate worker inspections\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/17ead90a68a2eec82be3e03c9f0350f02ddc60dd\"\u003e\u003ccode\u003e17ead90\u003c/code\u003e\u003c/a\u003e Make Redis queue inspection non-blocking\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mher/flower/commit/b11ddcb2175c47ac0001b3744d4e3bad41bc6ba4\"\u003e\u003ccode\u003eb11ddcb\u003c/code\u003e\u003c/a\u003e Update blocking operation handling\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mher/flower/compare/v2.0.1...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 26.0.0 to 26.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003egunicorn 26.1.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eGlob patterns in \u003ccode\u003ereload_extra_files\u003c/code\u003e\u003c/strong\u003e: entries containing \u003ccode\u003e*\u003c/code\u003e, \u003ccode\u003e?\u003c/code\u003e or \u003ccode\u003e[\u003c/code\u003e\nare treated as patterns, so \u003ccode\u003eui/*/config.json\u003c/code\u003e watches every view's config\nwithout listing them one by one. Patterns are re-expanded on every reload\ncheck rather than once at startup, so a file created later starts being\nwatched without restarting gunicorn, and \u003ccode\u003e**\u003c/code\u003e recurses. A pattern matching\nnothing warns instead of failing, since with live expansion it may match later\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/1643\"\u003e#1643\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3662\"\u003e#3662\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eDependency floors raised past known advisories\u003c/strong\u003e: every declared floor was\nchecked against the advisory database. \u003ccode\u003etornado\u003c/code\u003e, \u003ccode\u003eh2\u003c/code\u003e, \u003ccode\u003esetuptools\u003c/code\u003e and\n\u003ccode\u003epymdown-extensions\u003c/code\u003e permitted vulnerable versions and now require the first\nclean release; \u003ccode\u003epytest\u003c/code\u003e and \u003ccode\u003ehttpx\u003c/code\u003e were unpinned and now carry floors. The\n\u003ccode\u003etornado\u003c/code\u003e example pinned \u003ccode\u003etornado\u0026lt;6\u003c/code\u003e, which was both the source of several\nadvisories and older than the \u003ccode\u003e\u0026gt;=6.5.0\u003c/code\u003e the tornado worker needs, so the\nexample could not run as pinned.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eSIGHUP did not reload the logger configuration\u003c/strong\u003e: \u003ccode\u003eArbiter.reload()\u003c/code\u003e\nre-read the configuration file but kept using the logger built at startup,\ncalling only \u003ccode\u003ereopen_files()\u003c/code\u003e on its existing handlers. Changes to\n\u003ccode\u003elogconfig\u003c/code\u003e, \u003ccode\u003elogconfig_dict\u003c/code\u003e, \u003ccode\u003elogconfig_json\u003c/code\u003e and \u003ccode\u003eloglevel\u003c/code\u003e were ignored\nuntil a full restart, which in containers meant replacing the pod. The\nexisting logger now re-runs its setup on reload, so new handlers, formats\nand levels take effect while the process identity and its listeners are\npreserved, and re-running the setup no longer stacks duplicate syslog\nhandlers. An invalid log configuration on reload is not fatal either: the\nerror is reported on stderr, the previous working configuration is restored\nand the master keeps running with it\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3353\"\u003e#3353\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eTruncated chunked bodies accepted\u003c/strong\u003e: RFC 9112 section 7.1.2 ends a chunked\nbody with \u003ccode\u003e0 CRLF CRLF\u003c/code\u003e, the second CRLF being the mandatory empty trailer\nsection. \u003ccode\u003eChunkedReader.parse_chunk_size()\u003c/code\u003e swallowed the \u003ccode\u003eNoMoreData\u003c/code\u003e raised\nwhile scanning for it, so a body cut short right after the last chunk line was\ntreated as complete instead of rejected. It now raises\n\u003ccode\u003eChunkMissingTerminator\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3382\"\u003e#3382\u003c/a\u003e,\n\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3685\"\u003e#3685\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ccode\u003e--spew\u003c/code\u003e crashed on dynamically generated code\u003c/strong\u003e: the trace hook indexed the\n2-tuple returned by \u003ccode\u003einspect.getsourcelines()\u003c/code\u003e by line number rather than\nindexing the list of lines, so a frame with no \u003ccode\u003e__file__\u003c/code\u003e raised\n\u003ccode\u003eAttributeError: 'int' object has no attribute 'rstrip'\u003c/code\u003e on line 1 and\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/benoitc/gunicorn/commit/71b59a75820dd4a762dc42a3280124168b4e44a8\"\u003e\u003ccode\u003e71b59a7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3698\"\u003e#3698\u003c/a\u003e from benoitc/fix/docker-health-check-readerror\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/48287de8d8360825c85ac981ddfe9c80dba3b418\"\u003e\u003ccode\u003e48287de\u003c/code\u003e\u003c/a\u003e test: catch every transport error in the docker health check\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/3110e8c37f716ca0ed63ca7f80c7c9ea0fbbdd50\"\u003e\u003ccode\u003e3110e8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3696\"\u003e#3696\u003c/a\u003e from benoitc/docs/roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cc56c410b7103c1f2b877279f81cb3a14705315a\"\u003e\u003ccode\u003ecc56c41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3693\"\u003e#3693\u003c/a\u003e from benoitc/release/26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5cf1f1651a40fa36afe13fde623e3437ca872463\"\u003e\u003ccode\u003e5cf1f16\u003c/code\u003e\u003c/a\u003e docs: surface the roadmap on the site home page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7e35f72d135056c37da321becf22b19aeec06937\"\u003e\u003ccode\u003e7e35f72\u003c/code\u003e\u003c/a\u003e docs: add FastCGI to the roadmap and point items at Ideas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/18ddc586c9b9513b25e92c6ed6f818f66ff3abcd\"\u003e\u003ccode\u003e18ddc58\u003c/code\u003e\u003c/a\u003e docs: drop the framework and reverse-proxy non-goals from the roadmap\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/1ecae56ebd096ee4f94d12c59a36f240ce348572\"\u003e\u003ccode\u003e1ecae56\u003c/code\u003e\u003c/a\u003e docs: add a roadmap and make the chat easy to find\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/ca412e3f7134bd9f0e91851778ae6d8dd222cf41\"\u003e\u003ccode\u003eca412e3\u003c/code\u003e\u003c/a\u003e docs: sync the Latest changelog page with 26.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/640936fb29f7bdf5665d5b7f919783bb73e2f981\"\u003e\u003ccode\u003e640936f\u003c/code\u003e\u003c/a\u003e docs: note the dependency security work in 26.1.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/26.0.0...26.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.2.0 to 12.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove non-image ImageCms modes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9697\"\u003e#9697\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd release notes for SBOM and performance improvements \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd security release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9741\"\u003e#9741\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd release notes for Python 3.15 beta wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9696\"\u003e#9696\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eImageFont can also be used with ImageText \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9597\"\u003e#9597\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdditional guidelines for security reports \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9659\"\u003e#9659\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFixed typo \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9636\"\u003e#9636\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9591\"\u003e#9591\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRevise development support information in README \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9583\"\u003e#9583\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd INCIDENT_RESPONSE.md \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9555\"\u003e#9555\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd STRIDE threat model to security docs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9562\"\u003e#9562\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9556\"\u003e#9556\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate README with revised security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9553\"\u003e#9553\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9552\"\u003e#9552\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9534\"\u003e#9534\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9720\"\u003e#9720\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9653\"\u003e#9653\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v4 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9665\"\u003e#9665\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9655\"\u003e#9655\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libavif to v1.4.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9652\"\u003e#9652\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9651\"\u003e#9651\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency check-jsonschema to v0.37.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9650\"\u003e#9650\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate google/oss-fuzz digest to d872252 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9614\"\u003e#9614\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9609\"\u003e#9609\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libpng to v1.6.58 - autoclosed \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9608\"\u003e#9608\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9610\"\u003e#9610\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.20.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9599\"\u003e#9599\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9611\"\u003e#9611\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9607\"\u003e#9607\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMove dependency versions to single JSON and enable Renovate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9559\"\u003e#9559\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated raqm to 0.10.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9557\"\u003e#9557\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9532\"\u003e#9532\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTesting\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove matrix.os from benchmark \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9735\"\u003e#9735\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRemove references to libavif patch \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9734\"\u003e#9734\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd benchmark tests \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9654\"\u003e#9654\u003c/a\u003e [\u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUse reshape() instead of setting NumPy array shape directly \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9728\"\u003e#9728\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d\"\u003e\u003ccode\u003ebb1d8e8\u003c/code\u003e\u003c/a\u003e 12.3.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e63fc481dc2e07e21d5403deafb8f1ed98a513af\"\u003e\u003ccode\u003ee63fc48\u003c/code\u003e\u003c/a\u003e Add release notes for SBOM and performance improvements (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/13b701bbab291eec4bc87ea17ba06c94e5fe3054\"\u003e\u003ccode\u003e13b701b\u003c/code\u003e\u003c/a\u003e Add release notes for \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5564ca72fcd59d040e270af5dcf17a0d7161c364\"\u003e\u003ccode\u003e5564ca7\u003c/code\u003e\u003c/a\u003e List methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a0920fd384f800b5d0ba3dd29ecdeae4f1d4043b\"\u003e\u003ccode\u003ea0920fd\u003c/code\u003e\u003c/a\u003e Speed up ImageChops operations (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9738\"\u003e#9738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/07e9a6cd5336dc6cf8cae9165cd70cdd2b3e42fc\"\u003e\u003ccode\u003e07e9a6c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.filter()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9736\"\u003e#9736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a94578cf9649ea13e426cf7fb2b71b39ffc0dd50\"\u003e\u003ccode\u003ea94578c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.getchannel()\u003c/code\u003e, \u003ccode\u003eImage.merge()\u003c/code\u003e, \u003ccode\u003eImage.putalpha()\u003c/code\u003e and `Image...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/53e02c43c919d149b2a154a5180079f9df18fbbb\"\u003e\u003ccode\u003e53e02c4\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.fill()\u003c/code\u003e, \u003ccode\u003eImage.linear_gradient()\u003c/code\u003e and `Image.radial_gradient...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/af037475be8634ba739744243164ba9e2c8346a6\"\u003e\u003ccode\u003eaf03747\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.resample()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9739\"\u003e#9739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5c9ca56c3e5fba52b647809fbb0986c87e73a571\"\u003e\u003ccode\u003e5c9ca56\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003ealpha_composite\u003c/code\u003e, \u003ccode\u003ematrix\u003c/code\u003e, \u003ccode\u003enegative\u003c/code\u003e, \u003ccode\u003equantize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9740\"\u003e#9740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.2.0...12.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.1 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href...\n\n_Description has been truncated_","html_url":"https://github.com/shaoqian-dev/ConvoCore/pull/96","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/shaoqian-dev%2FConvoCore/issues/96","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/96/packages"}},{"old_version":"3.17.1","new_version":"3.18.0","update_type":"minor","path":null,"pr_created_at":"2026-08-17T18:36:31.000Z","version_change":"3.17.1 → 3.18.0","issue":{"uuid":"5174264670","node_id":"PR_kwDOISxU_88AAAABADJM4g","number":2260,"state":"open","title":"Bump djangorestframework-stubs from 3.17.1 to 3.18.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-08-17T18:36:31.000Z","updated_at":"2026-08-30T04:15:55.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"djangorestframework-stubs","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"}],"path":null,"ecosystem":"pip"},"body":"Bumps [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) from 3.17.1 to 3.18.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eThis is the first version to be based on DRF 3.18\u003c/li\u003e\n\u003cli\u003eThis is the last version to support \u003ccode\u003edjango-stubs\u003c/code\u003e 6.0.x - next release will require 6.1.x\u003c/li\u003e\n\u003cli\u003eThis is the last version to support Python 3.10 - following django-stubs upstream\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop obsolete coreapi/coreschema from stubs (removed in DRF 3.17) by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1025\"\u003etypeddjango/djangorestframework-stubs#1025\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate stubs for djangorestframework 3.18.0 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\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/typeddjango/djangorestframework-stubs/pull/1030\"\u003etypeddjango/djangorestframework-stubs#1030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eHousekeeping\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUnlock django-stubs dev dependency pinning in pyproject.toml by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1033\"\u003etypeddjango/djangorestframework-stubs#1033\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.18.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1034\"\u003etypeddjango/djangorestframework-stubs#1034\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.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/typeddjango/djangorestframework-stubs/commit/18a30a10d0f0f6811fbd52c27a68d5a0396ae3bb\"\u003e\u003ccode\u003e18a30a1\u003c/code\u003e\u003c/a\u003e Version 3.18.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1034\"\u003e#1034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/31c54035164fd91bc60cb384519ed34bf255e8fa\"\u003e\u003ccode\u003e31c5403\u003c/code\u003e\u003c/a\u003e Update stubs for djangorestframework 3.18.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1030\"\u003e#1030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/40522032009bc3fb8914b5858ffc62979969c4d8\"\u003e\u003ccode\u003e4052203\u003c/code\u003e\u003c/a\u003e Unlock django-stubs pinning in pyproject.toml (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1033\"\u003e#1033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/ebb2bcc45fcdf9304d85efc7e8b2f477c4482b95\"\u003e\u003ccode\u003eebb2bcc\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v10 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1031\"\u003e#1031\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/c34d9bb79ada9af7293302c7fcb66ff344a56b69\"\u003e\u003ccode\u003ec34d9bb\u003c/code\u003e\u003c/a\u003e Update dependency django to ==6.1.* (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1023\"\u003e#1023\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/762c2d1de8722c640b18afbc4dbf1b3423bd2b5b\"\u003e\u003ccode\u003e762c2d1\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1028\"\u003e#1028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/135195b6d8d52b3c833c65d010df8b4be5fae4ea\"\u003e\u003ccode\u003e135195b\u003c/code\u003e\u003c/a\u003e Update dependency pre-commit to v4.6.2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1027\"\u003e#1027\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/41decd6d3de29391fd2aed96aa7750dab572bf40\"\u003e\u003ccode\u003e41decd6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1026\"\u003e#1026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/f5ced24033de0cd0ae75c8f3bbe76753ed2527d4\"\u003e\u003ccode\u003ef5ced24\u003c/code\u003e\u003c/a\u003e Remove coreapi/coreschema from stubs (DRF 3.17+) (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1025\"\u003e#1025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b7ef8fb3a3654cb40f6352f0514050b3ed5a941b\"\u003e\u003ccode\u003eb7ef8fb\u003c/code\u003e\u003c/a\u003e Update dependency djangorestframework to v3.18.0 \u0026amp; create new allowlist (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1024\"\u003e#1024\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=djangorestframework-stubs\u0026package-manager=pip\u0026previous-version=3.17.1\u0026new-version=3.18.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/Open-Source-Legal/OpenContracts/pull/2260","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Open-Source-Legal%2FOpenContracts/issues/2260","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2260/packages"}},{"old_version":"3.17.0","new_version":"3.17.1","update_type":"patch","path":null,"pr_created_at":"2026-08-14T08:28:56.000Z","version_change":"3.17.0 → 3.17.1","issue":{"uuid":"5149801503","node_id":"PR_kwDOTXBVTc7_AKkz","number":36,"state":"closed","title":"Bump the python group across 1 directory with 15 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-08-19T08:27:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-14T08:28:56.000Z","updated_at":"2026-08-19T08:27:06.000Z","time_to_close":431885,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":15,"packages":[{"name":"django-allauth","old_version":"65.18.0","new_version":"65.19.0"},{"name":"django-anymail","old_version":"15.0","new_version":"15.1","repository_url":"https://github.com/anymail/django-anymail"},{"name":"django-crispy-forms","old_version":"2.6","new_version":"2.7","repository_url":"https://github.com/django-crispy-forms/django-crispy-forms"},{"name":"djangorestframework","old_version":"3.17.1","new_version":"3.18.0","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"hiredis","old_version":"3.4.0","new_version":"3.4.1","repository_url":"https://github.com/redis/hiredis-py"},{"name":"redis","old_version":"8.0.1","new_version":"8.1.0","repository_url":"https://github.com/redis/redis-py"},{"name":"coverage","old_version":"7.15.1","new_version":"7.15.4","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-debug-toolbar","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/django-commons/django-debug-toolbar"},{"name":"django-stubs","old_version":"6.0.6","new_version":"6.0.9"},{"name":"djangorestframework-stubs","old_version":"3.17.0","new_version":"3.17.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.40.5","new_version":"1.44.2","repository_url":"https://github.com/djlint/djLint"},{"name":"mypy","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/python/mypy"},{"name":"pre-commit","old_version":"4.6.0","new_version":"4.6.2","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest-django","old_version":"4.12.0","new_version":"4.14.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"ruff","old_version":"0.15.21","new_version":"0.16.2","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 15 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.18.0` | `65.19.0` |\n| [django-anymail](https://github.com/anymail/django-anymail) | `15.0` | `15.1` |\n| [django-crispy-forms](https://github.com/django-crispy-forms/django-crispy-forms) | `2.6` | `2.7` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.17.1` | `3.18.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.4.0` | `3.4.1` |\n| [redis](https://github.com/redis/redis-py) | `8.0.1` | `8.1.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.15.1` | `7.15.4` |\n| [django-debug-toolbar](https://github.com/django-commons/django-debug-toolbar) | `7.0.0` | `7.1.0` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.6` | `6.0.9` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.0` | `3.17.1` |\n| [djlint](https://github.com/djlint/djLint) | `1.40.5` | `1.44.2` |\n| [mypy](https://github.com/python/mypy) | `2.1.0` | `2.3.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.0` | `4.6.2` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.12.0` | `4.14.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.21` | `0.16.2` |\n\n\nUpdates `django-allauth[mfa]` from 65.18.0 to 65.19.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-anymail` from 15.0 to 15.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/releases\"\u003edjango-anymail's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://anymail.dev/en/stable/changelog/#v15-1\"\u003eChangelog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/anymail/django-anymail/blob/main/CHANGELOG.rst\"\u003edjango-anymail's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev15.1\u003c/h2\u003e\n\u003cp\u003e\u003cem\u003e2026-07-30\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **Amazon SES, Brevo:** Fix ``InvalidMailer`` error about \u0026quot;Unknown options\u0026quot;\n  when used with Django 6.1 ``MAILERS`` setting.\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003ePostmark:\u003c/strong\u003e Raise an unsupported feature error when \u003ccode\u003emerge_data\u003c/code\u003e or\u003cbr /\u003e\n\u003ccode\u003emerge_global_data\u003c/code\u003e is used without a \u003ccode\u003etemplate_id\u003c/code\u003e. Anymail passes that\u003cbr /\u003e\ndata to Postmark in its \u003ccode\u003eTemplateModel\u003c/code\u003e field, which is silently ignored\u003cbr /\u003e\nwhen sending through a non-template API. (Thanks to \u003ccode\u003e@slinkymanbyday\u003c/code\u003e_ for\u003cbr /\u003e\nreporting the issue and \u003ccode\u003e@Sanjays2402\u003c/code\u003e_ for the fix.)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eOther\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eTest against prerelease versions of Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eDeprecations\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* Support for ``fail_silently`` in Anymail's email backends is being phased out,\n  matching Django's deprecation of the feature. Anymail will issue a deprecation\n  warning when ``fail_silently`` is used. Support for it will be dropped in a\n  future release when Django 6.2 support is discontinued.\n\u003cp\u003eSee \u003ccode\u003eReplacing fail_silently \u0026amp;lt;https://docs.djangoproject.com/en/6.1/howto/mailers-migration/#migrating-to-mailers-fail-silently\u0026amp;gt;\u003c/code\u003e_\u003cbr /\u003e\nin Django's documentation for recommendations.\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/8c40cc46f6a7aa308c5cabe99c0ea13733b5e079\"\u003e\u003ccode\u003e8c40cc4\u003c/code\u003e\u003c/a\u003e Release 15.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/7e8b81bab3465b84ea2374814211a435cb1255ad\"\u003e\u003ccode\u003e7e8b81b\u003c/code\u003e\u003c/a\u003e Postmark: Handle merge_data without template_id as unsupported\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/d973c84e317554d4047c8998721060be6af41381\"\u003e\u003ccode\u003ed973c84\u003c/code\u003e\u003c/a\u003e Update URLs to Mailjet's documentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/16719488929c979058be55dec598caa20194eba5\"\u003e\u003ccode\u003e1671948\u003c/code\u003e\u003c/a\u003e Update readme for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/0dfc0aa6afe487105bc381f90f1baf4be5776768\"\u003e\u003ccode\u003e0dfc0aa\u003c/code\u003e\u003c/a\u003e Add 'docs-watch' tox environment for sphinx-autobuild\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/232477aecf5b994b98697ac2ec3fbbb183d6973f\"\u003e\u003ccode\u003e232477a\u003c/code\u003e\u003c/a\u003e Deprecate fail_silently\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e56745200b3381a3266891e5cb58630c347d8ba5\"\u003e\u003ccode\u003ee567452\u003c/code\u003e\u003c/a\u003e Improve support for MAILERS configuration\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/e670d788ea2f1539005dd3e93a324b025c88be89\"\u003e\u003ccode\u003ee670d78\u003c/code\u003e\u003c/a\u003e Amazon SES, Brevo: Fix compatibility with Django 6.1 MAILERS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/15b57e283ac0c964b4832997b669ba99bd25f1a3\"\u003e\u003ccode\u003e15b57e2\u003c/code\u003e\u003c/a\u003e Update test matrix for Django 6.1 pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anymail/django-anymail/commit/171fa385f9a49bf6720217d8f6b29502e9c262ef\"\u003e\u003ccode\u003e171fa38\u003c/code\u003e\u003c/a\u003e Change black and isort to target Python 3.10\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/anymail/django-anymail/compare/v15.0...v15.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-crispy-forms` from 2.6 to 2.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/releases\"\u003edjango-crispy-forms's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/blob/main/CHANGELOG.md\"\u003edjango-crispy-forms's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.7 (2026-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConfirmed support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/e7fbb538595dde3a4598b4403e60ecca0905fa74\"\u003e\u003ccode\u003ee7fbb53\u003c/code\u003e\u003c/a\u003e Release 2.7. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1438\"\u003e#1438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/9d6b32129dea4c89caa87218a11192503646b9da\"\u003e\u003ccode\u003e9d6b321\u003c/code\u003e\u003c/a\u003e Bumped github actions versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/974b5b7390c0b11698c348128b164990cb6f044b\"\u003e\u003ccode\u003e974b5b7\u003c/code\u003e\u003c/a\u003e Bumped RTD OS and Python versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/5218268f520ca19c665e6f02a49df647eb977af6\"\u003e\u003ccode\u003e5218268\u003c/code\u003e\u003c/a\u003e Confirmed support for Django 6.1. (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/commit/847873cf09f0ee96beb38273190860008a6712dd\"\u003e\u003ccode\u003e847873c\u003c/code\u003e\u003c/a\u003e docs: replace 'basestring' with 'str' (\u003ca href=\"https://redirect.github.com/django-crispy-forms/django-crispy-forms/issues/1433\"\u003e#1433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django-crispy-forms/django-crispy-forms/compare/2.6...2.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.17.1 to 3.18.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.18.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Django 4.2, Django 5.0 and Django 5.1 by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9899\"\u003eencode/django-rest-framework#9899\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange errors for list serializers (\u003ccode\u003emany=True\u003c/code\u003e) to dict format by \u003ca href=\"https://github.com/p-r-a-v-i-n\"\u003e\u003ccode\u003e@​p-r-a-v-i-n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9837\"\u003eencode/django-rest-framework#9837\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eunaccent\u003c/code\u003e to \u003ccode\u003eSearchFilter\u003c/code\u003e by \u003ca href=\"https://github.com/mgaligniana\"\u003e\u003ccode\u003e@​mgaligniana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9385\"\u003eencode/django-rest-framework#9385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/browniebroke\"\u003e\u003ccode\u003e@​browniebroke\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10003\"\u003eencode/django-rest-framework#10003\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e@throttle_scope\u003c/code\u003e function based view decorator by \u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003enulls_distinct\u003c/code\u003e support to \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInclude \u003ccode\u003echoices\u003c/code\u003e param for non-editable fields by \u003ca href=\"https://github.com/ticosax\"\u003e\u003ccode\u003e@​ticosax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9929\"\u003eencode/django-rest-framework#9929\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove cursor pagination template accessibility in browsable API by \u003ca href=\"https://github.com/kosbemrunal\"\u003e\u003ccode\u003e@​kosbemrunal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9905\"\u003eencode/django-rest-framework#9905\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix partial form data updates involving \u003ccode\u003eListField\u003c/code\u003e by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9902\"\u003eencode/django-rest-framework#9902\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix crash due to browsable API extra action permissions by \u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle unhashable \u003ccode\u003eBooleanField\u003c/code\u003e representation value by \u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix OpenAPI schema for zero numeric bounds on ListField children by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003ecc_delim_re usage\u003c/code\u003e with \u003ccode\u003esplit_header_value\u003c/code\u003e for Django 6.1+ compatibility by \u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eset_rollback\u003c/code\u003e to only rollback initialized connections by \u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix DictField HTML input returning empty dict for missing fields by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRaise clear error for unsupported unique-together list updates by \u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9981\"\u003eencode/django-rest-framework#9981\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrepare release 3.18.0 by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\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/Im-Bilal\"\u003e\u003ccode\u003e@​Im-Bilal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9967\"\u003eencode/django-rest-framework#9967\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dlfoerster\"\u003e\u003ccode\u003e@​dlfoerster\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9934\"\u003eencode/django-rest-framework#9934\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/emfpdlzj\"\u003e\u003ccode\u003e@​emfpdlzj\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9973\"\u003eencode/django-rest-framework#9973\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zainnadeem786\"\u003e\u003ccode\u003e@​zainnadeem786\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9977\"\u003eencode/django-rest-framework#9977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/laymonage\"\u003e\u003ccode\u003e@​laymonage\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/harshitkandpal\"\u003e\u003ccode\u003e@​harshitkandpal\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9993\"\u003eencode/django-rest-framework#9993\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/udit-prabhakar\"\u003e\u003ccode\u003e@​udit-prabhakar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9962\"\u003eencode/django-rest-framework#9962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sai09111995\"\u003e\u003ccode\u003e@​sai09111995\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9884\"\u003eencode/django-rest-framework#9884\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d-ryzhykau\"\u003e\u003ccode\u003e@​d-ryzhykau\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9963\"\u003eencode/django-rest-framework#9963\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Elkasitu\"\u003e\u003ccode\u003e@​Elkasitu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8494\"\u003eencode/django-rest-framework#8494\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vishalanandl177\"\u003e\u003ccode\u003e@​vishalanandl177\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10002\"\u003eencode/django-rest-framework#10002\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jdetaeye\"\u003e\u003ccode\u003e@​jdetaeye\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9599\"\u003eencode/django-rest-framework#9599\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9891\"\u003eencode/django-rest-framework#9891\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mag123c\"\u003e\u003ccode\u003e@​mag123c\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9866\"\u003eencode/django-rest-framework#9866\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anurag12anu\"\u003e\u003ccode\u003e@​anurag12anu\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9814\"\u003eencode/django-rest-framework#9814\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/10015\"\u003eencode/django-rest-framework#10015\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/11875a38f483cea69d8ef2fd9ede6b96fb602ec4\"\u003e\u003ccode\u003e11875a3\u003c/code\u003e\u003c/a\u003e Prepare release 3.18.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10015\"\u003e#10015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/d346a8c3c92a36fdb462c992331e238d0a737305\"\u003e\u003ccode\u003ed346a8c\u003c/code\u003e\u003c/a\u003e Add note about Browsable API simulating \u003ccode\u003ePOST\u003c/code\u003e in documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9814\"\u003e#9814\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/80d535ddf08226020a9f44ca57f6eb1bbd91fa6a\"\u003e\u003ccode\u003e80d535d\u003c/code\u003e\u003c/a\u003e Fix GHA workflow for preparing release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/aa1876b8b6009a618e6241f91e2c2d6dfbacb5d9\"\u003e\u003ccode\u003eaa1876b\u003c/code\u003e\u003c/a\u003e Update fields.md explaining how the \u003ccode\u003esource\u003c/code\u003e argument affects `.validated_dat...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/000bb334f7995a972e700f81fbdbd50a80f38985\"\u003e\u003ccode\u003e000bb33\u003c/code\u003e\u003c/a\u003e Add nulls_distinct support to UniqueTogetherValidator (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9866\"\u003e#9866\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7508e0cf122d5250a2cba824a3c537a288acb489\"\u003e\u003ccode\u003e7508e0c\u003c/code\u003e\u003c/a\u003e Raise clear error for unsupported list update validation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9981\"\u003e#9981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/69d1cd7f1322060397b7f747d199e3926f5d297b\"\u003e\u003ccode\u003e69d1cd7\u003c/code\u003e\u003c/a\u003e Fix DictField HTML input returning empty dict for missing fields (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9891\"\u003e#9891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/bbc62aca6f67a2a7fe0427a768973f5d9f143c58\"\u003e\u003ccode\u003ebbc62ac\u003c/code\u003e\u003c/a\u003e Update Django 6.1 dependency to stable release. (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/10016\"\u003e#10016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f78043440a7884936232fdffffb68adcdbb3b272\"\u003e\u003ccode\u003ef780434\u003c/code\u003e\u003c/a\u003e Add GHA workflow to prepare a release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/dc027d2bb41c3858fc2fc95bf2b04b33f0cdc5be\"\u003e\u003ccode\u003edc027d2\u003c/code\u003e\u003c/a\u003e set_rollback should only rollback initialized connections (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9599\"\u003e#9599\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.17.1...3.18.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.4.0 to 3.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.1\u003c/h2\u003e\n\u003cp\u003eThis is a security fix release. All users of hiredis-py 3.4.x are strongly encouraged to upgrade.\u003c/p\u003e\n\u003ch1\u003e🔒 Security Fixes\u003c/h1\u003e\n\u003cp\u003eUpdates the bundled hiredis C library to \u003ca href=\"https://github.com/redis/hiredis/releases/tag/v1.4.1\"\u003ev1.4.1\u003c/a\u003e, which fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1340\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eredis/hiredis#1341\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAcknowledgements\u003c/h2\u003e\n\u003cp\u003eVulnerability discovered by He Huang (\u003ca href=\"mailto:hehuang@swin.edu.au\"\u003ehehuang@swin.edu.au\u003c/a\u003e), Swinburne University of Technology, Melbourne, Australia; discovered using NexusSan.\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/redis/hiredis-py/commit/70d83795c44558f50d9166c64b1d05311eaa8066\"\u003e\u003ccode\u003e70d8379\u003c/code\u003e\u003c/a\u003e [3.4] Bump hiredis to v1.4.1, release 3.4.1 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.4.0...v3.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `redis` from 8.0.1 to 8.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/redis-py/releases\"\u003eredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.1.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003ch2\u003e✨ Highlights\u003c/h2\u003e\n\u003ch3\u003eAsync maintenance notifications\u003c/h3\u003e\n\u003cp\u003eredis-py now supports server-pushed \u003cstrong\u003emaintenance notifications\u003c/strong\u003e in the asyncio stack for both\nstandalone and cluster clients, bringing the async client to parity with the sync implementation.\nWhen a Redis deployment signals maintenance events (such as node migration or failover windows), the\nasync client reacts through the maintenance-notifications handler (\u003ccode\u003eredis/maint_notifications.py\u003c/code\u003e and\nits async integration under \u003ccode\u003eredis/asyncio/\u003c/code\u003e), allowing applications to adapt connection handling\nduring maintenance without downtime. (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eExpanded command coverage\u003c/h3\u003e\n\u003cp\u003eThis release adds a batch of new command surfaces across core data types and modules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eLists\u003c/strong\u003e — \u003ccode\u003eLMOVEM\u003c/code\u003e / \u003ccode\u003eBLMOVEM\u003c/code\u003e for moving multiple elements between lists (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSets\u003c/strong\u003e — \u003ccode\u003eSDIFFCARD\u003c/code\u003e and \u003ccode\u003eSUNIONCARD\u003c/code\u003e cardinality commands (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eStreams\u003c/strong\u003e — \u003ccode\u003eMAXCOUNT\u003c/code\u003e / \u003ccode\u003eMAXSIZE\u003c/code\u003e options for \u003ccode\u003eXREAD\u003c/code\u003e and \u003ccode\u003eXREADGROUP\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eTime Series\u003c/strong\u003e — \u003ccode\u003eTS.READ\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e), \u003ccode\u003eTS.QUERYLABELS\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e), \u003ccode\u003eTS.NRANGE\u003c/code\u003e / \u003ccode\u003eTS.NREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e),\nand an \u003ccode\u003eexclude_empty\u003c/code\u003e (\u003ccode\u003eEXCLUDEEMPTY\u003c/code\u003e) option for \u003ccode\u003eTS.MRANGE\u003c/code\u003e / \u003ccode\u003eTS.MREVRANGE\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSearch\u003c/strong\u003e — \u003ccode\u003eFT.ALIASLIST\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e) and a \u003ccode\u003eCOLLECT\u003c/code\u003e reducer for aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSentinel\u003c/strong\u003e — replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e🚀 New Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd replica sentinel aliases (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4127\"\u003e#4127\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd TS.NRANGE and TS.NREVRANGE support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4163\"\u003e#4163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.READ command support to the timeseries module (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4170\"\u003e#4170\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add SDIFFCARD and SUNIONCARD command support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4171\"\u003e#4171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add MAXCOUNT/MAXSIZE support to XREAD and XREADGROUP (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4173\"\u003e#4173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add LMOVEM and BLMOVEM commands for moving multiple list elements (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4174\"\u003e#4174\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add async maintenance-notifications support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4177\"\u003e#4177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add COLLECT reducer support to search aggregations (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4179\"\u003e#4179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add exclude_empty (EXCLUDEEMPTY) option to TS.MRANGE and TS.MREVRANGE (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4188\"\u003e#4188\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add TS.QUERYLABELS support to the timeseries command surface (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4197\"\u003e#4197\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efeat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e⚠️ Experimental\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add client-side HIMPORT fieldset support for standalone and cluster clients (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4205\"\u003e#4205\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe feature considered unstable and \u003cstrong\u003epublic API might be changed in the future minor version\u003c/strong\u003e\u003c/p\u003e\n\u003ch2\u003e🐛 Bug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: detect closed pooled connection without consuming pending push data (RESP3 + hiredis) (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4156\"\u003e#4156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Sentinel pool capacity loss after failover (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4193\"\u003e#4193\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/e013126df18e476fbb8b8215f040f39bd3242683\"\u003e\u003ccode\u003ee013126\u003c/code\u003e\u003c/a\u003e Testing with 8.10 GA (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4227\"\u003e#4227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/059d1e97d88dd7ed516628e0a9765ab8e0e299f1\"\u003e\u003ccode\u003e059d1e9\u003c/code\u003e\u003c/a\u003e Fixed TS.NRANGE commands to correctly apply aggregators (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4225\"\u003e#4225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/d486a0a982dcdf316006474dc286ca65cbec5a9f\"\u003e\u003ccode\u003ed486a0a\u003c/code\u003e\u003c/a\u003e Fix FIELDNAME alias dropping first character of un-prefixed fields (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4224\"\u003e#4224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/fb931042420baaa5fbb9021955e444f7afa66dc2\"\u003e\u003ccode\u003efb93104\u003c/code\u003e\u003c/a\u003e feat: add client-side HIMPORT fieldset support for standalone and cluster cli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/9197609f48eb9713411a50534ca48210486a4bf9\"\u003e\u003ccode\u003e9197609\u003c/code\u003e\u003c/a\u003e Fix lat/lon swap in search querystring geo() helper (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4223\"\u003e#4223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/14714a0812d3ff03ad34c89ce6f79e287a04e9fb\"\u003e\u003ccode\u003e14714a0\u003c/code\u003e\u003c/a\u003e fix: Fixed double decoding issue with unquote() (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4222\"\u003e#4222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/227280a939718d09ff9d7c41f9785ffdc21bdc2a\"\u003e\u003ccode\u003e227280a\u003c/code\u003e\u003c/a\u003e Update lib version to 8.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/88d16d0db10c852d1d292628b2c832f1ed117056\"\u003e\u003ccode\u003e88d16d0\u003c/code\u003e\u003c/a\u003e Decode ACL LOG string values on the default RESP3 legacy callback (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4201\"\u003e#4201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/599fd75ca7d0745928280ff3a64ccd224dbf2b76\"\u003e\u003ccode\u003e599fd75\u003c/code\u003e\u003c/a\u003e feat: add FT.ALIASLIST support (\u003ca href=\"https://redirect.github.com/redis/redis-py/issues/4198\"\u003e#4198\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/redis-py/commit/71e275e6eae94d202b49bccce10ef0d2a59050e7\"\u003e\u003ccode\u003e71e275e\u003c/code\u003e\u003c/a\u003e test: add VectorField RERANK serialization tests for sync and async search (#...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/redis-py/compare/v8.0.1...v8.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.15.1 to 7.15.4\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.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\u003cp\u003e:arrow_right:  PyPI page: \u003ca href=\"https://pypi.org/project/coverage/7.15.2\"\u003ecoverage 7.15.2\u003c/a\u003e.\n:arrow_right:  To install: \u003ccode\u003epython3 -m pip install coverage==7.15.2\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.15.4 — 2026-08-06\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: in the HTML report, a source file name containing a double quote (legal\non POSIX) wasn't escaped where it's dropped into the \u003ccode\u003ehref\u003c/code\u003e of the index\nand prev/next links, so it could close the attribute early and inject markup.\nPage URLs are now escaped. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2227_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report wrote file names and other fields into its\nline-oriented records without neutralizing control characters. A measured\nfile whose name contained a newline (legal on POSIX) could forge extra\nrecords, inflating the coverage seen by tools that read the report. Control\ncharacters in a field are now replaced. Thanks, \u003ccode\u003eRajath Mohare \u0026lt;pull 2226_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels are now provided for Python 3.15.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _pull 2226: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2226\"\u003ecoveragepy/coveragepy#2226\u003c/a\u003e\n.. _pull 2227: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2227\"\u003ecoveragepy/coveragepy#2227\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.15.3 — 2026-08-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the sysmon core is incompatible with dynamic contexts. Previously, the\ncombination would be prevented when read from the coverage.py configuration.\nBut using the context API as pytest-cov does, contexts would be silently\ndropped. Now a warning is issued, thanks to \u003ccode\u003eJisang Han \u0026lt;pull 2234_\u0026gt;\u003c/code\u003e\u003cem\u003e.\nCloses \u003ccode\u003eissue 2200\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eA performance improvement in the low-level line number bookkeeping when\ncombining data files, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2239_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ePerformance improvement in HTML reporting by reducing the number of times\nfiles have to be parsed, thanks to \u003ccode\u003eKevin Turcios \u0026lt;pull 2240_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2200: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2200\"\u003ecoveragepy/coveragepy#2200\u003c/a\u003e\n.. _pull 2234: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2234\"\u003ecoveragepy/coveragepy#2234\u003c/a\u003e\n.. _pull 2239: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2239\"\u003ecoveragepy/coveragepy#2239\u003c/a\u003e\n.. _pull 2240: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2240\"\u003ecoveragepy/coveragepy#2240\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-15-2:\u003c/p\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\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/4c0e7ff425ecbb33e2b994b41118a71eb4e39021\"\u003e\u003ccode\u003e4c0e7ff\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/db4cc3216ca5bb436eba697aaa74d886e4ea82c8\"\u003e\u003ccode\u003edb4cc32\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c33085c3fcec4dd01fc3a0419c90de7ee6b869a7\"\u003e\u003ccode\u003ec33085c\u003c/code\u003e\u003c/a\u003e style: start gradual move to ruff 0.16\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53a0fd51ba05047624baf58bf8f288d56185df93\"\u003e\u003ccode\u003e53a0fd5\u003c/code\u003e\u003c/a\u003e fix: neutralize control characters in lcov report fields (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2226\"\u003e#2226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b64d53dd6f113b68a19ac6c1b855e34bbebfad4e\"\u003e\u003ccode\u003eb64d53d\u003c/code\u003e\u003c/a\u003e build: make 3.15 wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/53792ab496adf740a38d1f67e0162705b4d67c07\"\u003e\u003ccode\u003e53792ab\u003c/code\u003e\u003c/a\u003e build: show the python version for kits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f6b03c77ffb8d58b25950bae63d36b7a1c585a70\"\u003e\u003ccode\u003ef6b03c7\u003c/code\u003e\u003c/a\u003e chore: make upgrade_one package=cibuildwheel\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/d9b660ac2a6bc64a39c4a2e7f195bb6bd6f7af89\"\u003e\u003ccode\u003ed9b660a\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/b128a3172ec0cc4d70398f663e56d0362f5de4ea\"\u003e\u003ccode\u003eb128a31\u003c/code\u003e\u003c/a\u003e docs: oops, move this entry to the correct place\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a7a2c15669cc6e8fdb46e5012954c795a63e9a27\"\u003e\u003ccode\u003ea7a2c15\u003c/code\u003e\u003c/a\u003e fix: escape filename urls in html report href attributes (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.15.1...7.15.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-debug-toolbar` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/releases\"\u003edjango-debug-toolbar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via Django’s built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On older versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django’s boolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that can resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container network.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without parameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not find the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked before the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix the Django version check in the SQL panel by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2403\"\u003edjango-commons/django-debug-toolbar#2403\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix some small issues in docs/installation.rst by \u003ca href=\"https://github.com/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSilence the MiddlewareMixin deprecation warning explicitly by \u003ca href=\"https://github.com/matthiask\"\u003e\u003ccode\u003e@​matthiask\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2416\"\u003edjango-commons/django-debug-toolbar#2416\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Tasks panel showing tasks queued during the request by \u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix integration tests by \u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Django 6.1 by \u003ca href=\"https://github.com/ulgens\"\u003e\u003ccode\u003e@​ulgens\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2435\"\u003edjango-commons/django-debug-toolbar#2435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix show_toolbar_with_docker on runtimes with unrelated host address by \u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove selenium tests reliability in CI by \u003ca href=\"https://github.com/tim-schilling\"\u003e\u003ccode\u003e@​tim-schilling\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2438\"\u003edjango-commons/django-debug-toolbar#2438\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/leggewie\"\u003e\u003ccode\u003e@​leggewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2409\"\u003edjango-commons/django-debug-toolbar#2409\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/onxxdatas\"\u003e\u003ccode\u003e@​onxxdatas\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2407\"\u003edjango-commons/django-debug-toolbar#2407\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/novucs\"\u003e\u003ccode\u003e@​novucs\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2434\"\u003edjango-commons/django-debug-toolbar#2434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sanjays2402\"\u003e\u003ccode\u003e@​Sanjays2402\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/pull/2422\"\u003edjango-commons/django-debug-toolbar#2422\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ehttps://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/blob/main/docs/changes.rst\"\u003edjango-debug-toolbar's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-08-10)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded a Tasks panel that shows tasks queued during the request via\nDjango's built-in tasks framework (\u003ccode\u003edjango.tasks\u003c/code\u003e, Django 6.0+). On\nolder versions of Django, the panel explains that upgrading is required.\u003c/li\u003e\n\u003cli\u003eFixed the Django version check in the SQL panel test suite for Django's\nboolean parameter handling.\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eshow_toolbar_with_docker\u003c/code\u003e on Docker runtimes such as OrbStack that\ncan resolve \u003ccode\u003ehost.docker.internal\u003c/code\u003e to an address outside the container\nnetwork.\u003c/li\u003e\n\u003cli\u003eRestored the select and explain buttons for queries that run without\nparameters.\u003c/li\u003e\n\u003cli\u003eFixed the error shown when panel content fails to load, which could not\nfind the toolbar window inside the shadow root.\u003c/li\u003e\n\u003cli\u003eStopped the history panel buttons from submitting their form when clicked\nbefore the panel script has loaded, which navigated away from the page.\u003c/li\u003e\n\u003cli\u003eAdded support for Django 6.1.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/a2d4260c8646ff552a0117068a624a91cd00b167\"\u003e\u003ccode\u003ea2d4260\u003c/code\u003e\u003c/a\u003e Version 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/d89606a1bfbe7e4ca17156f262ba2fc22050f253\"\u003e\u003ccode\u003ed89606a\u003c/code\u003e\u003c/a\u003e Improve selenium tests reliability in CI (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2438\"\u003e#2438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/e367e1b77eaf85e54c35985338945ae09caec58d\"\u003e\u003ccode\u003ee367e1b\u003c/code\u003e\u003c/a\u003e Fix show_toolbar_with_docker on runtimes with unrelated host address (\u003ca href=\"https://redirect.github.com/django-commons/django-debug-toolbar/issues/2422\"\u003e#2422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/49f4ef349a12a938c5cb7ef529f1f96e5ffb74b2\"\u003e\u003ccode\u003e49f4ef3\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/3d3d0106c9a20e4deb0d4f9a63ca806338b8516b\"\u003e\u003ccode\u003e3d3d010\u003c/code\u003e\u003c/a\u003e Add support for Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/f5717342b927db1fc085844762db3e9d76174c7c\"\u003e\u003ccode\u003ef571734\u003c/code\u003e\u003c/a\u003e Stop the history panel buttons from submitting their forms\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/b63f4fa366405f77304e8df35f1329307c7c65ca\"\u003e\u003ccode\u003eb63f4fa\u003c/code\u003e\u003c/a\u003e Actually run the Selenium tests in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/263eb79e955b9ac1cddd8c5f99d0d039711f19fa\"\u003e\u003ccode\u003e263eb79\u003c/code\u003e\u003c/a\u003e Find the toolbar window inside the shadow root when a panel errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/08151f299c5379ff8c722d1df0e169ced3373661\"\u003e\u003ccode\u003e08151f2\u003c/code\u003e\u003c/a\u003e Show the SQL select and explain buttons for queries without parameters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-commons/django-debug-toolbar/commit/b10582ef24548bb5440c5d5f17d99f2bcbed1253\"\u003e\u003ccode\u003eb10582e\u003c/code\u003e\u003c/a\u003e Assert on table textContent in the Selenium tests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-commons/django-debug-toolbar/compare/7.0.0...7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.6 to 6.0.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.9\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003e6.0.8\u003c/code\u003e was supposed to be the last \u003ccode\u003e6.0.x\u003c/code\u003e release, but we found several regressions that we wanted to fix.\nNow we are working on \u003ccode\u003e6.1.0\u003c/code\u003e release :)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDetect every generic stub class in the generic consistency test by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3572\"\u003etypeddjango/django-stubs#3572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDon't crash on a many-to-many through model that can't be resolved by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3571\"\u003etypeddjango/django-stubs#3571\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.8...6.0.9\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.8\u003c/h2\u003e\n\u003cp\u003eThis is the last release with Django 6.0 full support.\nThe next release will be focused on Django 6.1 support with Django 6.0 partial support.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003econtrib.gis\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3500\"\u003etypeddjango/django-stubs#3500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImplicit M2M through models lose their \u003ccode\u003eobjects\u003c/code\u003e / \u003ccode\u003e_default_manager\u003c/code\u003e attributes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3499\"\u003etypeddjango/django-stubs#3499\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve dynamic manager methods via mypy's \u003ccode\u003efind_member\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3501\"\u003etypeddjango/django-stubs#3501\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edb.models\u003c/code\u003e, \u003ccode\u003ecore\u003c/code\u003e and \u003ccode\u003emigrations\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3504\"\u003etypeddjango/django-stubs#3504\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow callables returning Choices type for Field.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3506\"\u003etypeddjango/django-stubs#3506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003ecore\u003c/code\u003e, \u003ccode\u003eapps\u003c/code\u003e, \u003ccode\u003eurls\u003c/code\u003e and \u003ccode\u003eadmindocs\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3503\"\u003etypeddjango/django-stubs#3503\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove type in \u003ccode\u003eforms\u003c/code\u003e and improve types of lazy regexes by \u003ca href=\"https://github.com/01xnikhil\"\u003e\u003ccode\u003e@​01xnikhil\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3293\"\u003etypeddjango/django-stubs#3293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003edjango.tasks\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3512\"\u003etypeddjango/django-stubs#3512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd plugin support for \u003ccode\u003eapps.get_model()\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3511\"\u003etypeddjango/django-stubs#3511\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in admin filters, utils and per-app admins by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3502\"\u003etypeddjango/django-stubs#3502\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInvalidate mypy cache when \u003ccode\u003esettings.INSTALLED_APPS\u003c/code\u003e change and cache full config computation by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3514\"\u003etypeddjango/django-stubs#3514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMark fullnames constants as Final by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3515\"\u003etypeddjango/django-stubs#3515\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic references in \u003ccode\u003eutils\u003c/code\u003e and \u003ccode\u003etemplates\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3513\"\u003etypeddjango/django-stubs#3513\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse mypy's \u003ccode\u003elookup_fully_qualified\u003c/code\u003e instead of custom symbol lookup by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3519\"\u003etypeddjango/django-stubs#3519\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDetect form base classes with \u003ccode\u003ehas_base\u003c/code\u003e instead of a metadata registry by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3520\"\u003etypeddjango/django-stubs#3520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType args files contenttypes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3523\"\u003etypeddjango/django-stubs#3523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd helper to generate synthetic manager/queryset classes by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3518\"\u003etypeddjango/django-stubs#3518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd type arguments to generic \u003ccode\u003eField\u003c/code\u003e's by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3522\"\u003etypeddjango/django-stubs#3522\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType admin site as DefaultAdminSite inheriting from Adminsite by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3296\"\u003etypeddjango/django-stubs#3296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDeclare fields of \u003ccode\u003eLogEntry\u003c/code\u003e, \u003ccode\u003eFlatPage\u003c/code\u003e and \u003ccode\u003eRedirect\u003c/code\u003e as assignments by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3524\"\u003etypeddjango/django-stubs#3524\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eValidate \u003ccode\u003edistinct\u003c/code\u003e / \u003ccode\u003eupdate\u003c/code\u003e / \u003ccode\u003ein_bulk\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3168\"\u003etypeddjango/django-stubs#3168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure ORM expressions return params as a tuple by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3527\"\u003etypeddjango/django-stubs#3527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove comment for attributes added by model metaclass by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3529\"\u003etypeddjango/django-stubs#3529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved typing of the checks framework by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3528\"\u003etypeddjango/django-stubs#3528\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse typeshed aliases where possible by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3533\"\u003etypeddjango/django-stubs#3533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GIS as_sql stub signatures to match runtime by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3212\"\u003etypeddjango/django-stubs#3212\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003eView\u003c/code\u003e, \u003ccode\u003eTemplateView\u003c/code\u003e, and \u003ccode\u003eTemplateResponseMixin\u003c/code\u003e generic on response type by \u003ca href=\"https://github.com/samueljsb\"\u003e\u003ccode\u003e@​samueljsb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/2874\"\u003etypeddjango/django-stubs#2874\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd attributes set by application/middleware to \u003ccode\u003eHttpRequest\u003c/code\u003e by \u003ca href=\"https://github.com/bigfootjon\"\u003e\u003ccode\u003e@​bigfootjon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/2239\"\u003etypeddjango/django-stubs#2239\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisallow any generics in our stubs \u0026amp; plugin by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3535\"\u003etypeddjango/django-stubs#3535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange test Client headers parameter to Mapping[str, str] by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/1534\"\u003etypeddjango/django-stubs#1534\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix ngettext/npgettext number parameter type mismatch by \u003ca href=\"https://github.com/usamashehab\"\u003e\u003ccode\u003e@​usamashehab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3477\"\u003etypeddjango/django-stubs#3477\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix middleware callable composition typing by \u003ca href=\"https://github.com/yassinbahri\"\u003e\u003ccode\u003e@​yassinbahri\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3538\"\u003etypeddjango/django-stubs#3538\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow all supported types in GeneratedField.choices. by \u003ca href=\"https://github.com/felixxm\"\u003e\u003ccode\u003e@​felixxm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3541\"\u003etypeddjango/django-stubs#3541\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/typeddjango/django-stubs/commit/942bca5e63f897a157f5d8ee649ca90e9a69003b\"\u003e\u003ccode\u003e942bca5\u003c/code\u003e\u003c/a\u003e Version 6.0.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7215810a3f7804acabae28db5320043cf84f18cd\"\u003e\u003ccode\u003e7215810\u003c/code\u003e\u003c/a\u003e Version 6.0.9 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3573\"\u003e#3573\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/44429cd35e97c4f132be764a48a8b613c8b79156\"\u003e\u003ccode\u003e44429cd\u003c/code\u003e\u003c/a\u003e Don't crash on a many-to-many through model that can't be resolved (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3571\"\u003e#3571\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/04375103fec37e1d2f3e9f2c3c03e759f7c70880\"\u003e\u003ccode\u003e0437510\u003c/code\u003e\u003c/a\u003e Detect every generic stub class in the generic consistency test (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3572\"\u003e#3572\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a76719f4afe2fa03b197ad90be83b1830de80d55\"\u003e\u003ccode\u003ea76719f\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.66 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3569\"\u003e#3569\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/2caa0e7e7b491cb23ed115366fbf12be4806cf54\"\u003e\u003ccode\u003e2caa0e7\u003c/code\u003e\u003c/a\u003e Version 6.0.8 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3566\"\u003e#3566\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/085ae56c4fb116673909e0ecf5b35a62e238047d\"\u003e\u003ccode\u003e085ae56\u003c/code\u003e\u003c/a\u003e State \u003ccode\u003epyrefly\u003c/code\u003e, \u003ccode\u003epyright\u003c/code\u003e, and \u003ccode\u003ety\u003c/code\u003e support (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3562\"\u003e#3562\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/92aee733390f9310f1dd775b0af7243e29d78b48\"\u003e\u003ccode\u003e92aee73\u003c/code\u003e\u003c/a\u003e Expand override manager create test + move to \u003ccode\u003eassert_type\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3559\"\u003e#3559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f50446be88f4f1e8c5e6445f15de1e85b9118c33\"\u003e\u003ccode\u003ef50446b\u003c/code\u003e\u003c/a\u003e Support pyrefly 1.2.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3561\"\u003e#3561\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7a66e64f1a0c9ac52198d0726f3b22723f0a2c12\"\u003e\u003ccode\u003e7a66e64\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3558\"\u003e#3558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.6...6.0.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.17.0 to 3.17.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/988\"\u003etypeddjango/djangorestframework-stubs#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eSequence\u003c/code\u003e in \u003ccode\u003epaginate_queryset\u003c/code\u003e, not just \u003ccode\u003eQuerySet\u003c/code\u003e by \u003ca href=\"https://github.com/bvedad\"\u003e\u003ccode\u003e@​bvedad\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1001\"\u003etypeddjango/djangorestframework-stubs#1001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003erequest.data\u003c/code\u003e type to include \u003ccode\u003elist[Any]\u003c/code\u003e for JSON bulk payloads by \u003ca href=\"https://github.com/alanjds\"\u003e\u003ccode\u003e@​alanjds\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1016\"\u003etypeddjango/djangorestframework-stubs#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.1 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1019\"\u003etypeddjango/djangorestframework-stubs#1019\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/bvedad\"\u003e\u003ccode\u003e@​bvedad\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1001\"\u003etypeddjango/djangorestframework-stubs#1001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanjds\"\u003e\u003ccode\u003e@​alanjds\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1016\"\u003etypeddjango/djangorestframework-stubs#1016\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/f3b1cd6a17fcaf07923c707f10726599085c7a00\"\u003e\u003ccode\u003ef3b1cd6\u003c/code\u003e\u003c/a\u003e Version 3.17.1 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1019\"\u003e#1019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/692a47d5f739e970379cc0696df6c5e126a6140e\"\u003e\u003ccode\u003e692a47d\u003c/code\u003e\u003c/a\u003e Update dependency uv_build to \u0026gt;=0.12.0,\u0026lt;0.13.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1018\"\u003e#1018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/c13591825b93bf249a479320599c4568fa80df03\"\u003e\u003ccode\u003ec135918\u003c/code\u003e\u003c/a\u003e Fix Request.data type to include list[Any] for JSON bulk payloads (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1016\"\u003e#1016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/21acef29907215977f72224df3881ce3d23b39eb\"\u003e\u003ccode\u003e21acef2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1017\"\u003e#1017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/2edc257f7ec5afbfed1ea4f421a1951d2b23b969\"\u003e\u003ccode\u003e2edc257\u003c/code\u003e\u003c/a\u003e Update dependency pre-commit to v4.6.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/070ad4513134dfbf04500cc8a0f1773a483d45c0\"\u003e\u003ccode\u003e070ad45\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v9 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1014\"\u003e#1014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/217bd0bd14c8df1ef30d6a8913860fff62ae600a\"\u003e\u003ccode\u003e217bd0b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1013\"\u003e#1013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/33ffd2054733d8b8ef24062962bb2c8b3ca14afa\"\u003e\u003ccode\u003e33ffd20\u003c/code\u003e\u003c/a\u003e Update pypa/gh-action-pypi-publish action to v1.14.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1012\"\u003e#1012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/2100f01dcb0abddf6c04d52b2cdd20decac49127\"\u003e\u003ccode\u003e2100f01\u003c/code\u003e\u003c/a\u003e Update dependency mypy to \u0026gt;=1.13,\u0026lt;2.4 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/e373120b36c2c29679cc403933afda3dce687dfa\"\u003e\u003ccode\u003ee373120\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1011\"\u003e#1011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djlint` from 1.40.5 to 1.44.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/djlint/djLint/releases\"\u003edjlint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.44.2\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eH037\u003c/code\u003e no longer reports two attributes whose names differ only before a \u003ccode\u003e.\u003c/code\u003e as duplicates (\u003ccode\u003edata-a.checked\u003c/code\u003e and \u003ccode\u003edata-b.checked\u003c/code\u003e, or alpine's \u003ccode\u003ex-on:click.prevent\u003c/code\u003e and \u003ccode\u003ex-on:keyup.prevent\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eAn attribute whose name merely ends in the name a rule looks for is no longer mistaken for it. \u003ccode\u003edata-alt\u003c/code\u003e and \u003ccode\u003edata-x.alt\u003c/code\u003e left \u003ccode\u003eH013\u003c/code\u003e silent on an image with no \u003ccode\u003ealt\u003c/code\u003e, \u003ccode\u003edata-lang\u003c/code\u003e and \u003ccode\u003exml:lang\u003c/code\u003e silenced \u003ccode\u003eH005\u003c/code\u003e, \u003ccode\u003edata-height\u003c/code\u003e and \u003ccode\u003edata-width\u003c/code\u003e silenced \u003ccode\u003eH006\u003c/code\u003e, \u003ccode\u003edata-name=\u0026quot;description\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH030\u003c/code\u003e and \u003ccode\u003edata-name=\u0026quot;keywords\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH031\u003c/code\u003e, and \u003ccode\u003edata-x.id\u003c/code\u003e satisfied a \u003ccode\u003e\u0026lt;label for\u0026gt;\u003c/code\u003e for \u003ccode\u003eH042\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eA name written inside an attribute value is no longer read as an attribute. \u003ccode\u003etitle=\u0026quot;alt=x\u0026quot;\u003c/code\u003e left \u003ccode\u003eH013\u003c/code\u003e silent, \u003ccode\u003eclass=\u0026quot;language-en\u0026quot;\u003c/code\u003e silenced \u003ccode\u003eH005\u003c/code\u003e, and \u003ccode\u003etitle=\u0026quot;the ID=5\u0026quot;\u003c/code\u003e was reported by \u003ccode\u003eH010\u003c/code\u003e as an uppercase attribute name.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eH005\u003c/code\u003e no longer reports a tag whose name only starts with \u003ccode\u003ehtml\u003c/code\u003e, such as \u003ccode\u003e\u0026lt;htmlx\u0026gt;\u003c/code\u003e, and points at the \u003ccode\u003e\u0026lt;html\u0026gt;\u003c/code\u003e tag itself rather than at everything up to the last \u003ccode\u003e\u0026gt;\u003c/code\u003e in the file.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.44.1\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFormatting no longer changes what the page renders. A space that shows was dropped (\u003ccode\u003e\u0026lt;span\u0026gt;a\u0026lt;/span\u0026gt;\u0026lt;span\u0026gt; b \u0026lt;/span\u0026gt;\u003c/code\u003e rendered as \u003ccode\u003eab\u003c/code\u003e, \u003ccode\u003ea{% if x %} b {% endif %}c\u003c/code\u003e as \u003ccode\u003eabc\u003c/code\u003e), a space that shows nothing was added (\u003ccode\u003e\u0026lt;span\u0026gt;     \u0026lt;/span\u0026gt;\u003c/code\u003e became \u003ccode\u003e\u0026lt;span\u0026gt; \u0026lt;/span\u0026gt;\u003c/code\u003e), and moving a tag onto its own line could add one (\u003ccode\u003ex\u0026lt;img\u0026gt;y\u003c/code\u003e, or across a comment as in \u003ccode\u003ea{# c #}\u0026lt;img\u0026gt;\u003c/code\u003e). Whitespace is now kept where it renders and dropped where it does not.\u003c/li\u003e\n\u003cli\u003eA line break inside an attribute value is kept, so a \u003ccode\u003etitle\u003c/code\u003e tooltip no longer loses a line and a \u003ccode\u003edata-\u003c/code\u003e value read by script no longer comes back different. Line breaks in \u003ccode\u003eclass\u003c/code\u003e, \u003ccode\u003estyle\u003c/code\u003e, \u003ccode\u003esrcset\u003c/code\u003e and \u003ccode\u003esizes\u003c/code\u003e mean nothing and are still joined.\u003c/li\u003e\n\u003cli\u003eIndentation inside \u003ccode\u003e\u0026lt;pre\u0026gt;\u003c/code\u003e and \u003ccode\u003e\u0026lt;textarea\u0026gt;\u003c/code\u003e is left alone when the closing tag has something after it on its line (\u003ccode\u003e\u0026lt;pre\u0026gt;  a\\n  b\u0026lt;/pre\u0026gt; tail\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eWhitespace css does not collapse, such as U+2005, is text, and is no longer stripped from the edges of an element or of the file.\u003c/li\u003e\n\u003cli\u003eTwo indenting fixes: a line that closes one tag and opens another (\u003ccode\u003e\u0026lt;/b\u0026gt;\u0026lt;i\u0026gt;\u003c/code\u003e) indents its contents again...\n\n_Description has been truncated_","html_url":"https://github.com/klhenams/studious-octo-goggles/pull/36","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/klhenams%2Fstudious-octo-goggles/issues/36","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/36/packages"}},{"old_version":"3.17.0","new_version":"3.17.1","update_type":"patch","path":null,"pr_created_at":"2026-08-02T12:16:10.000Z","version_change":"3.17.0 → 3.17.1","issue":{"uuid":"5042341589","node_id":"PR_kwDOTDvPPs75oqk-","number":35,"state":"closed","title":"chore(deps-dev): bump the python group across 1 directory with 8 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-08-07T17:22:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-08-02T12:16:10.000Z","updated_at":"2026-08-07T17:22:02.000Z","time_to_close":450351,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): bump","group_name":"python","update_count":8,"packages":[{"name":"pydantic-ai-slim","old_version":"2.6.0","new_version":"2.21.0","repository_url":"https://github.com/pydantic/pydantic-ai"},{"name":"django-filter","old_version":"25.2","new_version":"26.1","repository_url":"https://github.com/carltongibson/django-filter"},{"name":"ruff","old_version":"0.15.20","new_version":"0.16.0","repository_url":"https://github.com/astral-sh/ruff"},{"name":"ty","old_version":"0.0.56","new_version":"0.0.65","repository_url":"https://github.com/astral-sh/ty"},{"name":"pre-commit","old_version":"4.6.0","new_version":"4.6.1","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"django-stubs","old_version":"6.0.6","new_version":"6.0.7","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"djangorestframework-stubs","old_version":"3.17.0","new_version":"3.17.1","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"mkdocs-material","old_version":"9.7.6","new_version":"9.7.7","repository_url":"https://github.com/squidfunk/mkdocs-material"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 8 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pydantic-ai-slim](https://github.com/pydantic/pydantic-ai) | `2.6.0` | `2.21.0` |\n| [django-filter](https://github.com/carltongibson/django-filter) | `25.2` | `26.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.20` | `0.16.0` |\n| [ty](https://github.com/astral-sh/ty) | `0.0.56` | `0.0.65` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.6.0` | `4.6.1` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `6.0.6` | `6.0.7` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.17.0` | `3.17.1` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.6` | `9.7.7` |\n\n\nUpdates `pydantic-ai-slim` from 2.6.0 to 2.21.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-ai/releases\"\u003epydantic-ai-slim's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.21.0 (2026-07-29)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(usage): add \u003ccode\u003eper_request_input_tokens_limit\u003c/code\u003e to \u003ccode\u003eUsageLimits\u003c/code\u003e by \u003ca href=\"https://github.com/Oxygen56\"\u003e\u003ccode\u003e@​Oxygen56\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/5907\"\u003epydantic/pydantic-ai#5907\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefresh \u003ccode\u003eKnownModelName\u003c/code\u003e from Gateway probes and stable Google image IDs by \u003ca href=\"https://github.com/adtyavrdhn\"\u003e\u003ccode\u003e@​adtyavrdhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6806\"\u003epydantic/pydantic-ai#6806\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-ai/compare/v2.20.0...v2.21.0\"\u003ehttps://github.com/pydantic/pydantic-ai/compare/v2.20.0...v2.21.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.20.0 (2026-07-28)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Claude Opus 5 (\u003ccode\u003eclaude-opus-5\u003c/code\u003e) support by \u003ca href=\"https://github.com/dsfaccini\"\u003e\u003ccode\u003e@​dsfaccini\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6723\"\u003epydantic/pydantic-ai#6723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd OpenAI Responses API \u003ccode\u003ereasoning.context\u003c/code\u003e support (default \u003ccode\u003eall_turns\u003c/code\u003e) for the \u003ccode\u003egpt-5.4\u003c/code\u003e/\u003ccode\u003egpt-5.5\u003c/code\u003e/\u003ccode\u003egpt-5.6\u003c/code\u003e families by \u003ca href=\"https://github.com/pydanty\"\u003e\u003ccode\u003e@​pydanty\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6673\"\u003epydantic/pydantic-ai#6673\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve arbitrary \u003ccode\u003eRequestUsage\u003c/code\u003e fields across serialization by \u003ca href=\"https://github.com/alexmojaki\"\u003e\u003ccode\u003e@​alexmojaki\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6685\"\u003epydantic/pydantic-ai#6685\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCapture Anthropic thinking tokens in usage details by \u003ca href=\"https://github.com/jakub-orsula-parrot\"\u003e\u003ccode\u003e@​jakub-orsula-parrot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6753\"\u003epydantic/pydantic-ai#6753\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eALLOW_MODEL_REQUESTS\u003c/code\u003e guards for embeddings by \u003ca href=\"https://github.com/zcxGGmu\"\u003e\u003ccode\u003e@​zcxGGmu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6774\"\u003epydantic/pydantic-ai#6774\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip \u003ccode\u003einclude_server_side_tool_invocations\u003c/code\u003e for Vertex on Gemini 3+ by \u003ca href=\"https://github.com/pydanty\"\u003e\u003ccode\u003e@​pydanty\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6773\"\u003epydantic/pydantic-ai#6773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e_openrouter_settings_to_openai_settings\u003c/code\u003e mutating caller's settings dict by \u003ca href=\"https://github.com/pydanty\"\u003e\u003ccode\u003e@​pydanty\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6743\"\u003epydantic/pydantic-ai#6743\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplay tool-search history across provider boundaries instead of dropping it by \u003ca href=\"https://github.com/DouweM\"\u003e\u003ccode\u003e@​DouweM\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6780\"\u003epydantic/pydantic-ai#6780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve zero-valued OpenTelemetry usage details by \u003ca href=\"https://github.com/dsfaccini\"\u003e\u003ccode\u003e@​dsfaccini\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6796\"\u003epydantic/pydantic-ai#6796\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose OpenAI Responses phase on the streamed \u003ccode\u003ePartStartEvent\u003c/code\u003e by \u003ca href=\"https://github.com/Jonas1312\"\u003e\u003ccode\u003e@​Jonas1312\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6785\"\u003epydantic/pydantic-ai#6785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake a bare \u003ccode\u003eMcpError\u003c/code\u003e from an MCP server recoverable instead of fatal by \u003ca href=\"https://github.com/dsfaccini\"\u003e\u003ccode\u003e@​dsfaccini\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6787\"\u003epydantic/pydantic-ai#6787\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/jakub-orsula-parrot\"\u003e\u003ccode\u003e@​jakub-orsula-parrot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6753\"\u003epydantic/pydantic-ai#6753\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Jonas1312\"\u003e\u003ccode\u003e@​Jonas1312\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6785\"\u003epydantic/pydantic-ai#6785\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dexhunter\"\u003e\u003ccode\u003e@​dexhunter\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6485\"\u003epydantic/pydantic-ai#6485\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-ai/compare/v2.19.0...v2.20.0\"\u003ehttps://github.com/pydantic/pydantic-ai/compare/v2.19.0...v2.20.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.19.0 (2026-07-27)\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003e🚀 Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eheaders\u003c/code\u003e and \u003ccode\u003eretry_after\u003c/code\u003e to \u003ccode\u003eModelHTTPError\u003c/code\u003e, populate from all provider SDKs by \u003ca href=\"https://github.com/dmontagu\"\u003e\u003ccode\u003e@​dmontagu\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6733\"\u003epydantic/pydantic-ai#6733\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRe-assert absorbed external cancellation at run step boundaries by \u003ca href=\"https://github.com/DouweM\"\u003e\u003ccode\u003e@​DouweM\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6496\"\u003epydantic/pydantic-ai#6496\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e📦 Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate FastMCP dependency range to \u003ccode\u003e\u0026lt;4\u003c/code\u003e by \u003ca href=\"https://github.com/adtyavrdhn\"\u003e\u003ccode\u003e@​adtyavrdhn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/pull/6737\"\u003epydantic/pydantic-ai#6737\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-ai/compare/v2.18.0...v2.19.0\"\u003ehttps://github.com/pydantic/pydantic-ai/compare/v2.18.0...v2.19.0\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/abed399f2db734b4e8588db9c32e710bb928368e\"\u003e\u003ccode\u003eabed399\u003c/code\u003e\u003c/a\u003e Fix minor format issues for the DBOS doc and add custom serializer (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6873\"\u003e#6873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/f5577efa6dea7bf226d65ea6171a6c250153a002\"\u003e\u003ccode\u003ef5577ef\u003c/code\u003e\u003c/a\u003e feat(usage): add \u003ccode\u003eper_request_input_tokens_limit\u003c/code\u003e to \u003ccode\u003eUsageLimits\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/5907\"\u003e#5907\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/3d6641895ee3ee4df45ffe116bba2d6f2b5f534f\"\u003e\u003ccode\u003e3d66418\u003c/code\u003e\u003c/a\u003e Refresh \u003ccode\u003eKnownModelName\u003c/code\u003e from Gateway probes and stable Google image IDs (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6806\"\u003e#6806\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/251de3d42d56e29d0c74aa844f29f03250d641d4\"\u003e\u003ccode\u003e251de3d\u003c/code\u003e\u003c/a\u003e Derive \u003ccode\u003eModelSettings\u003c/code\u003e prefix test from dynamic discovery so it can't rot (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6\"\u003e#6\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/1e269edcd3c63d2f81658048e43c63ba46af51ae\"\u003e\u003ccode\u003e1e269ed\u003c/code\u003e\u003c/a\u003e Document the trust boundary for client-supplied \u003ccode\u003emessage_history\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6800\"\u003e#6800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/699810cedc10e48733cb8fee2a618d2ef160fd50\"\u003e\u003ccode\u003e699810c\u003c/code\u003e\u003c/a\u003e Add the \u003ccode\u003ezai\u003c/code\u003e optional group to \u003ccode\u003edocs/install.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6802\"\u003e#6802\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/35cd29a3a36496721c7ac0e5cadccc6732752cfe\"\u003e\u003ccode\u003e35cd29a\u003c/code\u003e\u003c/a\u003e Make a bare \u003ccode\u003eMcpError\u003c/code\u003e from an MCP server recoverable instead of fatal (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6787\"\u003e#6787\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/d8a1254a5ad1a86d0164d497f43f12616069d6cf\"\u003e\u003ccode\u003ed8a1254\u003c/code\u003e\u003c/a\u003e Remove trailing \u003ccode\u003epragma\u003c/code\u003e comments and backfill \u003ccode\u003eTODO(v3)\u003c/code\u003e deprecation markers...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/3f9c104f05a7011c98a56db9e4b91d4998f72a39\"\u003e\u003ccode\u003e3f9c104\u003c/code\u003e\u003c/a\u003e perf(streaming): buffer streamed response strings (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6485\"\u003e#6485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-ai/commit/e77681bd61cea2b9c10c3a380a5643426eb98636\"\u003e\u003ccode\u003ee77681b\u003c/code\u003e\u003c/a\u003e Expose OpenAI Responses phase on the streamed \u003ccode\u003ePartStartEvent\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-ai/issues/6785\"\u003e#6785\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-ai/compare/v2.6.0...v2.21.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-filter` from 25.2 to 26.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/carltongibson/django-filter/blob/main/CHANGES.rst\"\u003edjango-filter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.1 (2026-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded testing for Django 6.1.\u003c/p\u003e\n\u003cp\u003eDRF integration will require the upcoming DRF v3.18.\nSee \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9978\"\u003eencode/django-rest-framework#9978\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded testing against Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/52c3c0f21ef8fe281982ec0e95a3675cd8402214\"\u003e\u003ccode\u003e52c3c0f\u003c/code\u003e\u003c/a\u003e Set date and bump version for 26.1 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/6a3222aaf83170df0f967423444d5312b99a3d69\"\u003e\u003ccode\u003e6a3222a\u003c/code\u003e\u003c/a\u003e Add testing for Python 3.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/aa3bd8e87136d4730f4eb44b3386e52c218bcf66\"\u003e\u003ccode\u003eaa3bd8e\u003c/code\u003e\u003c/a\u003e Added testing against Django 6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/ec717ea11378a4dc003cbe2f77b5211d8815a0b6\"\u003e\u003ccode\u003eec717ea\u003c/code\u003e\u003c/a\u003e Correct Language header in Greek locale file (el) (\u003ca href=\"https://redirect.github.com/carltongibson/django-filter/issues/1751\"\u003e#1751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/31b297ca2414218052476ba458c4d1eedc0a0f99\"\u003e\u003ccode\u003e31b297c\u003c/code\u003e\u003c/a\u003e Bump the github-actions group with 2 updates (\u003ca href=\"https://redirect.github.com/carltongibson/django-filter/issues/1733\"\u003e#1733\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/590c0a3e7d73fafa4fb25df45b53fcc79258d09f\"\u003e\u003ccode\u003e590c0a3\u003c/code\u003e\u003c/a\u003e Fix version range for Django 6.0 (\u003ca href=\"https://redirect.github.com/carltongibson/django-filter/issues/1731\"\u003e#1731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carltongibson/django-filter/commit/6204bc4eb75edf7ba766fc256d72a68fa80c3029\"\u003e\u003ccode\u003e6204bc4\u003c/code\u003e\u003c/a\u003e Added release date for v25.2.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/carltongibson/django-filter/compare/25.2...26.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.20 to 0.16.0\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.0\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-23.\u003c/p\u003e\n\u003cp\u003eCheck out the \u003ca href=\"https://astral.sh/blog/ruff-v0.16.0\"\u003eblog post\u003c/a\u003e for a migration guide and overview of the changes!\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRuff now enables a much larger set of rules by default (413, up from 59). See the blog post for more details and the new \u003ca href=\"https://docs.astral.sh/ruff/default-rules/\"\u003eDefault Rules\u003c/a\u003e page for a full listing of the enabled rules. Note that this is primarily an expansion, but 18 of the more opinionated pycodestyle (\u003ccode\u003eE\u003c/code\u003e) and pyflakes (\u003ccode\u003eF\u003c/code\u003e) rules have been removed from the default set: \u003ccode\u003eE401\u003c/code\u003e, \u003ccode\u003eE402\u003c/code\u003e, \u003ccode\u003eE701\u003c/code\u003e, \u003ccode\u003eE702\u003c/code\u003e, \u003ccode\u003eE703\u003c/code\u003e, \u003ccode\u003eE711\u003c/code\u003e, \u003ccode\u003eE712\u003c/code\u003e, \u003ccode\u003eE713\u003c/code\u003e, \u003ccode\u003eE714\u003c/code\u003e, \u003ccode\u003eE721\u003c/code\u003e, \u003ccode\u003eE731\u003c/code\u003e, \u003ccode\u003eE741\u003c/code\u003e, \u003ccode\u003eE742\u003c/code\u003e, \u003ccode\u003eE743\u003c/code\u003e, \u003ccode\u003eF403\u003c/code\u003e, \u003ccode\u003eF405\u003c/code\u003e, \u003ccode\u003eF406\u003c/code\u003e, and \u003ccode\u003eF722\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRuff can now format Python code blocks in Markdown files and will do this by default. See the \u003ca href=\"https://docs.astral.sh/ruff/formatter/#markdown-code-formatting\"\u003edocumentation\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRuff now supports \u003ccode\u003eruff: ignore\u003c/code\u003e comments at the ends of lines, like \u003ccode\u003enoqa\u003c/code\u003e comments, or on the line preceding a diagnostic. For example, these both suppress an \u003ca href=\"https://docs.astral.sh/ruff/rules/unused-import/\"\u003e\u003ccode\u003eunused-import\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF401\u003c/code\u003e) diagnostic:\u003c/p\u003e\n\u003cpre lang=\"py\"\u003e\u003ccode\u003eimport math  # ruff: ignore[F401]\r\n\u003ch1\u003eruff: ignore[F401]\u003c/h1\u003e\n\u003cp\u003eimport os\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes are now shown in \u003ccode\u003echeck\u003c/code\u003e and \u003ccode\u003eformat --check\u003c/code\u003e output:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e❯ ruff format --check .\r\nunformatted: File would be reformatted\r\n --\u0026gt; try.md:1:1\r\n  |\r\n1 | ```python\r\n  - import   math\r\n2 + import math\r\n3 | ```\r\n  |\r\n\u003cp\u003e1 file would be reformatted\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eThis example also shows off the Markdown formatting.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eformat --check\u003c/code\u003e now supports the same output formats as the linter, including the \u003ccode\u003egithub\u003c/code\u003e and \u003ccode\u003egitlab\u003c/code\u003e outputs for rendering annotations in CI:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e❯ ruff format --check --output-format github .\r\n::error title=ruff (unformatted),file=try.md,line=2,col=8,endLine=2,endColumn=10::try.md:2:8: unformatted: File would be reformatted\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eSee the CLI help or \u003ca href=\"https://docs.astral.sh/ruff/settings/#output-format\"\u003edocumentation\u003c/a\u003e for the full list of supported formats.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003efilename\u003c/code\u003e, \u003ccode\u003elocation\u003c/code\u003e, \u003ccode\u003eend_location\u003c/code\u003e, \u003ccode\u003efix.edits[].location\u003c/code\u003e, and \u003ccode\u003efix.edits[].end_location\u003c/code\u003e fields in the JSON output format may now be \u003ccode\u003enull\u003c/code\u003e rather than defaulting to the empty string and row 1, column 1, respectively.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/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.0\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-23.\u003c/p\u003e\n\u003cp\u003eCheck out the \u003ca href=\"https://astral.sh/blog/ruff-v0.16.0\"\u003eblog post\u003c/a\u003e for a migration\nguide and overview of the changes!\u003c/p\u003e\n\u003ch3\u003eBreaking changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRuff now enables a much larger set of rules by default (413, up from 59). See the blog post for\nmore details and the new \u003ca href=\"https://docs.astral.sh/ruff/default-rules/\"\u003eDefault Rules\u003c/a\u003e page for a\nfull listing of the enabled rules. Note that this is primarily an expansion, but 18 of the more\nopinionated pycodestyle (\u003ccode\u003eE\u003c/code\u003e) and pyflakes (\u003ccode\u003eF\u003c/code\u003e) rules have been removed from the default set:\n\u003ccode\u003eE401\u003c/code\u003e, \u003ccode\u003eE402\u003c/code\u003e, \u003ccode\u003eE701\u003c/code\u003e, \u003ccode\u003eE702\u003c/code\u003e, \u003ccode\u003eE703\u003c/code\u003e, \u003ccode\u003eE711\u003c/code\u003e, \u003ccode\u003eE712\u003c/code\u003e, \u003ccode\u003eE713\u003c/code\u003e, \u003ccode\u003eE714\u003c/code\u003e, \u003ccode\u003eE721\u003c/code\u003e, \u003ccode\u003eE731\u003c/code\u003e, \u003ccode\u003eE741\u003c/code\u003e,\n\u003ccode\u003eE742\u003c/code\u003e, \u003ccode\u003eE743\u003c/code\u003e, \u003ccode\u003eF403\u003c/code\u003e, \u003ccode\u003eF405\u003c/code\u003e, \u003ccode\u003eF406\u003c/code\u003e, and \u003ccode\u003eF722\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRuff can now format Python code blocks in Markdown files and will do this by default. See the\n\u003ca href=\"https://docs.astral.sh/ruff/formatter/#markdown-code-formatting\"\u003edocumentation\u003c/a\u003e for more details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRuff now supports \u003ccode\u003eruff: ignore\u003c/code\u003e comments at the ends of lines, like \u003ccode\u003enoqa\u003c/code\u003e comments, or on the line preceding a diagnostic. For example, these both suppress an \u003ca href=\"https://docs.astral.sh/ruff/rules/unused-import/\"\u003e\u003ccode\u003eunused-import\u003c/code\u003e\u003c/a\u003e (\u003ccode\u003eF401\u003c/code\u003e) diagnostic:\u003c/p\u003e\n\u003cpre lang=\"py\"\u003e\u003ccode\u003eimport math  # ruff: ignore[F401]\n\u003ch1\u003eruff: ignore[F401]\u003c/h1\u003e\n\u003cp\u003eimport os\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixes are now shown in \u003ccode\u003echeck\u003c/code\u003e and \u003ccode\u003eformat --check\u003c/code\u003e output:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e❯ ruff format --check .\nunformatted: File would be reformatted\n --\u0026gt; try.md:1:1\n  |\n1 | ```python\n  - import   math\n2 + import math\n3 | ```\n  |\n\u003cp\u003e1 file would be reformatted\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eThis example also shows off the Markdown formatting.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eformat --check\u003c/code\u003e now supports the same output formats as the linter, including the \u003ccode\u003egithub\u003c/code\u003e and\n\u003ccode\u003egitlab\u003c/code\u003e outputs for rendering annotations in CI:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e\u003c/code\u003e\u003c/pre\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/astral-sh/ruff/commit/a2635fd8f39e1d34ce8074cb486809426148f3e9\"\u003e\u003ccode\u003ea2635fd\u003c/code\u003e\u003c/a\u003e Bump 0.16.0 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27136\"\u003e#27136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/34334491652f8ceca5246d15c5c5afe0d6bc77ae\"\u003e\u003ccode\u003e3433449\u003c/code\u003e\u003c/a\u003e [ty] Reuse full call diagnostics for implicit setter calls (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27115\"\u003e#27115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/22400709220931375e072ad5d7460b9fc781af78\"\u003e\u003ccode\u003e2240070\u003c/code\u003e\u003c/a\u003e Reflect \u003ccode\u003eruff: ignore\u003c/code\u003e and \u003ccode\u003e--add-ignore\u003c/code\u003e stabilization in documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27\"\u003e#27\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/17ef71142c52230b923dad46ee5554140fc3fd2e\"\u003e\u003ccode\u003e17ef711\u003c/code\u003e\u003c/a\u003e Stabilize \u003ccode\u003e--add-ignore\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27125\"\u003e#27125\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ef912bbbe466856aa4aac10ad2a8856eb3d5aef3\"\u003e\u003ccode\u003eef912bb\u003c/code\u003e\u003c/a\u003e Add newly stabilized rules to defaults (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27055\"\u003e#27055\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b30f04023281b46f12011f13ce6b45c247e0d2e3\"\u003e\u003ccode\u003eb30f040\u003c/code\u003e\u003c/a\u003e Stabilize new default rules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27035\"\u003e#27035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bcd70c5f10ea97ed52a785d70e7f33b83b7c697a\"\u003e\u003ccode\u003ebcd70c5\u003c/code\u003e\u003c/a\u003e Exclude Markdown files from \u003ccode\u003eformat-dev\u003c/code\u003e runs (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27052\"\u003e#27052\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/87e51e2cbbaed376fc13dead40fd772361fa07c0\"\u003e\u003ccode\u003e87e51e2\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eformat --check\u003c/code\u003e spans for syntax errors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/27045\"\u003e#27045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/afe2723a348364ac7f4b9abd76fc67779490c05e\"\u003e\u003ccode\u003eafe2723\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-gettext\u003c/code\u003e] Stabilize qualified-name and built-in binding resolution (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/a9702d8928344f77a41dbe535f655a69fb04e2df\"\u003e\u003ccode\u003ea9702d8\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eflake8-bandit\u003c/code\u003e] Stabilize string literal binding resolution (\u003ccode\u003eS310\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/26944\"\u003e#26944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.20...0.16.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ty` from 0.0.56 to 0.0.65\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ty/releases\"\u003ety's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.65\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-29.\u003c/p\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport comprehension walruses in IDE features (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26476\"\u003e#26476\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLibrary support\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePydantic: Allow mutation of private attributes on frozen models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27257\"\u003e#27257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePydantic: Synthesize \u003ccode\u003e__replace__\u003c/code\u003e for models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27220\"\u003e#27220\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDiagnostics\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect \u003ccode\u003eParamSpec\u003c/code\u003e forwarded-argument diagnostic locations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27263\"\u003e#27263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecover forwarded callable object and constructor sources (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27264\"\u003e#27264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecover forwarded \u003ccode\u003efunctools.partial\u003c/code\u003e diagnostic sources (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27265\"\u003e#27265\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix gradual class assignability with generic receivers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27223\"\u003e#27223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLazily materialize protocol attributes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27267\"\u003e#27267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow tagged unions through all type kinds (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27226\"\u003e#27226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer static constrained TypeVar solutions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27057\"\u003e#27057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve frozen-dataclass setter delegation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27217\"\u003e#27217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inference when filtering constructor overloads (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27254\"\u003e#27254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject frozen-dataclass field deletion through subclasses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27001\"\u003e#27001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStabilize recursive type-constraint ordering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27176\"\u003e#27176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport materialized class type expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27258\"\u003e#27258\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid quadratic inference for large literal unions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27178\"\u003e#27178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache protocol receiver binding (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27301\"\u003e#27301\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/thejchap\"\u003e\u003ccode\u003e@​thejchap\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benedikt-bartscher\"\u003e\u003ccode\u003e@​benedikt-bartscher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carljm\"\u003e\u003ccode\u003e@​carljm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ty 0.0.65\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/ty/releases/download/0.0.65/ty-installer.sh | sh\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ty/blob/main/CHANGELOG.md\"\u003ety's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.0.65\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-29.\u003c/p\u003e\n\u003ch3\u003eLSP server\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport comprehension walruses in IDE features (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26476\"\u003e#26476\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eLibrary support\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePydantic: Allow mutation of private attributes on frozen models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27257\"\u003e#27257\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePydantic: Synthesize \u003ccode\u003e__replace__\u003c/code\u003e for models (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27220\"\u003e#27220\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDiagnostics\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCorrect \u003ccode\u003eParamSpec\u003c/code\u003e forwarded-argument diagnostic locations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27263\"\u003e#27263\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecover forwarded callable object and constructor sources (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27264\"\u003e#27264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecover forwarded \u003ccode\u003efunctools.partial\u003c/code\u003e diagnostic sources (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27265\"\u003e#27265\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCore type checking\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix gradual class assignability with generic receivers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27223\"\u003e#27223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLazily materialize protocol attributes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27267\"\u003e#27267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eNarrow tagged unions through all type kinds (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27226\"\u003e#27226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePrefer static constrained TypeVar solutions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27057\"\u003e#27057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve frozen-dataclass setter delegation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27217\"\u003e#27217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve inference when filtering constructor overloads (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27254\"\u003e#27254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject frozen-dataclass field deletion through subclasses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27001\"\u003e#27001\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eStabilize recursive type-constraint ordering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27176\"\u003e#27176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport materialized class type expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27258\"\u003e#27258\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid quadratic inference for large literal unions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27178\"\u003e#27178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCache protocol receiver binding (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/27301\"\u003e#27301\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/thejchap\"\u003e\u003ccode\u003e@​thejchap\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benedikt-bartscher\"\u003e\u003ccode\u003e@​benedikt-bartscher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/carljm\"\u003e\u003ccode\u003e@​carljm\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.0.64\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-07-27.\u003c/p\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix identity narrowing for NewTypes (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/26439\"\u003e#26439\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/ty/commit/87de836dfef2d3e1990440752e30e24cfb572f4e\"\u003e\u003ccode\u003e87de836\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.65 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4113\"\u003e#4113\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/d784bad352f4640e7f788eac4dfb0353ca199902\"\u003e\u003ccode\u003ed784bad\u003c/code\u003e\u003c/a\u003e README: Add link to Stable milestone (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4112\"\u003e#4112\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/b4c1978dbdf18501ed03139e33ee8afaef251ec3\"\u003e\u003ccode\u003eb4c1978\u003c/code\u003e\u003c/a\u003e Update actions/setup-python action to v7 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4110\"\u003e#4110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/8d216a39dad99c4443396a08a77da00502cd7e58\"\u003e\u003ccode\u003e8d216a3\u003c/code\u003e\u003c/a\u003e Update actions/checkout action to v7.0.1 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4107\"\u003e#4107\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/06f44e9039cb2764346c4bceaff4021ac143de9e\"\u003e\u003ccode\u003e06f44e9\u003c/code\u003e\u003c/a\u003e Update dependency prek to v0.4.10 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4108\"\u003e#4108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/b3665fde4804424576a30078bc0b7c101c5e2242\"\u003e\u003ccode\u003eb3665fd\u003c/code\u003e\u003c/a\u003e Update prek dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4109\"\u003e#4109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/5e64a131b436a4e1f40e6317c526f4fc73fab38b\"\u003e\u003ccode\u003e5e64a13\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.64 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4097\"\u003e#4097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/46f4915e67aad965b1b4e7478a75378e8e52ff6d\"\u003e\u003ccode\u003e46f4915\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.63 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4071\"\u003e#4071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/df75992e7fd0cc73cb0f66e864df3f6e4fc4e1a6\"\u003e\u003ccode\u003edf75992\u003c/code\u003e\u003c/a\u003e Bump version to 0.0.62 (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4057\"\u003e#4057\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ty/commit/48dd1fdf8a5bd504a19e06046c3be4f3fe378747\"\u003e\u003ccode\u003e48dd1fd\u003c/code\u003e\u003c/a\u003e Update prek dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/ty/issues/4059\"\u003e#4059\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ty/compare/0.0.56...0.0.65\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.6.0 to 4.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInstall \u003ccode\u003elanguage: node\u003c/code\u003e hooks via \u003ccode\u003egit\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eFixes npm 12.x compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3719\"\u003e#3719\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3517\"\u003e#3517\u003c/a\u003e issue by \u003ca href=\"https://github.com/ojob\"\u003e\u003ccode\u003e@​ojob\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eJULIA_DEPOT_PATH\u003c/code\u003e for \u003ccode\u003elanguage: julia\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3711\"\u003e#3711\u003c/a\u003e PR by \u003ca href=\"https://github.com/damonbayer\"\u003e\u003ccode\u003e@​damonbayer\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit-ci/runner-image/issues/335\"\u003epre-commit-ci/runner-image#335\u003c/a\u003e issue by \u003ca href=\"https://github.com/damonbayer\"\u003e\u003ccode\u003e@​damonbayer\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eProduce error on mistyped \u003ccode\u003e--repo\u003c/code\u003e for \u003ccode\u003epre-commit autoupdate\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3701\"\u003e#3701\u003c/a\u003e PR by \u003ca href=\"https://github.com/mxr\"\u003e\u003ccode\u003e@​mxr\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3695\"\u003e#3695\u003c/a\u003e issue by \u003ca href=\"https://github.com/mxr\"\u003e\u003ccode\u003e@​mxr\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImprove performance of commit existence check in \u003ccode\u003epre-push\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3726\"\u003e#3726\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3604\"\u003e#3604\u003c/a\u003e issue by \u003ca href=\"https://github.com/ptarjan\"\u003e\u003ccode\u003e@​ptarjan\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAvoid duplicating conflicted filenames during \u003ccode\u003epre-commit run --all-files\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3727\"\u003e#3727\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3706\"\u003e#3706\u003c/a\u003e issue by \u003ca href=\"https://github.com/RomanValov\"\u003e\u003ccode\u003e@​RomanValov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.1 - 2026-07-21\u003c/h1\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eInstall \u003ccode\u003elanguage: node\u003c/code\u003e hooks via \u003ccode\u003egit\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003eFixes npm 12.x compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3719\"\u003e#3719\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3517\"\u003e#3517\u003c/a\u003e issue by \u003ca href=\"https://github.com/ojob\"\u003e\u003ccode\u003e@​ojob\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eSet \u003ccode\u003eJULIA_DEPOT_PATH\u003c/code\u003e for \u003ccode\u003elanguage: julia\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3711\"\u003e#3711\u003c/a\u003e PR by \u003ca href=\"https://github.com/damonbayer\"\u003e\u003ccode\u003e@​damonbayer\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit-ci/runner-image/issues/335\"\u003epre-commit-ci/runner-image#335\u003c/a\u003e issue by \u003ca href=\"https://github.com/damonbayer\"\u003e\u003ccode\u003e@​damonbayer\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eProduce error on mistyped \u003ccode\u003e--repo\u003c/code\u003e for \u003ccode\u003epre-commit autoupdate\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3701\"\u003e#3701\u003c/a\u003e PR by \u003ca href=\"https://github.com/mxr\"\u003e\u003ccode\u003e@​mxr\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3695\"\u003e#3695\u003c/a\u003e issue by \u003ca href=\"https://github.com/mxr\"\u003e\u003ccode\u003e@​mxr\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eImprove performance of commit existence check in \u003ccode\u003epre-push\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3726\"\u003e#3726\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3604\"\u003e#3604\u003c/a\u003e issue by \u003ca href=\"https://github.com/ptarjan\"\u003e\u003ccode\u003e@​ptarjan\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAvoid duplicating conflicted filenames during \u003ccode\u003epre-commit run --all-files\u003c/code\u003e.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3727\"\u003e#3727\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3706\"\u003e#3706\u003c/a\u003e issue by \u003ca href=\"https://github.com/RomanValov\"\u003e\u003ccode\u003e@​RomanValov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/242ce8a25657be59f2770b50de41fe0fd508820d\"\u003e\u003ccode\u003e242ce8a\u003c/code\u003e\u003c/a\u003e v4.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/766e550cd31defcb6096a96735c9de299b0eb301\"\u003e\u003ccode\u003e766e550\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3727\"\u003e#3727\u003c/a\u003e from pre-commit/dedupe\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/1558d06e3d9e5f495cd97ccaefe937b7c44ead70\"\u003e\u003ccode\u003e1558d06\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3726\"\u003e#3726\u003c/a\u003e from pre-commit/exists-faster\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/8a1c47a2528419e41aadfcf8135926d68f7ffbbb\"\u003e\u003ccode\u003e8a1c47a\u003c/code\u003e\u003c/a\u003e avoid duplicate files in --all-files during conflict\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2e01c999b2466ac7e14e1e4a57a04504bd6c1b28\"\u003e\u003ccode\u003e2e01c99\u003c/code\u003e\u003c/a\u003e faster check of rev existing locally as a commit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/3613bf27f5500d327de70cd2fa68fa20c8975659\"\u003e\u003ccode\u003e3613bf2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3701\"\u003e#3701\u003c/a\u003e from pre-commit/autoupdate-repos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/1d811d9b0b655fa648001ca479a0b7da9ebd7b8c\"\u003e\u003ccode\u003e1d811d9\u003c/code\u003e\u003c/a\u003e Return an error for invalid --repo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/374d354c8be227db651ddd92d9499b87e2ca1ea1\"\u003e\u003ccode\u003e374d354\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3711\"\u003e#3711\u003c/a\u003e from damonbayer/dmb_JULIA_DEPOT_PATH\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/1e7994fb1fddd31fb1998aa98f84fc43818d9485\"\u003e\u003ccode\u003e1e7994f\u003c/code\u003e\u003c/a\u003e set JULIA_DEPOT_PATH\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/b2b91195d7618d61d8973fefa4e5e084fc160d8d\"\u003e\u003ccode\u003eb2b9119\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3719\"\u003e#3719\u003c/a\u003e from pre-commit/npm-unknown-options\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.6.0...v4.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs` from 6.0.6 to 6.0.7\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a7686ba5b16d507d7c6097e9c4b9c8e2122ec704\"\u003e\u003ccode\u003ea7686ba\u003c/code\u003e\u003c/a\u003e Update mypy to 2.3.0, release 6.0.7 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3487\"\u003e#3487\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/7fc15129a83743118057a9af1378fbfdad01dcc9\"\u003e\u003ccode\u003e7fc1512\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3486\"\u003e#3486\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5ea3999a7426610e74599ebf4a2f7a3389e23f2f\"\u003e\u003ccode\u003e5ea3999\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.65.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3485\"\u003e#3485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/48fa1fb51b98bf8eb4cc55367c7eb7ee346e62ae\"\u003e\u003ccode\u003e48fa1fb\u003c/code\u003e\u003c/a\u003e Annotate unparameterized Field references (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3482\"\u003e#3482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/1cebbea2bc1dfb60f290c3256f5d1b0c491e6e22\"\u003e\u003ccode\u003e1cebbea\u003c/code\u003e\u003c/a\u003e Support django models discovery by the plugin in \u003ccode\u003etests/assert_type\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3483\"\u003e#3483\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/cd42cb5e9fd5099d41725afedcea2fcab7aa1604\"\u003e\u003ccode\u003ecd42cb5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3484\"\u003e#3484\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e584effb13ce626ab698d979cb9f3c56519a2b8f\"\u003e\u003ccode\u003ee584eff\u003c/code\u003e\u003c/a\u003e Improve local justfile (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3481\"\u003e#3481\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ca6810c5e1cc3788e86babd0380330ed90fb16b1\"\u003e\u003ccode\u003eca6810c\u003c/code\u003e\u003c/a\u003e Preserve values() aliases through annotate() for order_by (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3479\"\u003e#3479\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/b15cf82209f19f7525fb8db6e43c97f96b1051bd\"\u003e\u003ccode\u003eb15cf82\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.58 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3480\"\u003e#3480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/3c1769fe041524be6a31aa7e326a8674a1a1d516\"\u003e\u003ccode\u003e3c1769f\u003c/code\u003e\u003c/a\u003e Fully annotate \u003ccode\u003eField.formfield\u003c/code\u003e keyword args (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3443\"\u003e#3443\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.6...6.0.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.17.0 to 3.17.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/988\"\u003etypeddjango/djangorestframework-stubs#988\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept \u003ccode\u003eSequence\u003c/code\u003e in \u003ccode\u003epaginate_queryset\u003c/code\u003e, not just \u003ccode\u003eQuerySet\u003c/code\u003e by \u003ca href=\"https://github.com/bvedad\"\u003e\u003ccode\u003e@​bvedad\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1001\"\u003etypeddjango/djangorestframework-stubs#1001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003erequest.data\u003c/code\u003e type to include \u003ccode\u003elist[Any]\u003c/code\u003e for JSON bulk payloads by \u003ca href=\"https://github.com/alanjds\"\u003e\u003ccode\u003e@​alanjds\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1016\"\u003etypeddjango/djangorestframework-stubs#1016\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.1 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1019\"\u003etypeddjango/djangorestframework-stubs#1019\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/bvedad\"\u003e\u003ccode\u003e@​bvedad\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1001\"\u003etypeddjango/djangorestframework-stubs#1001\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alanjds\"\u003e\u003ccode\u003e@​alanjds\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/1016\"\u003etypeddjango/djangorestframework-stubs#1016\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/f3b1cd6a17fcaf07923c707f10726599085c7a00\"\u003e\u003ccode\u003ef3b1cd6\u003c/code\u003e\u003c/a\u003e Version 3.17.1 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1019\"\u003e#1019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/692a47d5f739e970379cc0696df6c5e126a6140e\"\u003e\u003ccode\u003e692a47d\u003c/code\u003e\u003c/a\u003e Update dependency uv_build to \u0026gt;=0.12.0,\u0026lt;0.13.0 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1018\"\u003e#1018\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/c13591825b93bf249a479320599c4568fa80df03\"\u003e\u003ccode\u003ec135918\u003c/code\u003e\u003c/a\u003e Fix Request.data type to include list[Any] for JSON bulk payloads (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1016\"\u003e#1016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/21acef29907215977f72224df3881ce3d23b39eb\"\u003e\u003ccode\u003e21acef2\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1017\"\u003e#1017\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/2edc257f7ec5afbfed1ea4f421a1951d2b23b969\"\u003e\u003ccode\u003e2edc257\u003c/code\u003e\u003c/a\u003e Update dependency pre-commit to v4.6.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1015\"\u003e#1015\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/070ad4513134dfbf04500cc8a0f1773a483d45c0\"\u003e\u003ccode\u003e070ad45\u003c/code\u003e\u003c/a\u003e Update astral-sh/setup-uv action to v9 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1014\"\u003e#1014\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/217bd0bd14c8df1ef30d6a8913860fff62ae600a\"\u003e\u003ccode\u003e217bd0b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1013\"\u003e#1013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/33ffd2054733d8b8ef24062962bb2c8b3ca14afa\"\u003e\u003ccode\u003e33ffd20\u003c/code\u003e\u003c/a\u003e Update pypa/gh-action-pypi-publish action to v1.14.1 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1012\"\u003e#1012\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/2100f01dcb0abddf6c04d52b2cdd20decac49127\"\u003e\u003ccode\u003e2100f01\u003c/code\u003e\u003c/a\u003e Update dependency mypy to \u0026gt;=1.13,\u0026lt;2.4 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1009\"\u003e#1009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/e373120b36c2c29679cc403933afda3dce687dfa\"\u003e\u003ccode\u003ee373120\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/1011\"\u003e#1011\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.17.0...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-material` from 9.7.6 to 9.7.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/releases\"\u003emkdocs-material's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003emkdocs-material-9.7.7\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is approaching end of life\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eMaterial for MkDocs is scheduled to reach end of life on November 5, 2026. Until then, maintenance is limited to critical bug fixes and security updates. After this date, the project will remain available on PyPI and GitHub, but no further maintenance is planned except in exceptional circumstances.\u003c/p\u003e\n\u003cp\u003eFor users looking for a long-term, actively developed successor, we're building \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e – a next-generation static site generator designed for technical documentation. If you're planning a new documentation project or evaluating your long-term options, we invite you to take a look.\u003c/p\u003e\n\u003cp\u003eOrganizations requiring support beyond this date are welcome to get in touch to discuss available options.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003eRead the full announcement on our blog\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a DOM-based XSS vulnerability in search suggestions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/p\"\u003e\u003ccode\u003e@​p\u003c/code\u003e\u003c/a\u003e- for responsibly reporting this issue.\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG\"\u003emkdocs-material's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003emkdocs-material-9.7.7 (2026-07-17)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed DOM-based XSS vulnerability in search suggestions\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.6 (2026-03-19)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.5 (2026-03-10)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLimited version range of mkdocs to \u0026lt;2\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning (clarify relation with MkDocs)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.4 (2026-03-03)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHardened social cards plugin by switching to sandboxed environment\u003c/li\u003e\n\u003cli\u003eUpdated MkDocs 2.0 incompatibility warning\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.3 (2026-02-24)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8567\"\u003e#8567\u003c/a\u003e: Print MkDocs 2.0 incompatibility warning to stderr\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.2 (2026-02-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOpened up version ranges of optional dependencies for forward-compatibility\u003c/li\u003e\n\u003cli\u003eAdded warning to 'mkdocs build' about impending MkDocs 2.0 incompatibility\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.1 (2025-12-18)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated requests to 2.30+ to mitigate CVE in urllib\u003c/li\u003e\n\u003cli\u003eFixed privacy plugin not picking up protocol-relative URLs\u003c/li\u003e\n\u003cli\u003eFixed \u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8542\"\u003e#8542\u003c/a\u003e: false positives and negatives captured in privacy plugin\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003emkdocs-material-9.7.0 (2025-11-11)\u003c/p\u003e\n\u003cp\u003e⚠️ Material for MkDocs is now in maintenance mode\u003c/p\u003e\n\u003cp\u003eThis is the last release of Material for MkDocs that will receive new features.\nGoing forward, the Material for MkDocs team focuses on Zensical, a next-gen\nstatic site generator built from first principles. We will provide critical\nbug fixes and security updates for Material for MkDocs for 12 months at least.\u003c/p\u003e\n\u003cp\u003eRead the full announcement on our blog:\n\u003ca href=\"https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\"\u003ehttps://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis release includes all features that were previously exclusive to the\nInsiders edition. These features are now freely available to everyone.\u003c/p\u003e\n\u003cp\u003eNote on deprecated plugins: The projects and typeset plugins are included in\nthis release, but must be considered deprecated. Both plugins proved\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/b3e6dd886a974aa8200759ecfd7db28c598a2894\"\u003e\u003ccode\u003eb3e6dd8\u003c/code\u003e\u003c/a\u003e Prepare 9.7.7 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/52fb6be8aafe326419f34dc94d3211e7bbfbfb25\"\u003e\u003ccode\u003e52fb6be\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/901e6335cc80b0f12e46a1e34bd85e983dd78a6e\"\u003e\u003ccode\u003e901e633\u003c/code\u003e\u003c/a\u003e Added \u003ccode\u003eSECURITY.md\u003c/code\u003e with EOL notice\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/5b36f2ac499a45905e246bc66bbee2858ef6556f\"\u003e\u003ccode\u003e5b36f2a\u003c/code\u003e\u003c/a\u003e Bump js-yaml from 4.1.1 to 4.2.0 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8598\"\u003e#8598\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/2d11e7bc92c59b86d6ac0da2e38044fb4befa6e0\"\u003e\u003ccode\u003e2d11e7b\u003c/code\u003e\u003c/a\u003e Bump form-data from 3.0.4 to 3.0.5 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8597\"\u003e#8597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/ae05a534a8c8e1c58eb6aa55d460d309bcfce22b\"\u003e\u003ccode\u003eae05a53\u003c/code\u003e\u003c/a\u003e Bump esbuild from 0.27.2 to 0.28.1 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8596\"\u003e#8596\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/434af93166e5b90b78bba1295ca5a140fc67d0bc\"\u003e\u003ccode\u003e434af93\u003c/code\u003e\u003c/a\u003e Bump shell-quote from 1.7.3 to 1.8.4 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8593\"\u003e#8593\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/4447cdadcbe8bc82570e9f1ae2b970f461b03b68\"\u003e\u003ccode\u003e4447cda\u003c/code\u003e\u003c/a\u003e Documentation (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8590\"\u003e#8590\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/8f8d551c9c5296dfc2a5ede35047bfb491d66bc9\"\u003e\u003ccode\u003e8f8d551\u003c/code\u003e\u003c/a\u003e Updated copyright year (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8588\"\u003e#8588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/08d8514d491782b4ac46673bcfdedb2f6fc85f3d\"\u003e\u003ccode\u003e08d8514\u003c/code\u003e\u003c/a\u003e Bump fast-uri from 3.0.3 to 3.1.2 (\u003ca href=\"https://redirect.github.com/squidfunk/mkdocs-material/issues/8587\"\u003e#8587\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.7.6...9.7.7\"\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/Artui/djangorestframework-pydantic-ai/pull/35","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Artui%2Fdjangorestframework-pydantic-ai/issues/35","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/35/packages"}},{"old_version":"3.16.9","new_version":"3.17.0","update_type":"minor","path":null,"pr_created_at":"2026-07-02T05:48:16.000Z","version_change":"3.16.9 → 3.17.0","issue":{"uuid":"4791642974","node_id":"PR_kwDOSQnNv87s-yFi","number":28,"state":"closed","title":"build(deps): bump the python group across 1 directory with 14 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-07T05:47:41.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-02T05:48:16.000Z","updated_at":"2026-07-07T05:47:42.000Z","time_to_close":431965,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python","update_count":14,"packages":[{"name":"django","old_version":"6.0.3","new_version":"6.0.6","repository_url":"https://github.com/django/django"},{"name":"django-environ","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/joke2k/django-environ"},{"name":"faker","old_version":"40.12.0","new_version":"40.28.1","repository_url":"https://github.com/joke2k/faker"},{"name":"hiredis","old_version":"3.3.1","new_version":"3.4.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"psycopg","old_version":"3.3.3","new_version":"3.3.4"},{"name":"coverage","old_version":"7.13.5","new_version":"7.15.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-coverage-plugin","old_version":"3.2.0","new_version":"3.2.2","repository_url":"https://github.com/coveragepy/django_coverage_plugin"},{"name":"django-stubs","old_version":"6.0.2","new_version":"6.0.6"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"djlint","old_version":"1.36.4","new_version":"1.40.3","repository_url":"https://github.com/djlint/djLint"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest","old_version":"9.0.2","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ruff","old_version":"0.15.9","new_version":"0.15.20","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 14 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.3` | `6.0.6` |\n| [django-environ](https://github.com/joke2k/django-environ) | `0.13.0` | `0.14.0` |\n| [faker](https://github.com/joke2k/faker) | `40.12.0` | `40.28.1` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.1` | `3.4.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.3.3` | `3.3.4` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.15.0` |\n| [django-coverage-plugin](https://github.com/coveragepy/django_coverage_plugin) | `3.2.0` | `3.2.2` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.2` | `6.0.6` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [djlint](https://github.com/djlint/djLint) | `1.36.4` | `1.40.3` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.9` | `0.15.20` |\n\n\nUpdates `django` from 6.0.3 to 6.0.6\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ee93f65169c280c9ab3d2ce103dd478c96d05065\"\u003e\u003ccode\u003eee93f65\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.6 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1721035a72624aad7b38dd19b14013efd94b24b8\"\u003e\u003ccode\u003e1721035\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-48587 -- Ignored whitespace padding when checking Vary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/664652f1a2dd80d8a4cd491b4313cad915ae6669\"\u003e\u003ccode\u003e664652f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-35193 -- Varied on Authorization when caching non-publ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/b4330259ffbe1a031ed14daab1f35697460f10f2\"\u003e\u003ccode\u003eb433025\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-8404 -- Used Cache-Control directives case-insensitive...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/625a670c467aa3118c0f8ae1e0df14dbebb3bf68\"\u003e\u003ccode\u003e625a670\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-7666 -- Delayed setting SMTP connection until fully co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c807d9c398022d23cb27518fa6ecaf343efb30cf\"\u003e\u003ccode\u003ec807d9c\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-6873 -- Prevented signed cookie salt namespace collisi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/98a75e39cfc63fa72162027b5678943b78a4469b\"\u003e\u003ccode\u003e98a75e3\u003c/code\u003e\u003c/a\u003e [6.0.x] Included commit hash in checksum file when building artifacts for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dd895d6268f1dd544a565a321cb4527ca3ca1173\"\u003e\u003ccode\u003edd895d6\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/49ca2db7f4d4ca4a7735a40610d59c84a039eb32\"\u003e\u003ccode\u003e49ca2db\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated links to severity levels in release notes.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9f32a2301a9aa897f967fd8077496455ebf5d77\"\u003e\u003ccode\u003ec9f32a2\u003c/code\u003e\u003c/a\u003e [6.0.x] Added stub release notes and release date for 6.0.6 and 5.2.15.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.3...6.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-environ` from 0.13.0 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/django-environ/releases\"\u003edjango-environ's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.0\u003c/h2\u003e\n\u003cp\u003edjango-environ 0.14.0 improves type annotations across \u003ccode\u003eEnv\u003c/code\u003e and updates \u003ccode\u003eEnv.read_env()\u003c/code\u003e to support caller-owned file-like objects without closing them.\u003c/p\u003e\n\u003cp\u003eThis is the final django-environ release supporting Python 3.9.\u003c/p\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eType annotations and matching docstring information for \u003ccode\u003eEnv\u003c/code\u003e methods.\u003c/li\u003e\n\u003cli\u003eA conditional \u003ccode\u003etyping_extensions\u003c/code\u003e dependency providing \u003ccode\u003eTypeAlias\u003c/code\u003e on Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEnv.read_env()\u003c/code\u003e now accepts path-like and file-like objects without closing file-like objects supplied by the caller.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEnv.read_env()\u003c/code\u003e now raises an explicit error when it cannot determine the caller frame used to resolve the default \u003ccode\u003e.env\u003c/code\u003e path.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\"\u003ehttps://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/django-environ/0.14.0/\"\u003ehttps://pypi.org/project/django-environ/0.14.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/joke2k/django-environ/blob/v0.14.0/CHANGELOG.rst\"\u003edjango-environ's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev0.14.0\u003c/code\u003e_ - 18-June-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded type annotations and matching docstring information to \u003ccode\u003eEnv\u003c/code\u003e methods\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a Python 3.9 compatibility dependency on \u003ccode\u003etyping_extensions\u003c/code\u003e for\n\u003ccode\u003eTypeAlias\u003c/code\u003e\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated \u003ccode\u003eEnv.read_env()\u003c/code\u003e to accept path-like and file-like objects without\nclosing file-like objects supplied by the caller\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded an explicit error when \u003ccode\u003eEnv.read_env()\u003c/code\u003e cannot determine its caller\nframe while resolving the default \u003ccode\u003e.env\u003c/code\u003e path\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\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/joke2k/django-environ/commit/6e1b461125e2313cae362e1ab9426a97d9e843b0\"\u003e\u003ccode\u003e6e1b461\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/635\"\u003e#635\u003c/a\u003e from joke2k/release/0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/b65f66ebc8015efa40093d6b21bac72a9f2117f9\"\u003e\u003ccode\u003eb65f66e\u003c/code\u003e\u003c/a\u003e chore(release): prepare 0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/39f980a03a0df18069875a118deabf30db75f9c2\"\u003e\u003ccode\u003e39f980a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/633\"\u003e#633\u003c/a\u003e from joke2k/hotfix/0.14-apply-pr-600\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/020825ce63fa3ba64e4529f620de7ca6bf0d24a0\"\u003e\u003ccode\u003e020825c\u003c/code\u003e\u003c/a\u003e ci: allow release and hotfix PRs to target main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/6c1dd5b970c8594aa28f0592ae2d655bea0a2282\"\u003e\u003ccode\u003e6c1dd5b\u003c/code\u003e\u003c/a\u003e fix(typing): support TypeAlias on Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c0d7b2b61658e679f76a45cdc2d7ea2a4ae4026a\"\u003e\u003ccode\u003ec0d7b2b\u003c/code\u003e\u003c/a\u003e Ensure \u003ccode\u003eEnv.read_env\u003c/code\u003e supports any file-like object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c41ee54266877a1cba3a7a5b0811792cc63af504\"\u003e\u003ccode\u003ec41ee54\u003c/code\u003e\u003c/a\u003e Guard against an inability to read stack frames\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/64bfe4bafd1ce676743ff62c000b0d442213bb36\"\u003e\u003ccode\u003e64bfe4b\u003c/code\u003e\u003c/a\u003e Add type information to docstrings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/791df954df3e2d326731abf240c6c88ea7bb0fd1\"\u003e\u003ccode\u003e791df95\u003c/code\u003e\u003c/a\u003e Add type annotations to \u003ccode\u003estr\u003c/code\u003e and \u003ccode\u003ebool\u003c/code\u003e parameters of methods in \u003ccode\u003eEnv\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/43705929155a5b6e24a9118d0b90ad82b95be6e0\"\u003e\u003ccode\u003e4370592\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into main\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.12.0 to 40.28.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/releases\"\u003efaker's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v40.28.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.28.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.28.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.28.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.27.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.27.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.26.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.26.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.25.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.25.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.24.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.24.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.24.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.24.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.23.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.23.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.23.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.23.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.22.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.22.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.21.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.21.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.20.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.20.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.19.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.19.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.19.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.19.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.18.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.18.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.17.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.17.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.16.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.16.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/faker/blob/master/CHANGELOG.md\"\u003efaker's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.28.0...v40.28.1\"\u003ev40.28.1 - 2026-07-01\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: compute valid ISO 7064 Mod 11,10 check digit for \u003ccode\u003ede_DE\u003c/code\u003e \u003ccode\u003evat_id\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2403\"\u003e#2403\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/CedricConday\"\u003e\u003ccode\u003e@​CedricConday\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.27.0...v40.28.0\"\u003ev40.28.0 - 2026-07-01\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ees_MX\u003c/code\u003e automotive license plate provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2393\"\u003e#2393\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/r1cksync\"\u003e\u003ccode\u003e@​r1cksync\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.26.0...v40.27.0\"\u003ev40.27.0 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003esr_BA\u003c/code\u003e SSN provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2391\"\u003e#2391\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/AleksaMCode\"\u003e\u003ccode\u003e@​AleksaMCode\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.25.0...v40.26.0\"\u003ev40.26.0 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate providers job, phone_number, bank and ssn for pt_BR (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2386\"\u003e#2386\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/dclobato\"\u003e\u003ccode\u003e@​dclobato\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eUpdate phone number test regex for pt_BR. Thanks \u003ca href=\"https://github.com/fcurella\"\u003e\u003ccode\u003e@​fcurella\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.24.1...v40.25.0\"\u003ev40.25.0 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate outdated Korean locale names (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2385\"\u003e#2385\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/ydj515\"\u003e\u003ccode\u003e@​ydj515\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.24.0...v40.24.1\"\u003ev40.24.1 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: prevent infinite recursion in \u003ccode\u003e_safe_random_int\u003c/code\u003e when both bounds collapse to the same integer (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2396\"\u003e#2396\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/gaoflow\"\u003e\u003ccode\u003e@​gaoflow\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.23.1...v40.24.0\"\u003ev40.24.0 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd mk_MK (Macedonian) locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2339\"\u003e#2339\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/acikabubo\"\u003e\u003ccode\u003e@​acikabubo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eCI: run PR checks against PR code instead of base branch. Thanks \u003ca href=\"https://github.com/fcurella\"\u003e\u003ccode\u003e@​fcurella\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.23.0...v40.23.1\"\u003ev40.23.1 - 2026-06-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: raise \u003ccode\u003eNotImplementedError\u003c/code\u003e in \u003ccode\u003ebank()\u003c/code\u003e for locales without banks data (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2378\"\u003e#2378\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/koushik717\"\u003e\u003ccode\u003e@​koushik717\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix outdated links in README credits section (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2394\"\u003e#2394\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/TejasAmle\"\u003e\u003ccode\u003e@​TejasAmle\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eBump actions/cache from 5 to 6 (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2400\"\u003e#2400\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot].\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 6 to 7 (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2392\"\u003e#2392\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot].\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.22.0...v40.23.0\"\u003ev40.23.0 - 2026-06-10\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd French social security numbers with Corsican codes (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2373\"\u003e#2373\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/dancergraham\"\u003e\u003ccode\u003e@​dancergraham\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix typos in docstrings and comments (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2387\"\u003e#2387\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/Labib-Bin-Salam\"\u003e\u003ccode\u003e@​Labib-Bin-Salam\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.21.0...v40.22.0\"\u003ev40.22.0 - 2026-06-09\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003emr_IN\u003c/code\u003e \u003ccode\u003eperson\u003c/code\u003e, \u003ccode\u003eaddress\u003c/code\u003e, and \u003ccode\u003ephone_number\u003c/code\u003e providers (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2367\"\u003e#2367\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFix flaky \u003ccode\u003etest_optional\u003c/code\u003e by using seed and larger sample size (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2376\"\u003e#2376\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/tejasae-afk\"\u003e\u003ccode\u003e@​tejasae-afk\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003ca href=\"https://github.com/joke2k/faker/compare/v40.20.0...v40.21.0\"\u003ev40.21.0 - 2026-06-02\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd banks list for \u003ccode\u003een_GB\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2363\"\u003e#2363\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/osolomientsev\"\u003e\u003ccode\u003e@​osolomientsev\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/joke2k/faker/commit/bb62df7a94c54e203aa61ab4bd46c327798a72d8\"\u003e\u003ccode\u003ebb62df7\u003c/code\u003e\u003c/a\u003e Bump version: 40.28.0 → 40.28.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/1f87cf28513d8be802162c09b309a331cec5ab2a\"\u003e\u003ccode\u003e1f87cf2\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/41624e3ba9a7d8ae6bab2e3f09d319b772447545\"\u003e\u003ccode\u003e41624e3\u003c/code\u003e\u003c/a\u003e fix(de_DE): compute valid ISO 7064 Mod 11,10 check digit for vat_id (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2403\"\u003e#2403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a7742345227f3e13d54fbe6025a32f6ccc9cdbdb\"\u003e\u003ccode\u003ea774234\u003c/code\u003e\u003c/a\u003e Bump version: 40.27.0 → 40.28.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/96c3090bc6efc6ec74048d63094a1741bc05d3f3\"\u003e\u003ccode\u003e96c3090\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/20e203a2f4052ebf00f3a2246e1e5c7da82b9d5d\"\u003e\u003ccode\u003e20e203a\u003c/code\u003e\u003c/a\u003e feat(automotive): add es_MX (Mexico) license plate provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2393\"\u003e#2393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/98da1169c0bdca85751459f8a020cb4695d12c7d\"\u003e\u003ccode\u003e98da116\u003c/code\u003e\u003c/a\u003e Bump version: 40.26.0 → 40.27.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f2c05d979c9e2599ebdc68d3856d5736c65a01fb\"\u003e\u003ccode\u003ef2c05d9\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/88a17fc4b94699ca3057b64eab3dfc014d74c457\"\u003e\u003ccode\u003e88a17fc\u003c/code\u003e\u003c/a\u003e :lipstick: format code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4f7f545bba7db6755ea93b0a0bd559effa7eaf9a\"\u003e\u003ccode\u003e4f7f545\u003c/code\u003e\u003c/a\u003e feat(locale): add sr_BA ssn provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2391\"\u003e#2391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.12.0...v40.28.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.1 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse hiredis v1.4.0 with improved floating-point number parsing\u003c/li\u003e\n\u003cli\u003eDrop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintainance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependencies and fix CI (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/233\"\u003e#233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix benchmarking for hiredis-py (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/232\"\u003e#232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRun integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump GitHub action versions (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.15.0a7 to CI matrix (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse Python 3.11 in FreeBSD CI run (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump version to 3.4.0-dev (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/MugundanMCW\"\u003e\u003ccode\u003e@​MugundanMCW\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/uglide\"\u003e\u003ccode\u003e@​uglide\u003c/code\u003e\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/redis/hiredis-py/commit/54c1938dfe83e0ea8cb619728b11985a6c07d07b\"\u003e\u003ccode\u003e54c1938\u003c/code\u003e\u003c/a\u003e Version 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/d538033d7158a4b54c0c4a197871396ced996075\"\u003e\u003ccode\u003ed538033\u003c/code\u003e\u003c/a\u003e Beta-2 is not available yet, use beta-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/41cbe8da7341787d1a714036f9dc407dfeef0ea8\"\u003e\u003ccode\u003e41cbe8d\u003c/code\u003e\u003c/a\u003e Use 3.15.0-beta.2 in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/427a12180266d702fd34d4f6557ea658380f4d18\"\u003e\u003ccode\u003e427a121\u003c/code\u003e\u003c/a\u003e Add apt-get update to fix CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6982e3ea44d1093f211bc40c4e0181aa1978bc66\"\u003e\u003ccode\u003e6982e3e\u003c/code\u003e\u003c/a\u003e Bump hiredis to v1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/5eadef115e6ce89d3917231127865dda779e36b3\"\u003e\u003ccode\u003e5eadef1\u003c/code\u003e\u003c/a\u003e Update workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/059ccbc3902f761c8f9f65c03e104c3441add4ec\"\u003e\u003ccode\u003e059ccbc\u003c/code\u003e\u003c/a\u003e Run integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6f1147f4e5d69afed3866447d4defc178213a329\"\u003e\u003ccode\u003e6f1147f\u003c/code\u003e\u003c/a\u003e Add support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/b49261b783092d3c32eac3a2980ba61f49da41e0\"\u003e\u003ccode\u003eb49261b\u003c/code\u003e\u003c/a\u003e Bump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/c30abed1481e06e3beeca3e39dfaec64d7d64523\"\u003e\u003ccode\u003ec30abed\u003c/code\u003e\u003c/a\u003e Drop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.1...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.2.0 to 12.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove non-image ImageCms modes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9697\"\u003e#9697\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd release notes for SBOM and performance improvements \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd security release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9741\"\u003e#9741\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd release notes for Python 3.15 beta wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9696\"\u003e#9696\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eImageFont can also be used with ImageText \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9597\"\u003e#9597\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdditional guidelines for security reports \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9659\"\u003e#9659\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFixed typo \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9636\"\u003e#9636\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9591\"\u003e#9591\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRevise development support information in README \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9583\"\u003e#9583\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd INCIDENT_RESPONSE.md \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9555\"\u003e#9555\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd STRIDE threat model to security docs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9562\"\u003e#9562\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9556\"\u003e#9556\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate README with revised security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9553\"\u003e#9553\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9552\"\u003e#9552\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9534\"\u003e#9534\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9720\"\u003e#9720\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9653\"\u003e#9653\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v4 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9665\"\u003e#9665\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9655\"\u003e#9655\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libavif to v1.4.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9652\"\u003e#9652\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9651\"\u003e#9651\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency check-jsonschema to v0.37.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9650\"\u003e#9650\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate google/oss-fuzz digest to d872252 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9614\"\u003e#9614\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9609\"\u003e#9609\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libpng to v1.6.58 - autoclosed \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9608\"\u003e#9608\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9610\"\u003e#9610\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.20.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9599\"\u003e#9599\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9611\"\u003e#9611\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9607\"\u003e#9607\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMove dependency versions to single JSON and enable Renovate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9559\"\u003e#9559\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated raqm to 0.10.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9557\"\u003e#9557\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9532\"\u003e#9532\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTesting\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove matrix.os from benchmark \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9735\"\u003e#9735\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRemove references to libavif patch \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9734\"\u003e#9734\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd benchmark tests \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9654\"\u003e#9654\u003c/a\u003e [\u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUse reshape() instead of setting NumPy array shape directly \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9728\"\u003e#9728\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d\"\u003e\u003ccode\u003ebb1d8e8\u003c/code\u003e\u003c/a\u003e 12.3.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e63fc481dc2e07e21d5403deafb8f1ed98a513af\"\u003e\u003ccode\u003ee63fc48\u003c/code\u003e\u003c/a\u003e Add release notes for SBOM and performance improvements (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/13b701bbab291eec4bc87ea17ba06c94e5fe3054\"\u003e\u003ccode\u003e13b701b\u003c/code\u003e\u003c/a\u003e Add release notes for \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5564ca72fcd59d040e270af5dcf17a0d7161c364\"\u003e\u003ccode\u003e5564ca7\u003c/code\u003e\u003c/a\u003e List methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a0920fd384f800b5d0ba3dd29ecdeae4f1d4043b\"\u003e\u003ccode\u003ea0920fd\u003c/code\u003e\u003c/a\u003e Speed up ImageChops operations (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9738\"\u003e#9738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/07e9a6cd5336dc6cf8cae9165cd70cdd2b3e42fc\"\u003e\u003ccode\u003e07e9a6c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.filter()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9736\"\u003e#9736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a94578cf9649ea13e426cf7fb2b71b39ffc0dd50\"\u003e\u003ccode\u003ea94578c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.getchannel()\u003c/code\u003e, \u003ccode\u003eImage.merge()\u003c/code\u003e, \u003ccode\u003eImage.putalpha()\u003c/code\u003e and `Image...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/53e02c43c919d149b2a154a5180079f9df18fbbb\"\u003e\u003ccode\u003e53e02c4\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.fill()\u003c/code\u003e, \u003ccode\u003eImage.linear_gradient()\u003c/code\u003e and `Image.radial_gradient...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/af037475be8634ba739744243164ba9e2c8346a6\"\u003e\u003ccode\u003eaf03747\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.resample()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9739\"\u003e#9739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5c9ca56c3e5fba52b647809fbb0986c87e73a571\"\u003e\u003ccode\u003e5c9ca56\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003ealpha_composite\u003c/code\u003e, \u003ccode\u003ematrix\u003c/code\u003e, \u003ccode\u003enegative\u003c/code\u003e, \u003ccode\u003equantize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9740\"\u003e#9740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.2.0...12.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg[c]` from 3.3.3 to 3.3.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg[c]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eFuture releases\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5 (unreleased)\n^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.2\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix race condition in adapters at startup (:ticket:\u003ccode\u003e[#1230](https://github.com/psycopg/psycopg/issues/1230)\u003c/code\u003e).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/83f110367cdd249cc0a352e2246ecea9e878e5a0\"\u003e\u003ccode\u003e83f1103\u003c/code\u003e\u003c/a\u003e chore: bump psycopg_pool package version to 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/18287707f56a2b4f0817d9c23d137f5d69db6e31\"\u003e\u003ccode\u003e1828770\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8be14bbc18f74de7652606d2777e0950ec804cc0\"\u003e\u003ccode\u003e8be14bb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1301\"\u003e#1301\u003c/a\u003e from oliverhaas/fix/sync-pool-open-race\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/aee0bf2659db77c31154acf583baf0a98675c192\"\u003e\u003ccode\u003eaee0bf2\u003c/code\u003e\u003c/a\u003e fix(pool): fix race in the construction of the sync ConnectionPool lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/bc4d30375557fc32f2a91c2f8b75a5d21711ea89\"\u003e\u003ccode\u003ebc4d303\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/785379f196fc17473d312451a1fd4a06ef8dc895\"\u003e\u003ccode\u003e785379f\u003c/code\u003e\u003c/a\u003e fix: retain statusmessage after executemany with returning=False\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8882a73871e65727549657085922d043a106127c\"\u003e\u003ccode\u003e8882a73\u003c/code\u003e\u003c/a\u003e perf: do less if X in Y: return Y[X] for cache-like patterns\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f785395c189e709da5fa74a02d3797bfb9db6a4\"\u003e\u003ccode\u003e2f78539\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1299\"\u003e#1299\u003c/a\u003e from dvarrazzo/fix-camel-enum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/37ef1dc4e6d19dc4af062d45a63243cb96a261c2\"\u003e\u003ccode\u003e37ef1dc\u003c/code\u003e\u003c/a\u003e test: skip test on crdb depending on precise regtype behaviour\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/7f2f1d159df881260e3086fd61ea71343ca98e58\"\u003e\u003ccode\u003e7f2f1d1\u003c/code\u003e\u003c/a\u003e fix: fix client-side representation of enums requiring quotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.3...3.3.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.15.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.15.0 — 2026-07-02\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSince 7.14.0, reporting commands implicitly combine parallel data files. Now\nthose commands have a new option \u003ccode\u003e--keep-combined\u003c/code\u003e to retain the data files\nafter combining them instead of the default, which is to delete them.\nFinishes \u003ccode\u003eissue 2198\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the LCOV report would incorrectly count excluded functions as uncovered,\nas described in \u003ccode\u003eissue 2205\u003c/code\u003e\u003cem\u003e. This is now fixed thanks to \u003ccode\u003eMartin Kuntz Jacobsen \u0026lt;pull 2206_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWhen running your program, coverage now correctly sets\n\u003ccode\u003eyourmodule.__spec__.loader\u003c/code\u003e as \u003ccode\u003estrongly recommended \u0026lt;--loader--_\u0026gt;\u003c/code\u003e\u003cem\u003e,\navoiding the deprecation warning described in \u003ccode\u003eissue 2208\u003c/code\u003e\u003c/em\u003e. Thanks, \u003ccode\u003eA5rocks \u0026lt;pull 2209_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: with Python 3.10, running with the \u003ccode\u003e-I\u003c/code\u003e (isolated mode) option didn't\ncorrectly omit the current directory from the module search path, as\ndescribed in \u003ccode\u003eissue 2103\u003c/code\u003e\u003cem\u003e. That is now fixed thanks to \u003ccode\u003eIlia Sorokin \u0026lt;pull 2211_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. \u003cem\u003e--loader--: \u003ca href=\"https://docs.python.org/3/reference/datamodel.html#module.__loader\"\u003ehttps://docs.python.org/3/reference/datamodel.html#module.__loader\u003c/a\u003e\u003c/em\u003e_\n.. _issue 2103:  \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2103\"\u003ecoveragepy/coveragepy#2103\u003c/a\u003e\n.. _issue 2198:  \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2198\"\u003ecoveragepy/coveragepy#2198\u003c/a\u003e\n.. _issue 2205:  \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2205\"\u003ecoveragepy/coveragepy#2205\u003c/a\u003e\n.. _pull 2206: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2206\"\u003ecoveragepy/coveragepy#2206\u003c/a\u003e\n.. _issue 2208:  \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2208\"\u003ecoveragepy/coveragepy#2208\u003c/a\u003e\n.. _pull 2209: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2209\"\u003ecoveragepy/coveragepy#2209\u003c/a\u003e\n.. _pull 2211: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2211\"\u003ecoveragepy/coveragepy#2211\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-14-3:\u003c/p\u003e\n\u003ch2\u003eVersion 7.14.3 — 2026-06-22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the default \u003ccode\u003e...\u003c/code\u003e exclusion rule now also matches function bodies\nwhose closing return-type bracket is on its own line (for example, after a\nlong \u003ccode\u003e-\u0026gt; dict[ ... ]\u003c/code\u003e annotation that a formatter has split over multiple\nlines). Closes \u003ccode\u003eissue 2185\u003c/code\u003e\u003cem\u003e, thanks \u003ccode\u003eMengjia Shang \u0026lt;pull 2196_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: On 3.13t, we incorrectly issued \u003ccode\u003eCouldn't import C tracer\u003c/code\u003e errors.\nWe can't import the C tracer because in 7.14.2 we stopped shipping compiled\nwheels for 3.13t. Thanks, \u003ccode\u003eHugo van Kemenade \u0026lt;pull 2203_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2185: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2185\"\u003ecoveragepy/coveragepy#2185\u003c/a\u003e\n.. _pull 2196: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2196\"\u003ecoveragepy/coveragepy#2196\u003c/a\u003e\n.. _pull 2203: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2203\"\u003ecoveragepy/coveragepy#2203\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c8c8020e26394526ad24184879f5867bb46b0785\"\u003e\u003ccode\u003ec8c8020\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ae19db1fb3880f2b2bb0c03e3d76855cb71ce5f7\"\u003e\u003ccode\u003eae19db1\u003c/code\u003e\u003c/a\u003e docs: prep for 7.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/17b45a14119cb52bdf8170d1aa01f84a42b580e6\"\u003e\u003ccode\u003e17b45a1\u003c/code\u003e\u003c/a\u003e docs: --keep-combined in the man page\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6f9fa1e1e8a89f62c69dbf3b38e0adb744d6d4b2\"\u003e\u003ccode\u003e6f9fa1e\u003c/code\u003e\u003c/a\u003e fix: preserve isolated sys.path on Python 3.10 (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2211\"\u003e#2211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/787af5ff90e8a73bfd8cba7d5661b4930cc53ce5\"\u003e\u003ccode\u003e787af5f\u003c/code\u003e\u003c/a\u003e chore: bump actions/checkout in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2210\"\u003e#2210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1ed39982fe550fc542a9ed3d5561dec29737b0dc\"\u003e\u003ccode\u003e1ed3998\u003c/code\u003e\u003c/a\u003e fix: start attaching the loader on \u003ccode\u003e__spec__\u003c/code\u003e \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2208\"\u003e#2208\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2209\"\u003e#2209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1ab11229351f522d309f8cc54a542e4b97c78113\"\u003e\u003ccode\u003e1ab1122\u003c/code\u003e\u003c/a\u003e docs: remove stray comma\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f24a91f6d00b888c1d3d7c438cfe70294ad0c6ea\"\u003e\u003ccode\u003ef24a91f\u003c/code\u003e\u003c/a\u003e feat: --keep-combined for reporting commands. \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2198\"\u003e#2198\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5e70751905386500e35d1382061178da3ce5519e\"\u003e\u003ccode\u003e5e70751\u003c/code\u003e\u003c/a\u003e test: canonicalize mock calls in test_cmdline to reduce diff noise\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/65979cc05b7f6b10c3e27c84408867fd9bc30846\"\u003e\u003ccode\u003e65979cc\u003c/code\u003e\u003c/a\u003e fix: skip excluded functions in LCOV function totals (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2206\"\u003e#2206\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-coverage-plugin` from 3.2.0 to 3.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/releases\"\u003edjango-coverage-plugin's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.2.2\u003c/h2\u003e\n\u003cp\u003eFix: \u003ccode\u003e{% endblock %}\u003c/code\u003e lines (and others) were falsely reported as unexecuted when they appeared on their own indented line (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/74\"\u003eissue 74\u003c/a\u003e). Thanks, Marc Gibbons (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/pull/108\"\u003epull 108\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eDropped Django 3.x and 4.x.\u003c/p\u003e\n\u003cp\u003eSwitched to trusted publishing.\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/django_coverage_plugin/commit/4eb4fc975e915400734104851116e423164a7c5c\"\u003e\u003ccode\u003e4eb4fc9\u003c/code\u003e\u003c/a\u003e build: fix publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/420435edd77b7af9e508446d60a852f61bcaed8c\"\u003e\u003ccode\u003e420435e\u003c/code\u003e\u003c/a\u003e build: v3.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/86a9d30fc44628981cd944ff58189f03fa082ca8\"\u003e\u003ccode\u003e86a9d30\u003c/code\u003e\u003c/a\u003e build: trusted publishing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/9a5dfe53d9a81a8b54585c8b20b7e5ca06855afc\"\u003e\u003ccode\u003e9a5dfe5\u003c/code\u003e\u003c/a\u003e docs: update history\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/bfee7019ec245ef61a3c182c262e54e64a1cabe8\"\u003e\u003ccode\u003ebfee701\u003c/code\u003e\u003c/a\u003e fix: endblock falsely reported as uncovered when on its own indented line \u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/74\"\u003e#74\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/59954f3fb97938849e8ec882d59a7cf438f12eff\"\u003e\u003ccode\u003e59954f3\u003c/code\u003e\u003c/a\u003e correct two old references to nedbat on github\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/7d145017c244f192c55a17035033667a190c0d6a\"\u003e\u003ccode\u003e7d14501\u003c/code\u003e\u003c/a\u003e docs: thanks, Marc Gibbons for \u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/109\"\u003e#109\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/55cf337e2a4242c30766dc4784bd99ac5d180085\"\u003e\u003ccode\u003e55cf337\u003c/code\u003e\u003c/a\u003e docs: move authors into readme\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/639d48a188d04da28623a4751ae50e4da301fd9e\"\u003e\u003ccode\u003e639d48a\u003c/code\u003e\u003c/a\u003e Add Django 6, drop 3.2 and 4.2 which are EOL (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/109\"\u003e#109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/commit/53d114ac6082fb3fcd97c5cf0c4d634d395fe7f0\"\u003e\u003ccode\u003e53d114a\u003c/code\u003e\u003c/a\u003e chore: bump actions/setup-python in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/django_coverage_plugin/issues/106\"\u003e#106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/django_coverage_plugin/compare/v3.2.0...v3.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.2 to 6.0.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.0.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003etask\u003c/code\u003e decorator typing for \u003ccode\u003etakes_context=True\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3406\"\u003etypeddjango/django-stubs#3406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove database backend typing by \u003ca href=\"https://github.com/dekkers\"\u003e\u003ccode\u003e@​dekkers\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3190\"\u003etypeddjango/django-stubs#3190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix only pk validation for abstract models by \u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3430\"\u003etypeddjango/django-stubs#3430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003evalidators\u003c/code\u003e consistent by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3433\"\u003etypeddjango/django-stubs#3433\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow aggregate filters to use expressions by \u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3434\"\u003etypeddjango/django-stubs#3434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypecheck save()/asave() update_fields against model fields by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3444\"\u003etypeddjango/django-stubs#3444\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/dekkers\"\u003e\u003ccode\u003e@​dekkers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3190\"\u003etypeddjango/django-stubs#3190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3430\"\u003etypeddjango/django-stubs#3430\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.5...6.0.6\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.5...6.0.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.0.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAccept datetime/timedelta on reverse ops of Combinable by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3361\"\u003etypeddjango/django-stubs#3361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency pyrefly to v0.64.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3377\"\u003etypeddjango/django-stubs#3377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type when \u003ccode\u003e.annotate()\u003c/code\u003e is called on a generic QuerySet by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3379\"\u003etypeddjango/django-stubs#3379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type checking of \u003ccode\u003e__in\u003c/code\u003e lookup by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3314\"\u003etypeddjango/django-stubs#3314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GenericPrefetch invariance with QuerySet by \u003ca href=\"https://github.com/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type in merge_annotations_from_custom_method by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3383\"\u003etypeddjango/django-stubs#3383\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mypy 2.1.0 support by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3384\"\u003etypeddjango/django-stubs#3384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003epyrefly\u003c/code\u003e to 1.0.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3386\"\u003etypeddjango/django-stubs#3386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003erelated_model\u003c/code\u003e type for mypy 2.1 by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3388\"\u003etypeddjango/django-stubs#3388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-enable \u003ccode\u003eempty-body\u003c/code\u003e error code for mypy and ty by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3390\"\u003etypeddjango/django-stubs#3390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003emark_safe\u003c/code\u003e to accept \u003ccode\u003eStrOrPromise\u003c/code\u003e by \u003ca href=\"https://github.com/Alexerson\"\u003e\u003ccode\u003e@​Alexerson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3392\"\u003etypeddjango/django-stubs#3392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable \u003ccode\u003eunused-ignore\u003c/code\u003e code in pyrefly by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3393\"\u003etypeddjango/django-stubs#3393\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix InlineModelAdmin parent-object method signatures by \u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAdminSite.register\u003c/code\u003e typing by \u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3387\"\u003etypeddjango/django-stubs#3387\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/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\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/typeddjango/django-stubs/commit/c1d968a356955f9598da6536115ccae4ed802b44\"\u003e\u003ccode\u003ec1d968a\u003c/code\u003e\u003c/a\u003e Version 6.0.6 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/c78e1060c24c6f36ec128e6264cab523b7954c52\"\u003e\u003ccode\u003ec78e106\u003c/code\u003e\u003c/a\u003e Typecheck save()/asave() update_fields against model fields (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3444\"\u003e#3444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/9110cd4800a3dbc12d753a669ae847d5bc83ef86\"\u003e\u003ccode\u003e9110cd4\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.62.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/2e6023a32ac6ee53b7f34274e839ca44f18a3f98\"\u003e\u003ccode\u003e2e6023a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3441\"\u003e#3441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/908841607ad48ca8bffb952c60344eb524a58441\"\u003e\u003ccode\u003e9088416\u003c/code\u003e\u003c/a\u003e Update dependency pytest to v9.1.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/4ffe717427bf4ffce1eb043ade0ea22cccd3edcc\"\u003e\u003ccode\u003e4ffe717\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.51 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3439\"\u003e#3439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/0caf5de459f3b9277d465e6ee9cd3f8027a1e0bd\"\u003e\u003ccode\u003e0caf5de\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v1.1.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3438\"\u003e#3438\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6b0170d9f1190f141f97e0b3e039f42d2deba0f7\"\u003e\u003ccode\u003e6b0170d\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.50 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3437\"\u003e#3437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a257acd9cfc36353c6f2890aabe2020b2bc9d35f\"\u003e\u003ccode\u003ea257acd\u003c/code\u003e\u003c/a\u003e Update actions/checkout action to v7 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3436\"\u003e#3436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/dc012ea24926c9ce8ee0be94af2b86ab1e2b6358\"\u003e\u003ccode\u003edc012ea\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v1.1.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3435\"\u003e#3435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.2...6.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.16.9 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003ch2\u003eVersioning\u003c/h2\u003e\n\u003cp\u003eThis is the first version targeting \u003ccode\u003edjangorestframework\u003c/code\u003e v3.17 and \u003ccode\u003edjango-stubs\u003c/code\u003e v6.0. However, not all stubs have been updated yet for 3.17:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSee \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\u003c/a\u003e for remaining work\u003c/li\u003e\n\u003cli\u003ePlease open pull requests, but keep changes small.\u003c/li\u003e\n\u003cli\u003eFirst check that nobody is already working on that topic: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/pulls\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/pulls\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e \u003ccode\u003ecode\u003c/code\u003e support and fix defaults in validators by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/947\"\u003etypeddjango/djangorestframework-stubs#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorator stubs for DRF 3.17 by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/949\"\u003etypeddjango/djangorestframework-stubs#949\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eSerializer\u003c/code\u003e context type \u003ccode\u003edict\u003c/code\u003e -\u0026gt; \u003ccode\u003eMapping\u003c/code\u003e by \u003ca href=\"https://github.com/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.renderers\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/960\"\u003etypeddjango/djangorestframework-stubs#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/964\"\u003etypeddjango/djangorestframework-stubs#964\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency djangorestframework to v3.17.1 \u0026amp; add new allowlist by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/941\"\u003etypeddjango/djangorestframework-stubs#941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance - Django 5.2.13 \u0026amp; 6.0.4 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/962\"\u003etypeddjango/djangorestframework-stubs#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/984\"\u003etypeddjango/djangorestframework-stubs#984\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/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.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/typeddjango/djangorestframework-stubs/commit/dcaf5607a9c22db2e19274ff49bd149489603e53\"\u003e\u003ccode\u003edcaf560\u003c/code\u003e\u003c/a\u003e Version 3.17.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/9ac7355a57ab3ac7e7c00830bb0d8ad4df699e01\"\u003e\u003ccode\u003e9ac7355\u003c/code\u003e\u003c/a\u003e Clean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/4f367f1fcbeb0c5f041a88ea12988fe5a4872e49\"\u003e\u003ccode\u003e4f367f1\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/7923d06e186d363e88e3590fe88a98bdd924920a\"\u003e\u003ccode\u003e7923d06\u003c/code\u003e\u003c/a\u003e Unpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b2d9250b66d2aa7727793dd05e7cd37208ebcde6\"\u003e\u003ccode\u003eb2d9250\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/77b63b4ea29056d63b30b60b2d82e564f6194d6b\"\u003e\u003ccode\u003e77b63b4\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/96a5e21a45f39a3e65dbff74a4ce3482d0cdd9d1\"\u003e\u003ccode\u003e96a5e21\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b6c3e0298ff742dfb60ec2a87319028cd955686f\"\u003e\u003ccode\u003eb6c3e02\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260510 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/cc0af26d455fd5b3b735806409d17e6aef01a0b2\"\u003e\u003ccode\u003ecc0af26\u003c/code\u003e\u003c/a\u003e Update dependency types-requests to v2.33.0.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/978\"\u003e#978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/001b9c2865e9c0aae2b1cb181baa5f02be2b6be1\"\u003e\u003ccode\u003e001b9c2\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djlint` from 1.36.4 to 1.40.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/djlint/djLint/releases\"\u003edjlint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.40.3\u003c/h2\u003e\n\u003ch3\u003eFix\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePreserve \u003ccode\u003edjlint:off\u003c/code\u003e blocks inside tag attributes and avoid false H025 orphan reports when a ma...\n\n_Description has been truncated_","html_url":"https://github.com/Dawit-y/pms/pull/28","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dawit-y%2Fpms/issues/28","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/28/packages"}},{"old_version":"3.16.9","new_version":"3.17.0","update_type":"minor","path":null,"pr_created_at":"2026-07-01T18:30:54.000Z","version_change":"3.16.9 → 3.17.0","issue":{"uuid":"4788234943","node_id":"PR_kwDOR20Ms87sz6sE","number":12,"state":"closed","title":"chore(deps): bump the python group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-07-06T18:27:56.000Z","author_association":null,"state_reason":null,"created_at":"2026-07-01T18:30:54.000Z","updated_at":"2026-07-06T18:27:57.000Z","time_to_close":431822,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":13,"packages":[{"name":"django","old_version":"6.0.4","new_version":"6.0.6","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.16.0","new_version":"65.18.0"},{"name":"django-environ","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/joke2k/django-environ"},{"name":"hiredis","old_version":"3.3.1","new_version":"3.4.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"pillow","old_version":"12.2.0","new_version":"12.3.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"psycopg","old_version":"3.3.3","new_version":"3.3.4"},{"name":"sentry-sdk","old_version":"2.58.0","new_version":"2.64.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.3","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.0.2","new_version":"6.0.6"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"ruff","old_version":"0.15.11","new_version":"0.15.20","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 13 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.4` | `6.0.6` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.16.0` | `65.18.0` |\n| [django-environ](https://github.com/joke2k/django-environ) | `0.13.0` | `0.14.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.1` | `3.4.0` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.2.0` | `12.3.0` |\n| [psycopg[c]](https://github.com/psycopg/psycopg) | `3.3.3` | `3.3.4` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.58.0` | `2.64.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.3` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.2` | `6.0.6` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.3` | `9.1.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.11` | `0.15.20` |\n\n\nUpdates `django` from 6.0.4 to 6.0.6\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ee93f65169c280c9ab3d2ce103dd478c96d05065\"\u003e\u003ccode\u003eee93f65\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.6 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1721035a72624aad7b38dd19b14013efd94b24b8\"\u003e\u003ccode\u003e1721035\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-48587 -- Ignored whitespace padding when checking Vary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/664652f1a2dd80d8a4cd491b4313cad915ae6669\"\u003e\u003ccode\u003e664652f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-35193 -- Varied on Authorization when caching non-publ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/b4330259ffbe1a031ed14daab1f35697460f10f2\"\u003e\u003ccode\u003eb433025\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-8404 -- Used Cache-Control directives case-insensitive...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/625a670c467aa3118c0f8ae1e0df14dbebb3bf68\"\u003e\u003ccode\u003e625a670\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-7666 -- Delayed setting SMTP connection until fully co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c807d9c398022d23cb27518fa6ecaf343efb30cf\"\u003e\u003ccode\u003ec807d9c\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-6873 -- Prevented signed cookie salt namespace collisi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/98a75e39cfc63fa72162027b5678943b78a4469b\"\u003e\u003ccode\u003e98a75e3\u003c/code\u003e\u003c/a\u003e [6.0.x] Included commit hash in checksum file when building artifacts for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dd895d6268f1dd544a565a321cb4527ca3ca1173\"\u003e\u003ccode\u003edd895d6\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/49ca2db7f4d4ca4a7735a40610d59c84a039eb32\"\u003e\u003ccode\u003e49ca2db\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated links to severity levels in release notes.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9f32a2301a9aa897f967fd8077496455ebf5d77\"\u003e\u003ccode\u003ec9f32a2\u003c/code\u003e\u003c/a\u003e [6.0.x] Added stub release notes and release date for 6.0.6 and 5.2.15.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.4...6.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.16.0 to 65.18.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-environ` from 0.13.0 to 0.14.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/django-environ/releases\"\u003edjango-environ's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.0\u003c/h2\u003e\n\u003cp\u003edjango-environ 0.14.0 improves type annotations across \u003ccode\u003eEnv\u003c/code\u003e and updates \u003ccode\u003eEnv.read_env()\u003c/code\u003e to support caller-owned file-like objects without closing them.\u003c/p\u003e\n\u003cp\u003eThis is the final django-environ release supporting Python 3.9.\u003c/p\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eType annotations and matching docstring information for \u003ccode\u003eEnv\u003c/code\u003e methods.\u003c/li\u003e\n\u003cli\u003eA conditional \u003ccode\u003etyping_extensions\u003c/code\u003e dependency providing \u003ccode\u003eTypeAlias\u003c/code\u003e on Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEnv.read_env()\u003c/code\u003e now accepts path-like and file-like objects without closing file-like objects supplied by the caller.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eEnv.read_env()\u003c/code\u003e now raises an explicit error when it cannot determine the caller frame used to resolve the default \u003ccode\u003e.env\u003c/code\u003e path.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull changelog: \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\"\u003ehttps://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/django-environ/0.14.0/\"\u003ehttps://pypi.org/project/django-environ/0.14.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/joke2k/django-environ/blob/v0.14.0/CHANGELOG.rst\"\u003edjango-environ's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev0.14.0\u003c/code\u003e_ - 18-June-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded type annotations and matching docstring information to \u003ccode\u003eEnv\u003c/code\u003e methods\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded a Python 3.9 compatibility dependency on \u003ccode\u003etyping_extensions\u003c/code\u003e for\n\u003ccode\u003eTypeAlias\u003c/code\u003e\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated \u003ccode\u003eEnv.read_env()\u003c/code\u003e to accept path-like and file-like objects without\nclosing file-like objects supplied by the caller\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded an explicit error when \u003ccode\u003eEnv.read_env()\u003c/code\u003e cannot determine its caller\nframe while resolving the default \u003ccode\u003e.env\u003c/code\u003e path\n\u003ccode\u003e[#633](https://github.com/joke2k/django-environ/issues/633) \u0026lt;https://github.com/joke2k/django-environ/pull/633\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/joke2k/django-environ/commit/6e1b461125e2313cae362e1ab9426a97d9e843b0\"\u003e\u003ccode\u003e6e1b461\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/635\"\u003e#635\u003c/a\u003e from joke2k/release/0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/b65f66ebc8015efa40093d6b21bac72a9f2117f9\"\u003e\u003ccode\u003eb65f66e\u003c/code\u003e\u003c/a\u003e chore(release): prepare 0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/39f980a03a0df18069875a118deabf30db75f9c2\"\u003e\u003ccode\u003e39f980a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/633\"\u003e#633\u003c/a\u003e from joke2k/hotfix/0.14-apply-pr-600\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/020825ce63fa3ba64e4529f620de7ca6bf0d24a0\"\u003e\u003ccode\u003e020825c\u003c/code\u003e\u003c/a\u003e ci: allow release and hotfix PRs to target main\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/6c1dd5b970c8594aa28f0592ae2d655bea0a2282\"\u003e\u003ccode\u003e6c1dd5b\u003c/code\u003e\u003c/a\u003e fix(typing): support TypeAlias on Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c0d7b2b61658e679f76a45cdc2d7ea2a4ae4026a\"\u003e\u003ccode\u003ec0d7b2b\u003c/code\u003e\u003c/a\u003e Ensure \u003ccode\u003eEnv.read_env\u003c/code\u003e supports any file-like object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c41ee54266877a1cba3a7a5b0811792cc63af504\"\u003e\u003ccode\u003ec41ee54\u003c/code\u003e\u003c/a\u003e Guard against an inability to read stack frames\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/64bfe4bafd1ce676743ff62c000b0d442213bb36\"\u003e\u003ccode\u003e64bfe4b\u003c/code\u003e\u003c/a\u003e Add type information to docstrings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/791df954df3e2d326731abf240c6c88ea7bb0fd1\"\u003e\u003ccode\u003e791df95\u003c/code\u003e\u003c/a\u003e Add type annotations to \u003ccode\u003estr\u003c/code\u003e and \u003ccode\u003ebool\u003c/code\u003e parameters of methods in \u003ccode\u003eEnv\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/43705929155a5b6e24a9118d0b90ad82b95be6e0\"\u003e\u003ccode\u003e4370592\u003c/code\u003e\u003c/a\u003e Merge branch 'develop' into main\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.13.0...v0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.1 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse hiredis v1.4.0 with improved floating-point number parsing\u003c/li\u003e\n\u003cli\u003eDrop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintainance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependencies and fix CI (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/233\"\u003e#233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix benchmarking for hiredis-py (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/232\"\u003e#232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRun integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump GitHub action versions (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.15.0a7 to CI matrix (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse Python 3.11 in FreeBSD CI run (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump version to 3.4.0-dev (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/MugundanMCW\"\u003e\u003ccode\u003e@​MugundanMCW\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/uglide\"\u003e\u003ccode\u003e@​uglide\u003c/code\u003e\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/redis/hiredis-py/commit/54c1938dfe83e0ea8cb619728b11985a6c07d07b\"\u003e\u003ccode\u003e54c1938\u003c/code\u003e\u003c/a\u003e Version 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/d538033d7158a4b54c0c4a197871396ced996075\"\u003e\u003ccode\u003ed538033\u003c/code\u003e\u003c/a\u003e Beta-2 is not available yet, use beta-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/41cbe8da7341787d1a714036f9dc407dfeef0ea8\"\u003e\u003ccode\u003e41cbe8d\u003c/code\u003e\u003c/a\u003e Use 3.15.0-beta.2 in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/427a12180266d702fd34d4f6557ea658380f4d18\"\u003e\u003ccode\u003e427a121\u003c/code\u003e\u003c/a\u003e Add apt-get update to fix CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6982e3ea44d1093f211bc40c4e0181aa1978bc66\"\u003e\u003ccode\u003e6982e3e\u003c/code\u003e\u003c/a\u003e Bump hiredis to v1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/5eadef115e6ce89d3917231127865dda779e36b3\"\u003e\u003ccode\u003e5eadef1\u003c/code\u003e\u003c/a\u003e Update workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/059ccbc3902f761c8f9f65c03e104c3441add4ec\"\u003e\u003ccode\u003e059ccbc\u003c/code\u003e\u003c/a\u003e Run integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6f1147f4e5d69afed3866447d4defc178213a329\"\u003e\u003ccode\u003e6f1147f\u003c/code\u003e\u003c/a\u003e Add support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/b49261b783092d3c32eac3a2980ba61f49da41e0\"\u003e\u003ccode\u003eb49261b\u003c/code\u003e\u003c/a\u003e Bump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/c30abed1481e06e3beeca3e39dfaec64d7d64523\"\u003e\u003ccode\u003ec30abed\u003c/code\u003e\u003c/a\u003e Drop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.1...v3.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pillow` from 12.2.0 to 12.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-pillow/Pillow/releases\"\u003epillow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e12.3.0\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\"\u003ehttps://pillow.readthedocs.io/en/stable/releasenotes/12.3.0.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eRemovals\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove non-image ImageCms modes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9697\"\u003e#9697\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDocumentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd release notes for SBOM and performance improvements \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd security release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9741\"\u003e#9741\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd release notes for Python 3.15 beta wheels \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9696\"\u003e#9696\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eImageFont can also be used with ImageText \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9597\"\u003e#9597\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdditional guidelines for security reports \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9659\"\u003e#9659\u003c/a\u003e [\u003ca href=\"https://github.com/wiredfool\"\u003e\u003ccode\u003e@​wiredfool\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFixed typo \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9636\"\u003e#9636\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdded CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9591\"\u003e#9591\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRevise development support information in README \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9583\"\u003e#9583\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd INCIDENT_RESPONSE.md \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9555\"\u003e#9555\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd STRIDE threat model to security docs \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9562\"\u003e#9562\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd CVEs to 12.2.0 release notes \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9556\"\u003e#9556\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate README with revised security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9553\"\u003e#9553\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate security policy \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9552\"\u003e#9552\u003c/a\u003e [\u003ca href=\"https://github.com/aclark4life\"\u003e\u003ccode\u003e@​aclark4life\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate macOS tested Python versions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9534\"\u003e#9534\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDependencies\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14.2.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9720\"\u003e#9720\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9653\"\u003e#9653\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v4 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9665\"\u003e#9665\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9655\"\u003e#9655\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libavif to v1.4.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9652\"\u003e#9652\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9651\"\u003e#9651\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency check-jsonschema to v0.37.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9650\"\u003e#9650\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate google/oss-fuzz digest to d872252 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9614\"\u003e#9614\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency lcms2 to v2.19 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9609\"\u003e#9609\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency libpng to v1.6.58 - autoclosed \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9608\"\u003e#9608\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency harfbuzz to v14 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9610\"\u003e#9610\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency mypy to v1.20.2 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9599\"\u003e#9599\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate github-actions \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9611\"\u003e#9611\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.1 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9607\"\u003e#9607\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eMove dependency versions to single JSON and enable Renovate \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9559\"\u003e#9559\u003c/a\u003e [\u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdated raqm to 0.10.5 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9557\"\u003e#9557\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUpdate dependency cibuildwheel to v3.4.0 \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9532\"\u003e#9532\u003c/a\u003e [@\u003ca href=\"https://github.com/apps/renovate\"\u003erenovate[bot]\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eTesting\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRemove matrix.os from benchmark \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9735\"\u003e#9735\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eRemove references to libavif patch \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9734\"\u003e#9734\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd benchmark tests \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9654\"\u003e#9654\u003c/a\u003e [\u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eUse reshape() instead of setting NumPy array shape directly \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9728\"\u003e#9728\u003c/a\u003e [\u003ca href=\"https://github.com/radarhere\"\u003e\u003ccode\u003e@​radarhere\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d\"\u003e\u003ccode\u003ebb1d8e8\u003c/code\u003e\u003c/a\u003e 12.3.0 version bump\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/e63fc481dc2e07e21d5403deafb8f1ed98a513af\"\u003e\u003ccode\u003ee63fc48\u003c/code\u003e\u003c/a\u003e Add release notes for SBOM and performance improvements (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9747\"\u003e#9747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/13b701bbab291eec4bc87ea17ba06c94e5fe3054\"\u003e\u003ccode\u003e13b701b\u003c/code\u003e\u003c/a\u003e Add release notes for \u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9679\"\u003e#9679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5564ca72fcd59d040e270af5dcf17a0d7161c364\"\u003e\u003ccode\u003e5564ca7\u003c/code\u003e\u003c/a\u003e List methods\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a0920fd384f800b5d0ba3dd29ecdeae4f1d4043b\"\u003e\u003ccode\u003ea0920fd\u003c/code\u003e\u003c/a\u003e Speed up ImageChops operations (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9738\"\u003e#9738\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/07e9a6cd5336dc6cf8cae9165cd70cdd2b3e42fc\"\u003e\u003ccode\u003e07e9a6c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.filter()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9736\"\u003e#9736\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/a94578cf9649ea13e426cf7fb2b71b39ffc0dd50\"\u003e\u003ccode\u003ea94578c\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.getchannel()\u003c/code\u003e, \u003ccode\u003eImage.merge()\u003c/code\u003e, \u003ccode\u003eImage.putalpha()\u003c/code\u003e and `Image...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/53e02c43c919d149b2a154a5180079f9df18fbbb\"\u003e\u003ccode\u003e53e02c4\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.fill()\u003c/code\u003e, \u003ccode\u003eImage.linear_gradient()\u003c/code\u003e and `Image.radial_gradient...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/af037475be8634ba739744243164ba9e2c8346a6\"\u003e\u003ccode\u003eaf03747\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003eImage.resample()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9739\"\u003e#9739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-pillow/Pillow/commit/5c9ca56c3e5fba52b647809fbb0986c87e73a571\"\u003e\u003ccode\u003e5c9ca56\u003c/code\u003e\u003c/a\u003e Speed up \u003ccode\u003ealpha_composite\u003c/code\u003e, \u003ccode\u003ematrix\u003c/code\u003e, \u003ccode\u003enegative\u003c/code\u003e, \u003ccode\u003equantize\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python-pillow/Pillow/issues/9740\"\u003e#9740\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-pillow/Pillow/compare/12.2.0...12.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psycopg[c]` from 3.3.3 to 3.3.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psycopg/psycopg/blob/master/docs/news.rst\"\u003epsycopg[c]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e.. currentmodule:: psycopg\u003c/p\u003e\n\u003cp\u003e.. index::\nsingle: Release notes\nsingle: News\u003c/p\u003e\n\u003ch1\u003e\u003ccode\u003epsycopg\u003c/code\u003e release notes\u003c/h1\u003e\n\u003ch2\u003eFuture releases\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.5 (unreleased)\n^^^^^^^^^^^^^^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDiscard prepared statements upon :sql:\u003ccode\u003eALTER *\u003c/code\u003e or \u003ccode\u003eDISCARD *\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1307](https://github.com/psycopg/psycopg/issues/1307)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!ProgrammingError\u003c/code\u003e when dumping non-\u003ccode\u003e!None\u003c/code\u003e values with\nno \u003ccode\u003e!NoneType\u003c/code\u003e dumper registered in python implementation (:ticket:\u003ccode\u003e[#1325](https://github.com/psycopg/psycopg/issues/1325)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e!wait_selector\u003c/code\u003e wait function to not raise \u003ccode\u003e!KeyError\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1327](https://github.com/psycopg/psycopg/issues/1327)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCurrent release\u003c/h2\u003e\n\u003cp\u003ePsycopg 3.3.4\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix possible spurious connection timeout in systems with very long uptimes\nin C extension (:ticket:\u003ccode\u003e[#1280](https://github.com/psycopg/psycopg/issues/1280)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eFix client-side adaptation of enums whose name require quotes\n(:ticket:\u003ccode\u003e[#1298](https://github.com/psycopg/psycopg/issues/1298)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eConsistently populate \u003ccode\u003e~Cursor.statusmessage\u003c/code\u003e after \u003ccode\u003e~Cursor.executemany()\u003c/code\u003e\n(:ticket:\u003ccode\u003e[#1302](https://github.com/psycopg/psycopg/issues/1302)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.3\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRetain \u003ccode\u003eError.pgconn\u003c/code\u003e when raising a single exception for multiple connection\nattempt errors (:ticket:\u003ccode\u003e[#1246](https://github.com/psycopg/psycopg/issues/1246)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReturn a proper error when server sends \u003ccode\u003eErrorResponse\u003c/code\u003e for a \u003ccode\u003eSync\u003c/code\u003e after\na \u003ccode\u003eParse\u003c/code\u003e (:ticket:\u003ccode\u003e[#1260](https://github.com/psycopg/psycopg/issues/1260)\u003c/code\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePsycopg 3.3.2\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cp\u003eFix race condition in adapters at startup (:ticket:\u003ccode\u003e[#1230](https://github.com/psycopg/psycopg/issues/1230)\u003c/code\u003e).\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/83f110367cdd249cc0a352e2246ecea9e878e5a0\"\u003e\u003ccode\u003e83f1103\u003c/code\u003e\u003c/a\u003e chore: bump psycopg_pool package version to 3.3.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/18287707f56a2b4f0817d9c23d137f5d69db6e31\"\u003e\u003ccode\u003e1828770\u003c/code\u003e\u003c/a\u003e chore: bump psycopg package version to 3.3.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8be14bbc18f74de7652606d2777e0950ec804cc0\"\u003e\u003ccode\u003e8be14bb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1301\"\u003e#1301\u003c/a\u003e from oliverhaas/fix/sync-pool-open-race\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/aee0bf2659db77c31154acf583baf0a98675c192\"\u003e\u003ccode\u003eaee0bf2\u003c/code\u003e\u003c/a\u003e fix(pool): fix race in the construction of the sync ConnectionPool lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/bc4d30375557fc32f2a91c2f8b75a5d21711ea89\"\u003e\u003ccode\u003ebc4d303\u003c/code\u003e\u003c/a\u003e chore(deps): bump the actions group across 1 directory with 4 updates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/785379f196fc17473d312451a1fd4a06ef8dc895\"\u003e\u003ccode\u003e785379f\u003c/code\u003e\u003c/a\u003e fix: retain statusmessage after executemany with returning=False\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/8882a73871e65727549657085922d043a106127c\"\u003e\u003ccode\u003e8882a73\u003c/code\u003e\u003c/a\u003e perf: do less if X in Y: return Y[X] for cache-like patterns\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/2f785395c189e709da5fa74a02d3797bfb9db6a4\"\u003e\u003ccode\u003e2f78539\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/psycopg/psycopg/issues/1299\"\u003e#1299\u003c/a\u003e from dvarrazzo/fix-camel-enum\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/37ef1dc4e6d19dc4af062d45a63243cb96a261c2\"\u003e\u003ccode\u003e37ef1dc\u003c/code\u003e\u003c/a\u003e test: skip test on crdb depending on precise regtype behaviour\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psycopg/psycopg/commit/7f2f1d159df881260e3086fd61ea71343ca98e58\"\u003e\u003ccode\u003e7f2f1d1\u003c/code\u003e\u003c/a\u003e fix: fix client-side representation of enums requiring quotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psycopg/psycopg/compare/3.3.3...3.3.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.58.0 to 2.64.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.64.0\u003c/h2\u003e\n\u003cp\u003eThe SDK now extracts all \u003ccode\u003egen_ai\u003c/code\u003e spans out of a transaction and sends them as v2 envelope items by default. This prevents \u003ccode\u003egen_ai\u003c/code\u003e spans from being dropped when the transaction payload exceeds size limits. Because they are no longer constrained by transaction size limits, AI message data is also no longer truncated. To keep the previous behavior, set \u003ccode\u003estream_gen_ai_spans=False\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSelf-hosted Sentry users should opt out with \u003ccode\u003estream_gen_ai_spans=False\u003c/code\u003e, since streamed \u003ccode\u003egen_ai\u003c/code\u003e spans may not be ingested by their Sentry instance.\u003c/p\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asyncpg) Use distinct span ops for cursor iteration and fetch to prevent N+1 false positives by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6609\"\u003e#6609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(aiohttp) Gate url.full, url.path, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6650\"\u003e#6650\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(asgi) Add url.path to ASGI request span attributes by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6652\"\u003e#6652\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(boto3) Gate url.full, url.query, url.fragment behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6674\"\u003e#6674\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(httpx) Gate url.full, url.query, and url.fragment behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6668\"\u003e#6668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(httpx2) Gate url.full, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6670\"\u003e#6670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph) Ignore \u003ccode\u003eGraphBubbleUp\u003c/code\u003e exceptions by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6608\"\u003e#6608\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Store span off-band, not in forwarded metadata by \u003ca href=\"https://github.com/jgreer013\"\u003e\u003ccode\u003e@​jgreer013\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6598\"\u003e#6598\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(mcp) Support MCP SDK v2 handler signature and removed request_ctx by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6583\"\u003e#6583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pydantic-ai) Stop truncating in the streaming trace lifecycle by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6659\"\u003e#6659\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pymongo) Add db.query.text to streamed query spans by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6637\"\u003e#6637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pyreqwest) Gate url.full, url.query, url.fragment on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6673\"\u003e#6673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(sanic) Gate url.full, url.path, and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6663\"\u003e#6663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(starlette) Stop duplicating \u003ccode\u003escope[\u0026quot;root_path\u0026quot;]\u003c/code\u003e in URLs by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6579\"\u003e#6579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(stdlib) Gate url.full and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6666\"\u003e#6666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tests) Fix flaky OTel propagator entry point test by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6655\"\u003e#6655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tornado) Gate url.full, url.path, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6664\"\u003e#6664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi) Gate url.full, url.path, and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6654\"\u003e#6654\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop unconditionally importing \u003ccode\u003econtextvars\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6625\"\u003e#6625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(.agents) Update project agent lockfiles by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6662\"\u003e#6662\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd light/dark logos by \u003ca href=\"https://github.com/hwhsu1231\"\u003e\u003ccode\u003e@​hwhsu1231\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6627\"\u003e#6627\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos by \u003ca href=\"https://github.com/juliosuas\"\u003e\u003ccode\u003e@​juliosuas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6602\"\u003e#6602\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(mcp) Pin mcp package to \u0026lt;2.0.0 while alphas are in flight by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6687\"\u003e#6687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (06/29) by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6682\"\u003e#6682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e opt out by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6658\"\u003e#6658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetuptools\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6618\"\u003e#6618\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003eexecuting\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6619\"\u003e#6619\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003easttokens\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6615\"\u003e#6615\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003eresponses\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6621\"\u003e#6621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-forked\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6611\"\u003e#6611\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003edocker\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6616\"\u003e#6616\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--skip-version-update\u003c/code\u003e option to \u003ccode\u003epopulate_tox.py\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6675\"\u003e#6675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003ehttpcore\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6622\"\u003e#6622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-timeout\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6613\"\u003e#6613\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-localserver\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6612\"\u003e#6612\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003ejsonschema\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6620\"\u003e#6620\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esocksio\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6617\"\u003e#6617\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/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.64.0\u003c/h2\u003e\n\u003cp\u003eThe SDK now extracts all \u003ccode\u003egen_ai\u003c/code\u003e spans out of a transaction and sends them as v2 envelope items by default. This prevents \u003ccode\u003egen_ai\u003c/code\u003e spans from being dropped when the transaction payload exceeds size limits. Because they are no longer constrained by transaction size limits, AI message data is also no longer truncated. To keep the previous behavior, set \u003ccode\u003estream_gen_ai_spans=False\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSelf-hosted Sentry users should opt out with \u003ccode\u003estream_gen_ai_spans=False\u003c/code\u003e, since streamed \u003ccode\u003egen_ai\u003c/code\u003e spans may not be ingested by their Sentry instance.\u003c/p\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asyncpg) Use distinct span ops for cursor iteration and fetch to prevent N+1 false positives by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6609\"\u003e#6609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(aiohttp) Gate url.full, url.path, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6650\"\u003e#6650\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(asgi) Add url.path to ASGI request span attributes by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6652\"\u003e#6652\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(boto3) Gate url.full, url.query, url.fragment behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6674\"\u003e#6674\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(httpx) Gate url.full, url.query, and url.fragment behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6668\"\u003e#6668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(httpx2) Gate url.full, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6670\"\u003e#6670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langgraph) Ignore \u003ccode\u003eGraphBubbleUp\u003c/code\u003e exceptions by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6608\"\u003e#6608\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(litellm) Store span off-band, not in forwarded metadata by \u003ca href=\"https://github.com/jgreer013\"\u003e\u003ccode\u003e@​jgreer013\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6598\"\u003e#6598\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(mcp) Support MCP SDK v2 handler signature and removed request_ctx by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6583\"\u003e#6583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pydantic-ai) Stop truncating in the streaming trace lifecycle by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6659\"\u003e#6659\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pymongo) Add db.query.text to streamed query spans by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6637\"\u003e#6637\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(pyreqwest) Gate url.full, url.query, url.fragment on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6673\"\u003e#6673\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(sanic) Gate url.full, url.path, and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6663\"\u003e#6663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(starlette) Stop duplicating \u003ccode\u003escope[\u0026quot;root_path\u0026quot;]\u003c/code\u003e in URLs by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6579\"\u003e#6579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(stdlib) Gate url.full and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6666\"\u003e#6666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tests) Fix flaky OTel propagator entry point test by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6655\"\u003e#6655\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(tornado) Gate url.full, url.path, url.query on send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6664\"\u003e#6664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi) Gate url.full, url.path, and http.query behind send_default_pii by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6654\"\u003e#6654\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop unconditionally importing \u003ccode\u003econtextvars\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6625\"\u003e#6625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(.agents) Update project agent lockfiles by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6662\"\u003e#6662\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd light/dark logos by \u003ca href=\"https://github.com/hwhsu1231\"\u003e\u003ccode\u003e@​hwhsu1231\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6627\"\u003e#6627\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix typos by \u003ca href=\"https://github.com/juliosuas\"\u003e\u003ccode\u003e@​juliosuas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6602\"\u003e#6602\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(mcp) Pin mcp package to \u0026lt;2.0.0 while alphas are in flight by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6687\"\u003e#6687\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (06/29) by \u003ca href=\"https://github.com/github-actions\"\u003e\u003ccode\u003e@​github-actions\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6682\"\u003e#6682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e opt out by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6658\"\u003e#6658\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003esetuptools\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6618\"\u003e#6618\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003eexecuting\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6619\"\u003e#6619\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003easttokens\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6615\"\u003e#6615\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003eresponses\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6621\"\u003e#6621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-forked\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6611\"\u003e#6611\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003edocker\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6616\"\u003e#6616\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--skip-version-update\u003c/code\u003e option to \u003ccode\u003epopulate_tox.py\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6675\"\u003e#6675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003ehttpcore\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6622\"\u003e#6622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-timeout\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6613\"\u003e#6613\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003epytest-localserver\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6612\"\u003e#6612\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003ejsonschema\u003c/code\u003e from \u003ccode\u003erequirements-testing.txt\u003c/code\u003e by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6620\"\u003e#6620\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/getsentry/sentry-python/commit/9cb0167cee81bb19686f36adb8e9888248f214af\"\u003e\u003ccode\u003e9cb0167\u003c/code\u003e\u003c/a\u003e Call out changed stream_gen_ai_spans default value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/bdbe208f41e8c2dd4615dc64dcd1485497d65d6d\"\u003e\u003ccode\u003ebdbe208\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/8966e45ade8bd3036027e7ad8aca2c3402d3e0fa\"\u003e\u003ccode\u003e8966e45\u003c/code\u003e\u003c/a\u003e release: 2.64.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/707464306ca78d4928e4668ba4d383948f7eb7fb\"\u003e\u003ccode\u003e7074643\u003c/code\u003e\u003c/a\u003e ci: 🤖 Update test matrix with new releases (06/29) (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6682\"\u003e#6682\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b0f319f4fb0a33d521a80e27304104b8a992c45e\"\u003e\u003ccode\u003eb0f319f\u003c/code\u003e\u003c/a\u003e (test): exclude django 6.1 alphas and betas from tox (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6690\"\u003e#6690\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/a661615a40fa26450e4b4f50cec760733cc858d8\"\u003e\u003ccode\u003ea661615\u003c/code\u003e\u003c/a\u003e (test): need to include the alpha tag for mcp package inclusion (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6688\"\u003e#6688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/9c836062fc6f7244aae5046ce66814f0469c9891\"\u003e\u003ccode\u003e9c83606\u003c/code\u003e\u003c/a\u003e ci(mcp): Pin mcp package to \u0026lt;2.0.0 while alphas are in flight (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6687\"\u003e#6687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/1dd161de3fef199b46342e8c0947a503316e5e99\"\u003e\u003ccode\u003e1dd161d\u003c/code\u003e\u003c/a\u003e feat: Set \u003ccode\u003esentry.trace_lifecycle\u003c/code\u003e attr in span streaming (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6684\"\u003e#6684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/5dabd02e83cfb8a4bb8160c766df70864407f569\"\u003e\u003ccode\u003e5dabd02\u003c/code\u003e\u003c/a\u003e fix(pydantic-ai): Stop truncating in the streaming trace lifecycle (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6659\"\u003e#6659\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7991f716a4bdef5c0b01ba5a3c6a3765640e312b\"\u003e\u003ccode\u003e7991f71\u003c/code\u003e\u003c/a\u003e ref: Make \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e opt out (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6658\"\u003e#6658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.58.0...2.64.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.3\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.3 — 2026-06-22\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the default \u003ccode\u003e...\u003c/code\u003e exclusion rule now also matches function bodies\nwhose closing return-type bracket is on its own line (for example, after a\nlong \u003ccode\u003e-\u0026gt; dict[ ... ]\u003c/code\u003e annotation that a formatter has split over multiple\nlines). Closes \u003ccode\u003eissue 2185\u003c/code\u003e\u003cem\u003e, thanks \u003ccode\u003eMengjia Shang \u0026lt;pull 2196_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: On 3.13t, we incorrectly issued \u003ccode\u003eCouldn't import C tracer\u003c/code\u003e errors.\nWe can't import the C tracer because in 7.14.2 we stopped shipping compiled\nwheels for 3.13t. Thanks, \u003ccode\u003eHugo van Kemenade \u0026lt;pull 2203_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2185: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2185\"\u003ecoveragepy/coveragepy#2185\u003c/a\u003e\n.. _pull 2196: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2196\"\u003ecoveragepy/coveragepy#2196\u003c/a\u003e\n.. _pull 2203: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2203\"\u003ecoveragepy/coveragepy#2203\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-14-2:\u003c/p\u003e\n\u003ch2\u003eVersion 7.14.2 — 2026-06-20\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: some messages were being written to stdout, making \u003ccode\u003ecoverage json -o -\u003c/code\u003e useless for capturing JSON output. Now messages are written to stderr,\nfixing \u003ccode\u003eissue 2197\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCoverageData\u003c/code\u003e kept one SQLite connection per thread that recorded\ncoverage, but never closed them when those threads terminated. On long runs\nwith many short-lived threads this leaked one file descriptor per dead\nthread, eventually failing with \u003ccode\u003eOSError: [Errno 24] Too many open files\u003c/code\u003e.\nConnections belonging to terminated threads are now closed and dropped.\nFixes \u003ccode\u003eissue 2192\u003c/code\u003e\u003cem\u003e.  Thanks, \u003ccode\u003eMatthew Lloyd \u0026lt;pull 2193_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: when using sys.monitoring, we were assuming we could use the\n\u003ccode\u003eCOVERAGE_ID\u003c/code\u003e tool id.  But other tools might also assume they could use\nthat id.  Pre-allocated ids don't really make sense, so now we search for a\nusable one instead. Fixes \u003ccode\u003eissue 2187\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFollowing \u003ccode\u003ethe advice of cibuildwheel \u0026lt;no-13t_\u0026gt;\u003c/code\u003e_, we no longer distribute\nwheels for Python 3.13 free-threaded.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2187: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2187\"\u003ecoveragepy/coveragepy#2187\u003c/a\u003e\n.. _issue 2192: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2192\"\u003ecoveragepy/coveragepy#2192\u003c/a\u003e\n.. _pull 2193: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2193\"\u003ecoveragepy/coveragepy#2193\u003c/a\u003e\n.. _issue 2197: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2197\"\u003ecoveragepy/coveragepy#2197\u003c/a\u003e\n.. _no-13t: \u003ca href=\"https://py-free-threading.github.io/ci/#building-free-threaded-wheels-with-cibuildwheel\"\u003ehttps://py-free-threading.github.io/ci/#building-free-threaded-wheels-with-cibuildwheel\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-14-1:\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/22f13eacc2258aee53198b6176db1ca89c32a12e\"\u003e\u003ccode\u003e22f13ea\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2ca4e5fe61a551fc55e48428c8140cb7d325566a\"\u003e\u003ccode\u003e2ca4e5f\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/01d714e5cb457177e999e78fde0c438283f7e4db\"\u003e\u003ccode\u003e01d714e\u003c/code\u003e\u003c/a\u003e docs: add changelog entry for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2203\"\u003e#2203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f36248d7ba313734d4fcf3d6eab713b5eba2c259\"\u003e\u003ccode\u003ef36248d\u003c/code\u003e\u003c/a\u003e fix: don't emit 'Couldn't import C tracer' warning for 3.13t (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2203\"\u003e#2203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/86d73d1c4c60bdb2ea03f982cd4e33c77879ba77\"\u003e\u003ccode\u003e86d73d1\u003c/code\u003e\u003c/a\u003e docs: thanks, Mengjia Shang\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3d4ae3cb7c77f7521d91200a1e5de13425bbdff4\"\u003e\u003ccode\u003e3d4ae3c\u003c/code\u003e\u003c/a\u003e docs: add the \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2196\"\u003e#2196\u003c/a\u003e pr link to CHANGES\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/f4b2b4d35e1b7cd8f33f1ee88d354b0debeeed08\"\u003e\u003ccode\u003ef4b2b4d\u003c/code\u003e\u003c/a\u003e fix: exclude \u003ccode\u003e...\u003c/code\u003e bodies after multi-line return-type annotations (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2185\"\u003e#2185\u003c/a\u003e) (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1980ed0730956f0cc179e8568e1c8ee848f2d42b\"\u003e\u003ccode\u003e1980ed0\u003c/code\u003e\u003c/a\u003e chore: bump sigstore/gh-action-sigstore-python (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2201\"\u003e#2201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/bca3217a1dadf35fa1d444722ec9f05dd5819089\"\u003e\u003ccode\u003ebca3217\u003c/code\u003e\u003c/a\u003e build: since we don't ship 3.13t, don't test it\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/77550d83b2f35818a1ca8931289b81d161222031\"\u003e\u003ccode\u003e77550d8\u003c/code\u003e\u003c/a\u003e docs: oops, mismatched pull requests\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.2 to 6.0.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.0.6\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003etask\u003c/code\u003e decorator typing for \u003ccode\u003etakes_context=True\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3406\"\u003etypeddjango/django-stubs#3406\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove database backend typing by \u003ca href=\"https://github.com/dekkers\"\u003e\u003ccode\u003e@​dekkers\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3190\"\u003etypeddjango/django-stubs#3190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix only pk validation for abstract models by \u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3430\"\u003etypeddjango/django-stubs#3430\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003evalidators\u003c/code\u003e consistent by \u003ca href=\"https://github.com/brianhelba\"\u003e\u003ccode\u003e@​brianhelba\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3433\"\u003etypeddjango/django-stubs#3433\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow aggregate filters to use expressions by \u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3434\"\u003etypeddjango/django-stubs#3434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypecheck save()/asave() update_fields against model fields by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3444\"\u003etypeddjango/django-stubs#3444\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/dekkers\"\u003e\u003ccode\u003e@​dekkers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3190\"\u003etypeddjango/django-stubs#3190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Lotram\"\u003e\u003ccode\u003e@​Lotram\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3430\"\u003etypeddjango/django-stubs#3430\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.5...6.0.6\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.5...6.0.6\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 6.0.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAccept datetime/timedelta on reverse ops of Combinable by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3361\"\u003etypeddjango/django-stubs#3361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency pyrefly to v0.64.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3377\"\u003etypeddjango/django-stubs#3377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type when \u003ccode\u003e.annotate()\u003c/code\u003e is called on a generic QuerySet by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3379\"\u003etypeddjango/django-stubs#3379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type checking of \u003ccode\u003e__in\u003c/code\u003e lookup by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3314\"\u003etypeddjango/django-stubs#3314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GenericPrefetch invariance with QuerySet by \u003ca href=\"https://github.com/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type in merge_annotations_from_custom_method by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3383\"\u003etypeddjango/django-stubs#3383\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mypy 2.1.0 support by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3384\"\u003etypeddjango/django-stubs#3384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003epyrefly\u003c/code\u003e to 1.0.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3386\"\u003etypeddjango/django-stubs#3386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003erelated_model\u003c/code\u003e type for mypy 2.1 by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3388\"\u003etypeddjango/django-stubs#3388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-enable \u003ccode\u003eempty-body\u003c/code\u003e error code for mypy and ty by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3390\"\u003etypeddjango/django-stubs#3390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003emark_safe\u003c/code\u003e to accept \u003ccode\u003eStrOrPromise\u003c/code\u003e by \u003ca href=\"https://github.com/Alexerson\"\u003e\u003ccode\u003e@​Alexerson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3392\"\u003etypeddjango/django-stubs#3392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable \u003ccode\u003eunused-ignore\u003c/code\u003e code in pyrefly by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3393\"\u003etypeddjango/django-stubs#3393\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix InlineModelAdmin parent-object method signatures by \u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAdminSite.register\u003c/code\u003e typing by \u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3387\"\u003etypeddjango/django-stubs#3387\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/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\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/typeddjango/django-stubs/commit/c1d968a356955f9598da6536115ccae4ed802b44\"\u003e\u003ccode\u003ec1d968a\u003c/code\u003e\u003c/a\u003e Version 6.0.6 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3445\"\u003e#3445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/c78e1060c24c6f36ec128e6264cab523b7954c52\"\u003e\u003ccode\u003ec78e106\u003c/code\u003e\u003c/a\u003e Typecheck save()/asave() update_fields against model fields (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3444\"\u003e#3444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/9110cd4800a3dbc12d753a669ae847d5bc83ef86\"\u003e\u003ccode\u003e9110cd4\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.62.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3442\"\u003e#3442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/2e6023a32ac6ee53b7f34274e839ca44f18a3f98\"\u003e\u003ccode\u003e2e6023a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3441\"\u003e#3441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/908841607ad48ca8bffb952c60344eb524a58441\"\u003e\u003ccode\u003e9088416\u003c/code\u003e\u003c/a\u003e Update dependency pytest to v9.1.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3440\"\u003e#3440\u003c/a\u003e)\u003c/li\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/Salomarax/SaaS-Python/pull/12","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Salomarax%2FSaaS-Python/issues/12","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12/packages"}},{"old_version":"3.16.9","new_version":"3.17.0","update_type":"minor","path":null,"pr_created_at":"2026-06-03T16:35:01.000Z","version_change":"3.16.9 → 3.17.0","issue":{"uuid":"4581790034","node_id":"PR_kwDOSOMpDM7iUWoe","number":93,"state":"closed","title":"chore(deps): bump the python group with 13 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-06-04T23:29:21.000Z","author_association":null,"state_reason":null,"created_at":"2026-06-03T16:35:01.000Z","updated_at":"2026-06-04T23:29:23.000Z","time_to_close":111260,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":13,"packages":[{"name":"certifi","old_version":"2026.4.22","new_version":"2026.5.20","repository_url":"https://github.com/certifi/python-certifi"},{"name":"channels","old_version":"4.2.2","new_version":"4.3.2","repository_url":"https://github.com/django/channels"},{"name":"channels-redis","old_version":"4.2.1","new_version":"4.3.0","repository_url":"https://github.com/django/channels_redis"},{"name":"django","old_version":"6.0.4","new_version":"6.0.6","repository_url":"https://github.com/django/django"},{"name":"django-allauth","old_version":"65.16.1","new_version":"65.18.0"},{"name":"hiredis","old_version":"3.3.1","new_version":"3.4.0","repository_url":"https://github.com/redis/hiredis-py"},{"name":"uvicorn","old_version":"0.46.0","new_version":"0.48.0"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.1","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.0.3","new_version":"6.0.5"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"mypy-boto3-s3","old_version":"1.43.5","new_version":"1.43.14","repository_url":"https://github.com/youtype/mypy_boto3_builder"},{"name":"ruff","old_version":"0.15.12","new_version":"0.15.15","repository_url":"https://github.com/astral-sh/ruff"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 13 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.5.20` |\n| [channels](https://github.com/django/channels) | `4.2.2` | `4.3.2` |\n| [channels-redis](https://github.com/django/channels_redis) | `4.2.1` | `4.3.0` |\n| [django](https://github.com/django/django) | `6.0.4` | `6.0.6` |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.16.1` | `65.18.0` |\n| [hiredis](https://github.com/redis/hiredis-py) | `3.3.1` | `3.4.0` |\n| [uvicorn[standard]](https://github.com/Kludex/uvicorn) | `0.46.0` | `0.48.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.1` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.3` | `6.0.5` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [mypy-boto3-s3](https://github.com/youtype/mypy_boto3_builder) | `1.43.5` | `1.43.14` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.12` | `0.15.15` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.2.0` |\n\nUpdates `certifi` from 2026.4.22 to 2026.5.20\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/d7ea151afc2ce6bef0555b9349902bd867e928dd\"\u003e\u003ccode\u003ed7ea151\u003c/code\u003e\u003c/a\u003e 2026.05.20 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/413\"\u003e#413\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.04.22...2026.05.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `channels` from 4.2.2 to 4.3.2\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/channels/blob/main/CHANGELOG.txt\"\u003echannels's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.3.2 (2025-11-20)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eConfirmed support for Django 6.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eConfirmed support for Python 3.14.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdded \u003ccode\u003etypes\u003c/code\u003e extra for \u003ccode\u003etypes-channels\u003c/code\u003e stubs. See installation docs.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.3.1 (2025-08-01)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed testing live server setup when test DB name was not set.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.3.0 (2025-07-28)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated asgiref dependency to v3.9+.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for EOL Python and Django versions. Python 3.9 is now the\nminimum supported version.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed compatibility of \u003ccode\u003eChannelsLiveServerTestCase\u003c/code\u003e with Django 5.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed DB setup for spawned testing subprocess, typically on Windows and macOS.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eSee the \u003ccode\u003eVersion 4.3.0 release notes \u0026lt;https://channels.readthedocs.io/en/latest/releases/4.3.0.html\u0026gt;\u003c/code\u003e_ for more\ndetails.\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/django/channels/commit/15333cd7a59ba4fcafbbcb3089e41e1353624b2f\"\u003e\u003ccode\u003e15333cd\u003c/code\u003e\u003c/a\u003e Version 4.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/10be531f8629637033378820aa0159865d44e314\"\u003e\u003ccode\u003e10be531\u003c/code\u003e\u003c/a\u003e Add explicit dj60 to test matrix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/f726845eb856e69a7e094df6bb9d0f14e7f003ca\"\u003e\u003ccode\u003ef726845\u003c/code\u003e\u003c/a\u003e Update .github/workflows/tests.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/0c1e533aae3ae7ad5c627f96f41216dec14fb01a\"\u003e\u003ccode\u003e0c1e533\u003c/code\u003e\u003c/a\u003e tox.ini: envlist py{310,311,312,313,314}-dj52\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/b2ad89f59f8213f464c116aafe78ee11ab70df76\"\u003e\u003ccode\u003eb2ad89f\u003c/code\u003e\u003c/a\u003e GitHub Actions: Test on Python 3.14 release candidate 2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/a1352286ab4aa54ba5de7acdfdce44dcc73fecf5\"\u003e\u003ccode\u003ea135228\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/django/channels/issues/2180\"\u003e#2180\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/7dfcc7b295569af491892b9feb2e9b85469824c3\"\u003e\u003ccode\u003e7dfcc7b\u003c/code\u003e\u003c/a\u003e Add types extra and installation docs for type checking support.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/95589a7dc70f4ff295757c8e68f55015a250cd63\"\u003e\u003ccode\u003e95589a7\u003c/code\u003e\u003c/a\u003e Version 4.3.1.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/5038d69e8d96b1b21d096c92c398ccbe30f122a5\"\u003e\u003ccode\u003e5038d69\u003c/code\u003e\u003c/a\u003e Fix live server setup when test DB name not set.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels/commit/f17a8fe021e45415f6eca9bc286649247bf45750\"\u003e\u003ccode\u003ef17a8fe\u003c/code\u003e\u003c/a\u003e Bump browser-actions/setup-chrome from 1 to 2 (\u003ca href=\"https://redirect.github.com/django/channels/issues/2175\"\u003e#2175\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/channels/compare/4.2.2...4.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `channels-redis` from 4.2.1 to 4.3.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django/channels_redis/blob/main/CHANGELOG.txt\"\u003echannels-redis's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.3.0 (2025-07-22)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded support for Python 3.13.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped support for EOL Python 3.8.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated Channels dependency to at least v4.2.2.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated asgiref dependency to at least v3.9.1.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed compatibility with latest versions of pytest-asyncio.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRenamed internal methods in core channel layer for compatibility with\nChannels v4.2.1+\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped testing against legacy Channels v3 branch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdated testing against latest redis-py versions.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/84986055bbaaafd46a826ab750b28e9773c6da4d\"\u003e\u003ccode\u003e8498605\u003c/code\u003e\u003c/a\u003e Updated version and changelog for v4.3.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/3e03c4566472358f60ca2bdd121651594ca844b7\"\u003e\u003ccode\u003e3e03c45\u003c/code\u003e\u003c/a\u003e Update Channels and asgiref dependencies to latest versions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/3f42840931527d921b39e258ac883fb9b6e353b1\"\u003e\u003ccode\u003e3f42840\u003c/code\u003e\u003c/a\u003e Update redis-py testing matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/4f35ef54cf2665c56c2e33cd233badf18a558f0a\"\u003e\u003ccode\u003e4f35ef5\u003c/code\u003e\u003c/a\u003e Adjust Channels testing matrix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/26f3f8f912454c6b3946dea4723c7ead9fae506a\"\u003e\u003ccode\u003e26f3f8f\u003c/code\u003e\u003c/a\u003e Renamed internal methods in core channel layer.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/b359bf7dd434bbb68d77d4de3e1e2454f751cb93\"\u003e\u003ccode\u003eb359bf7\u003c/code\u003e\u003c/a\u003e Stop using old event_loop fixture.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/f439527a1d5845fc0185b69410c839a6a20da7c5\"\u003e\u003ccode\u003ef439527\u003c/code\u003e\u003c/a\u003e Dropped Python 3.8 from test matrix.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/channels_redis/commit/662b90dce03e7592a03b86a8c7bd36f281d2c7a3\"\u003e\u003ccode\u003e662b90d\u003c/code\u003e\u003c/a\u003e Added support for Python 3.13 (\u003ca href=\"https://redirect.github.com/django/channels_redis/issues/404\"\u003e#404\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/django/channels_redis/compare/4.2.1...4.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django` from 6.0.4 to 6.0.6\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ee93f65169c280c9ab3d2ce103dd478c96d05065\"\u003e\u003ccode\u003eee93f65\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.6 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1721035a72624aad7b38dd19b14013efd94b24b8\"\u003e\u003ccode\u003e1721035\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-48587 -- Ignored whitespace padding when checking Vary...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/664652f1a2dd80d8a4cd491b4313cad915ae6669\"\u003e\u003ccode\u003e664652f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-35193 -- Varied on Authorization when caching non-publ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/b4330259ffbe1a031ed14daab1f35697460f10f2\"\u003e\u003ccode\u003eb433025\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-8404 -- Used Cache-Control directives case-insensitive...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/625a670c467aa3118c0f8ae1e0df14dbebb3bf68\"\u003e\u003ccode\u003e625a670\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-7666 -- Delayed setting SMTP connection until fully co...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c807d9c398022d23cb27518fa6ecaf343efb30cf\"\u003e\u003ccode\u003ec807d9c\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-6873 -- Prevented signed cookie salt namespace collisi...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/98a75e39cfc63fa72162027b5678943b78a4469b\"\u003e\u003ccode\u003e98a75e3\u003c/code\u003e\u003c/a\u003e [6.0.x] Included commit hash in checksum file when building artifacts for rel...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/dd895d6268f1dd544a565a321cb4527ca3ca1173\"\u003e\u003ccode\u003edd895d6\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated translations from Transifex.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/49ca2db7f4d4ca4a7735a40610d59c84a039eb32\"\u003e\u003ccode\u003e49ca2db\u003c/code\u003e\u003c/a\u003e [6.0.x] Updated links to severity levels in release notes.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9f32a2301a9aa897f967fd8077496455ebf5d77\"\u003e\u003ccode\u003ec9f32a2\u003c/code\u003e\u003c/a\u003e [6.0.x] Added stub release notes and release date for 6.0.6 and 5.2.15.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.4...6.0.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-allauth[mfa]` from 65.16.1 to 65.18.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hiredis` from 3.3.1 to 3.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/redis/hiredis-py/releases\"\u003ehiredis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.4.0\u003c/h2\u003e\n\u003ch1\u003eChanges\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse hiredis v1.4.0 with improved floating-point number parsing\u003c/li\u003e\n\u003cli\u003eDrop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eMaintainance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependencies and fix CI (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/233\"\u003e#233\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix benchmarking for hiredis-py (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/232\"\u003e#232\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRun integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump GitHub action versions (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/222\"\u003e#222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Python 3.15.0a7 to CI matrix (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/221\"\u003e#221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMNT: do not use deprecated load_module method (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/218\"\u003e#218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse Python 3.11 in FreeBSD CI run (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/219\"\u003e#219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump version to 3.4.0-dev (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cp\u003eWe'd like to thank all the contributors who worked on this release!\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/MugundanMCW\"\u003e\u003ccode\u003e@​MugundanMCW\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/tacaswell\"\u003e\u003ccode\u003e@​tacaswell\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/uglide\"\u003e\u003ccode\u003e@​uglide\u003c/code\u003e\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/redis/hiredis-py/commit/54c1938dfe83e0ea8cb619728b11985a6c07d07b\"\u003e\u003ccode\u003e54c1938\u003c/code\u003e\u003c/a\u003e Version 3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/d538033d7158a4b54c0c4a197871396ced996075\"\u003e\u003ccode\u003ed538033\u003c/code\u003e\u003c/a\u003e Beta-2 is not available yet, use beta-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/41cbe8da7341787d1a714036f9dc407dfeef0ea8\"\u003e\u003ccode\u003e41cbe8d\u003c/code\u003e\u003c/a\u003e Use 3.15.0-beta.2 in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/427a12180266d702fd34d4f6557ea658380f4d18\"\u003e\u003ccode\u003e427a121\u003c/code\u003e\u003c/a\u003e Add apt-get update to fix CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6982e3ea44d1093f211bc40c4e0181aa1978bc66\"\u003e\u003ccode\u003e6982e3e\u003c/code\u003e\u003c/a\u003e Bump hiredis to v1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/5eadef115e6ce89d3917231127865dda779e36b3\"\u003e\u003ccode\u003e5eadef1\u003c/code\u003e\u003c/a\u003e Update workflow versions to address Node v20 deprecation (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/228\"\u003e#228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/059ccbc3902f761c8f9f65c03e104c3441add4ec\"\u003e\u003ccode\u003e059ccbc\u003c/code\u003e\u003c/a\u003e Run integration tests on Windows ARM64 for Python 3.11 and 3.14 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/226\"\u003e#226\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/6f1147f4e5d69afed3866447d4defc178213a329\"\u003e\u003ccode\u003e6f1147f\u003c/code\u003e\u003c/a\u003e Add support for building and releasing hiredis-py on Windows ARM64 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/225\"\u003e#225\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/b49261b783092d3c32eac3a2980ba61f49da41e0\"\u003e\u003ccode\u003eb49261b\u003c/code\u003e\u003c/a\u003e Bump memray from 1.17.1 to 1.19.2 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/224\"\u003e#224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/redis/hiredis-py/commit/c30abed1481e06e3beeca3e39dfaec64d7d64523\"\u003e\u003ccode\u003ec30abed\u003c/code\u003e\u003c/a\u003e Drop python and pypy 3.8 support, test against pypy-3.11 (\u003ca href=\"https://redirect.github.com/redis/hiredis-py/issues/223\"\u003e#223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/redis/hiredis-py/compare/v3.3.1...v3.4.0\"\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.46.0 to 0.48.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.48.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2940\"\u003eKludex/uvicorn#2940\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2944\"\u003eKludex/uvicorn#2944\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.47.0...0.48.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.47.0...0.48.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.47.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2919\"\u003eKludex/uvicorn#2919\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2920\"\u003eKludex/uvicorn#2920\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers by \u003ca href=\"https://github.com/eltoder\"\u003e\u003ccode\u003e@​eltoder\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2927\"\u003eKludex/uvicorn#2927\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.46.0...0.47.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.46.0...0.47.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[standard]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.48.0 (May 24, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDefault \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.47.0 (May 14, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003essl_context_factory\u003c/code\u003e for custom \u003ccode\u003eSSLContext\u003c/code\u003e configuration (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2920\"\u003e#2920\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEagerly import the ASGI app in the parent process (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2919\"\u003e#2919\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTreat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\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/73e84e58d7f6b8b3dfd8a9e3e42d716862250f33\"\u003e\u003ccode\u003e73e84e5\u003c/code\u003e\u003c/a\u003e Version 0.48.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2951\"\u003e#2951\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/45ea11690b4a62fa6df339d2b6ee3b8545a418e0\"\u003e\u003ccode\u003e45ea116\u003c/code\u003e\u003c/a\u003e Ignore duplicate forwarding headers in \u003ccode\u003eProxyHeadersMiddleware\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2944\"\u003e#2944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/dd4394c3cbfd9f27a696a7b08047149690058158\"\u003e\u003ccode\u003edd4394c\u003c/code\u003e\u003c/a\u003e chore(deps): bump idna from 3.11 to 3.15 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2941\"\u003e#2941\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/abe07818a191cd036dc3824d802d052207e01c7e\"\u003e\u003ccode\u003eabe0781\u003c/code\u003e\u003c/a\u003e Default \u003ccode\u003essl_ciphers\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e and use OpenSSL defaults (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2940\"\u003e#2940\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/479a2c0c89186714f1aac52aecdebebf271395ac\"\u003e\u003ccode\u003e479a2c0\u003c/code\u003e\u003c/a\u003e Version 0.47.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2937\"\u003e#2937\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/89347fd166ebedf98fb3f806ce8ea44e93b1c2b5\"\u003e\u003ccode\u003e89347fd\u003c/code\u003e\u003c/a\u003e Add 7-day cooldown for dependency resolution via uv exclude-newer (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2936\"\u003e#2936\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/767315b38ae509cee9fe8ee9d09f6da920536096\"\u003e\u003ccode\u003e767315b\u003c/code\u003e\u003c/a\u003e Drop unused contents/actions permissions from zizmor workflow (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2935\"\u003e#2935\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/f25ee43e68a9678453cbca99ad96f1a447ff34af\"\u003e\u003ccode\u003ef25ee43\u003c/code\u003e\u003c/a\u003e chore(deps): bump urllib3 from 2.6.3 to 2.7.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2933\"\u003e#2933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8782666189a3d36c978de5698620db705659bf44\"\u003e\u003ccode\u003e8782666\u003c/code\u003e\u003c/a\u003e Fix typo in \u003ccode\u003edocs/deployment/index.md\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2932\"\u003e#2932\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/ad5ff87c869e8a34e9b04fcd5ca38d65c526893c\"\u003e\u003ccode\u003ead5ff87\u003c/code\u003e\u003c/a\u003e Treat \u003ccode\u003efd=0\u003c/code\u003e as a valid file descriptor with reload/workers (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2927\"\u003e#2927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.46.0...0.48.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.1 — 2026-05-26\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the HTML report used typographic niceties to make file paths more\nreadable by adding a small amount of space around slashes. Those spaces\ninterfered with searching the page for file paths of interest. Now the report\nuses CSS to accomplish the same visual tweak so that searches with slashes\nwork correctly. Closes \u003ccode\u003eissue 2170\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eAdd a 3.16 PyPI classifier \u0026lt;hugo-316_\u0026gt;\u003c/code\u003e_ since we test on the 3.16 main\nbranch.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2170: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2170\"\u003ecoveragepy/coveragepy#2170\u003c/a\u003e\n.. _hugo-316: \u003ca href=\"https://mastodon.social/@hugovk/116588523571204490\"\u003ehttps://mastodon.social/@​hugovk/116588523571204490\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-14-0:\u003c/p\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/64d9b66fd852c1920ffe6cb8b58d7e4fdae90226\"\u003e\u003ccode\u003e64d9b66\u003c/code\u003e\u003c/a\u003e docs: correct the date for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/6fa7dd44c25e1a660252faaf030dd8f2f1e20861\"\u003e\u003ccode\u003e6fa7dd4\u003c/code\u003e\u003c/a\u003e chore: bump actions/dependency-review-action (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2181\"\u003e#2181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/078afae263597b004eb9a85d880b6a65008e75ed\"\u003e\u003ccode\u003e078afae\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/cb4f028a36e008b664739d04f387b90ee5105044\"\u003e\u003ccode\u003ecb4f028\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ae2d09f562271c6169534e1c242d015dd0823dda\"\u003e\u003ccode\u003eae2d09f\u003c/code\u003e\u003c/a\u003e Merge branch 'nedbat/classifire-316-kits'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2c3568b2e041f2c0dbbc8eaa3919d46ee891b743\"\u003e\u003ccode\u003e2c3568b\u003c/code\u003e\u003c/a\u003e build: declare 3.16 compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/faa68f8601cf098701b68976dbb73b9fc23c9297\"\u003e\u003ccode\u003efaa68f8\u003c/code\u003e\u003c/a\u003e chore: bump github/codeql-action in the action-dependencies group (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2173\"\u003e#2173\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/eb55feedf54b363e3d0b678f20abf3bfd3551a88\"\u003e\u003ccode\u003eeb55fee\u003c/code\u003e\u003c/a\u003e test: we don't need PyPy \u0026lt; 7.3.22 anymore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ac168fe53c04cdb2ff5231c0c4e5045021ee339b\"\u003e\u003ccode\u003eac168fe\u003c/code\u003e\u003c/a\u003e test: the text summary should show missing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/fed4bd2db3c1cb2916a07791041da693fbf8e996\"\u003e\u003ccode\u003efed4bd2\u003c/code\u003e\u003c/a\u003e chore: upgrade virtualenv\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.3 to 6.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 6.0.5\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAccept datetime/timedelta on reverse ops of Combinable by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3361\"\u003etypeddjango/django-stubs#3361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate dependency pyrefly to v0.64.1 by \u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3377\"\u003etypeddjango/django-stubs#3377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type when \u003ccode\u003e.annotate()\u003c/code\u003e is called on a generic QuerySet by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3379\"\u003etypeddjango/django-stubs#3379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix type checking of \u003ccode\u003e__in\u003c/code\u003e lookup by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3314\"\u003etypeddjango/django-stubs#3314\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix GenericPrefetch invariance with QuerySet by \u003ca href=\"https://github.com/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve row type in merge_annotations_from_custom_method by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3383\"\u003etypeddjango/django-stubs#3383\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd mypy 2.1.0 support by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3384\"\u003etypeddjango/django-stubs#3384\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate \u003ccode\u003epyrefly\u003c/code\u003e to 1.0.0 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3386\"\u003etypeddjango/django-stubs#3386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003erelated_model\u003c/code\u003e type for mypy 2.1 by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3388\"\u003etypeddjango/django-stubs#3388\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRe-enable \u003ccode\u003eempty-body\u003c/code\u003e error code for mypy and ty by \u003ca href=\"https://github.com/ngnpope\"\u003e\u003ccode\u003e@​ngnpope\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3390\"\u003etypeddjango/django-stubs#3390\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003emark_safe\u003c/code\u003e to accept \u003ccode\u003eStrOrPromise\u003c/code\u003e by \u003ca href=\"https://github.com/Alexerson\"\u003e\u003ccode\u003e@​Alexerson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3392\"\u003etypeddjango/django-stubs#3392\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable \u003ccode\u003eunused-ignore\u003c/code\u003e code in pyrefly by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3393\"\u003etypeddjango/django-stubs#3393\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix InlineModelAdmin parent-object method signatures by \u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eAdminSite.register\u003c/code\u003e typing by \u003ca href=\"https://github.com/noamkush\"\u003e\u003ccode\u003e@​noamkush\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3387\"\u003etypeddjango/django-stubs#3387\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/pmdevita\"\u003e\u003ccode\u003e@​pmdevita\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3380\"\u003etypeddjango/django-stubs#3380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MyGodIsHe\"\u003e\u003ccode\u003e@​MyGodIsHe\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3308\"\u003etypeddjango/django-stubs#3308\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.4...6.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept single \u003ccode\u003estr/Combinable\u003c/code\u003e for \u003ccode\u003eAggregate.order_by\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3357\"\u003etypeddjango/django-stubs#3357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose Aggregate kwargs on subclass \u003ccode\u003e__init__\u003c/code\u003e stubs by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3359\"\u003etypeddjango/django-stubs#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e**flags\u003c/code\u003e with explicit kwargs on \u003ccode\u003eLibrary.filter\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3360\"\u003etypeddjango/django-stubs#3360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve \u003ccode\u003edefault_alias\u003c/code\u003e for positional Aggregate in \u003ccode\u003eannotate()\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3362\"\u003etypeddjango/django-stubs#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django to 6.0.5 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3369\"\u003etypeddjango/django-stubs#3369\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/bitmooze\"\u003e\u003ccode\u003e@​bitmooze\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3331\"\u003etypeddjango/django-stubs#3331\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/8f534d0a4d2884d2e0b45749714deae60aa92b2e\"\u003e\u003ccode\u003e8f534d0\u003c/code\u003e\u003c/a\u003e Version 6.0.5 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3402\"\u003e#3402\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/16679ef11d151dc6dafc15b4c83c0b85685888d7\"\u003e\u003ccode\u003e16679ef\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eAdminSite.register\u003c/code\u003e typing (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3387\"\u003e#3387\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/030484fb9682f1e8a0b70dcc2b6914f706a9c393\"\u003e\u003ccode\u003e030484f\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.38 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3400\"\u003e#3400\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/906abd50d6bff56e9cdda3ddbe42a4e42d926a41\"\u003e\u003ccode\u003e906abd5\u003c/code\u003e\u003c/a\u003e Fix InlineModelAdmin parent-object method signatures (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3308\"\u003e#3308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ad05f893e9825081a68fd50a3940e623f95ca6aa\"\u003e\u003ccode\u003ead05f89\u003c/code\u003e\u003c/a\u003e Update ty to v0.0.37 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3399\"\u003e#3399\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/c67f6b45b081b2f048129ac4a4ce68094e4d6035\"\u003e\u003ccode\u003ec67f6b4\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.59.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3397\"\u003e#3397\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5322457da83de3aca22bacd4052303fc950f4b39\"\u003e\u003ccode\u003e5322457\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3396\"\u003e#3396\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e097380fd28b7451a04bc477ee86835cdc28fbfd\"\u003e\u003ccode\u003ee097380\u003c/code\u003e\u003c/a\u003e Update dependency ty to v0.0.36 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3395\"\u003e#3395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/97b6e0ea13ad558b9a5f4c5b037bf86886600651\"\u003e\u003ccode\u003e97b6e0e\u003c/code\u003e\u003c/a\u003e Update dependency pytest-mypy-plugins to v4.0.3 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3394\"\u003e#3394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/5680543268bdb2294a1c61831d853e21540ffc51\"\u003e\u003ccode\u003e5680543\u003c/code\u003e\u003c/a\u003e Enable \u003ccode\u003eunused-ignore\u003c/code\u003e code in pyrefly (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3393\"\u003e#3393\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.16.9 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003ch2\u003eVersioning\u003c/h2\u003e\n\u003cp\u003eThis is the first version targeting \u003ccode\u003edjangorestframework\u003c/code\u003e v3.17 and \u003ccode\u003edjango-stubs\u003c/code\u003e v6.0. However, not all stubs have been updated yet for 3.17:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSee \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\u003c/a\u003e for remaining work\u003c/li\u003e\n\u003cli\u003ePlease open pull requests, but keep changes small.\u003c/li\u003e\n\u003cli\u003eFirst check that nobody is already working on that topic: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/pulls\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/pulls\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e \u003ccode\u003ecode\u003c/code\u003e support and fix defaults in validators by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/947\"\u003etypeddjango/djangorestframework-stubs#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorator stubs for DRF 3.17 by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/949\"\u003etypeddjango/djangorestframework-stubs#949\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eSerializer\u003c/code\u003e context type \u003ccode\u003edict\u003c/code\u003e -\u0026gt; \u003ccode\u003eMapping\u003c/code\u003e by \u003ca href=\"https://github.com/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.renderers\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/960\"\u003etypeddjango/djangorestframework-stubs#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/964\"\u003etypeddjango/djangorestframework-stubs#964\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency djangorestframework to v3.17.1 \u0026amp; add new allowlist by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/941\"\u003etypeddjango/djangorestframework-stubs#941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance - Django 5.2.13 \u0026amp; 6.0.4 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/962\"\u003etypeddjango/djangorestframework-stubs#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/984\"\u003etypeddjango/djangorestframework-stubs#984\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/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.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/typeddjango/djangorestframework-stubs/commit/dcaf5607a9c22db2e19274ff49bd149489603e53\"\u003e\u003ccode\u003edcaf560\u003c/code\u003e\u003c/a\u003e Version 3.17.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/9ac7355a57ab3ac7e7c00830bb0d8ad4df699e01\"\u003e\u003ccode\u003e9ac7355\u003c/code\u003e\u003c/a\u003e Clean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/4f367f1fcbeb0c5f041a88ea12988fe5a4872e49\"\u003e\u003ccode\u003e4f367f1\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/7923d06e186d363e88e3590fe88a98bdd924920a\"\u003e\u003ccode\u003e7923d06\u003c/code\u003e\u003c/a\u003e Unpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b2d9250b66d2aa7727793dd05e7cd37208ebcde6\"\u003e\u003ccode\u003eb2d9250\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/77b63b4ea29056d63b30b60b2d82e564f6194d6b\"\u003e\u003ccode\u003e77b63b4\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/96a5e21a45f39a3e65dbff74a4ce3482d0cdd9d1\"\u003e\u003ccode\u003e96a5e21\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b6c3e0298ff742dfb60ec2a87319028cd955686f\"\u003e\u003ccode\u003eb6c3e02\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260510 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/cc0af26d455fd5b3b735806409d17e6aef01a0b2\"\u003e\u003ccode\u003ecc0af26\u003c/code\u003e\u003c/a\u003e Update dependency types-requests to v2.33.0.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/978\"\u003e#978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/001b9c2865e9c0aae2b1cb181baa5f02be2b6be1\"\u003e\u003ccode\u003e001b9c2\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy-boto3-s3` from 1.43.5 to 1.43.14\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/releases\"\u003emypy-boto3-s3's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.8.0 - Python 3.8 runtime is back\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e \u003ccode\u003einstall_requires\u003c/code\u003e section is calculated based on dependencies in use, so \u003ccode\u003etyping-extensions\u003c/code\u003e version is set properly\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Replaced \u003ccode\u003etyping\u003c/code\u003e imports with \u003ccode\u003ecollections.abc\u003c/code\u003e with a fallback to \u003ccode\u003etyping\u003c/code\u003e for Python \u0026lt;3.9\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Added aliases for \u003ccode\u003ebuiltins.list\u003c/code\u003e, \u003ccode\u003ebuiltins.set\u003c/code\u003e, \u003ccode\u003ebuiltins.dict\u003c/code\u003e, and \u003ccode\u003ebuiltins.type\u003c/code\u003e, so Python 3.8 runtime should work as expected again (reported by \u003ca href=\"https://github.com/YHallouard\"\u003e\u003ccode\u003e@​YHallouard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/340\"\u003e#340\u003c/a\u003e and \u003ca href=\"https://github.com/Omri-Ben-Yair\"\u003e\u003ccode\u003e@​Omri-Ben-Yair\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/youtype/mypy_boto3_builder/issues/336\"\u003e#336\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[all]\u003c/code\u003e Unions use the same type annotations as the rest of the structures due to proper fallbacks\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Universal input/output shapes were not replaced properly in service subresources\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[docs]\u003c/code\u003e Simplified doc links rendering for services\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[services]\u003c/code\u003e Cleaned up unnecessary imports in \u003ccode\u003eclient.pyi\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[builder]\u003c/code\u003e Import records with fallback are always rendered\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/youtype/mypy_boto3_builder/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.12 to 0.15.15\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.15\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-28.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Markdown closing fence handling (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25310\"\u003e#25310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Report duplicate imports in \u003ccode\u003etyping.TYPE_CHECKING\u003c/code\u003e block (\u003ccode\u003eF811\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22560\"\u003e#22560\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Treat function-scope bare annotations as locals per PEP 526 (\u003ccode\u003eF821\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21540\"\u003e#21540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid redundant \u003ccode\u003eTokenValue\u003c/code\u003e drops in the lexer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25300\"\u003e#25300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage by dropping token-excess capacity and improve performance by approximating the initial tokens \u003ccode\u003eVec\u003c/code\u003e size (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25354\"\u003e#25354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eThinVec\u003c/code\u003e in AST to shrink \u003ccode\u003eStmt\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25361\"\u003e#25361\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eline-length\u003c/code\u003e example for \u003ccode\u003e--config\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25389\"\u003e#25389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Document \u003ccode\u003eRecursionError\u003c/code\u003e edge case in \u003ccode\u003e__len__\u003c/code\u003e (\u003ccode\u003eC416\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25286\"\u003e#25286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003emccabe\u003c/code\u003e] Improve example (\u003ccode\u003eC901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25287\"\u003e#25287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify fix safety docs (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25288\"\u003e#25288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Document \u003ccode\u003eFURB192\u003c/code\u003e exception change for empty sequences (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25317\"\u003e#25317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Document false negative for user-defined types (\u003ccode\u003eRUF013\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25289\"\u003e#25289\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix formatting of lambdas nested within f-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25398\"\u003e#25398\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReturn code action for \u003ccode\u003ecodeAction/resolve\u003c/code\u003e requests that contain no or no valid URL (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25365\"\u003e#25365\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExpand semantic syntax errors for invalid walruses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25415\"\u003e#25415\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/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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/adityasingh2400\"\u003e\u003ccode\u003e@​adityasingh2400\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fallintoplace\"\u003e\u003ccode\u003e@​fallintoplace\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/martin-schlossarek\"\u003e\u003ccode\u003e@​martin-schlossarek\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\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.15\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-28.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix Markdown closing fence handling (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25310\"\u003e#25310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Report duplicate imports in \u003ccode\u003etyping.TYPE_CHECKING\u003c/code\u003e block (\u003ccode\u003eF811\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/22560\"\u003e#22560\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Treat function-scope bare annotations as locals per PEP 526 (\u003ccode\u003eF821\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21540\"\u003e#21540\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid redundant \u003ccode\u003eTokenValue\u003c/code\u003e drops in the lexer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25300\"\u003e#25300\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce memory usage by dropping token-excess capacity and improve performance by approximating the initial tokens \u003ccode\u003eVec\u003c/code\u003e size (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25354\"\u003e#25354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003eThinVec\u003c/code\u003e in AST to shrink \u003ccode\u003eStmt\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25361\"\u003e#25361\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eline-length\u003c/code\u003e example for \u003ccode\u003e--config\u003c/code\u003e option (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25389\"\u003e#25389\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-comprehensions\u003c/code\u003e] Document \u003ccode\u003eRecursionError\u003c/code\u003e edge case in \u003ccode\u003e__len__\u003c/code\u003e (\u003ccode\u003eC416\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25286\"\u003e#25286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003emccabe\u003c/code\u003e] Improve example (\u003ccode\u003eC901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25287\"\u003e#25287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyupgrade\u003c/code\u003e] Clarify fix safety docs (\u003ccode\u003eUP007\u003c/code\u003e, \u003ccode\u003eUP045\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25288\"\u003e#25288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Document \u003ccode\u003eFURB192\u003c/code\u003e exception change for empty sequences (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25317\"\u003e#25317\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Document false negative for user-defined types (\u003ccode\u003eRUF013\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25289\"\u003e#25289\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFormatter\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix formatting of lambdas nested within f-strings (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25398\"\u003e#25398\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eReturn code action for \u003ccode\u003ecodeAction/resolve\u003c/code\u003e requests that contain no or no valid URL (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25365\"\u003e#25365\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExpand semantic syntax errors for invalid walruses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25415\"\u003e#25415\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/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\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/adityasingh2400\"\u003e\u003ccode\u003e@​adityasingh2400\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charliermarsh\"\u003e\u003ccode\u003e@​charliermarsh\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fallintoplace\"\u003e\u003ccode\u003e@​fallintoplace\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/martin-schlossarek\"\u003e\u003ccode\u003e@​martin-schlossarek\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/Ruchir28\"\u003e\u003ccode\u003e@​Ruchir28\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/db5aa0a5f1b92cb91d910bf0866a967554dd94f5\"\u003e\u003ccode\u003edb5aa0a\u003c/code\u003e\u003c/a\u003e Bump 0.15.15 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25431\"\u003e#25431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/366fe21ba369ccdd01eb99c1043c9a969c99230b\"\u003e\u003ccode\u003e366fe21\u003c/code\u003e\u003c/a\u003e [ty] Improve diagnostics for syntax errors in forward annotations (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25158\"\u003e#25158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/e2e1e647d182b8567845039c9a65fb0608a4dcfc\"\u003e\u003ccode\u003ee2e1e64\u003c/code\u003e\u003c/a\u003e [ty] Remove excess capacity from more Salsa cached collections (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25411\"\u003e#25411\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1bd77e1646f2213d86b8da215f08279187867d72\"\u003e\u003ccode\u003e1bd77e1\u003c/code\u003e\u003c/a\u003e [ty] Use diagnostic message as tie breaker when sorting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25424\"\u003e#25424\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7e1bc1e75f15795f12c846294b13df4535f2abbf\"\u003e\u003ccode\u003e7e1bc1e\u003c/code\u003e\u003c/a\u003e Add agent skills for working on ty (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25422\"\u003e#25422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/574e10752f8cfa9e0cdbe3b01e96c4380950469b\"\u003e\u003ccode\u003e574e107\u003c/code\u003e\u003c/a\u003e Expand semantic syntax errors for invalid walruses (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25415\"\u003e#25415\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4a7ca062fccd80443a43aa61e5dc7e5858e88dc1\"\u003e\u003ccode\u003e4a7ca06\u003c/code\u003e\u003c/a\u003e [ty] Display docs for matching parameter when hovering over the name of an ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/54327092dbfe455040690d63bb1e5e4b5f551239\"\u003e\u003ccode\u003e5432709\u003c/code\u003e\u003c/a\u003e Refine a few agents instructions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25423\"\u003e#25423\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/3cb09eba689ebb49e799131092121928cc789c18\"\u003e\u003ccode\u003e3cb09eb\u003c/code\u003e\u003c/a\u003e [ty] Support \u003ccode\u003etyping.TypeForm\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25334\"\u003e#25334\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/c8cd59f189f2b6f55d542b29bddb953622add6fc\"\u003e\u003ccode\u003ec8cd59f\u003c/code\u003e\u003c/a\u003e [ty] Infer class attributes assigned by metaclass initialization (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25342\"\u003e#25342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.12...0.15.15\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `watchfiles` from 1.1.1 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/samuelcolvin/watchfiles/releases\"\u003ewatchfiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 2026-05-17\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: add riscv64 manylinux wheels by \u003ca href=\"https://github.com/justeph\"\u003e\u003ccode\u003e@​justeph\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/359\"\u003esamuelcolvin/watchfiles#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix linting by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/370\"\u003esamuelcolvin/watchfiles#370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.15-dev build, drop 3.9, increase MVRV to 1.83 by \u003ca href=\"https://github.com/simonw\"\u003e\u003ccode\u003e@​simonw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/369\"\u003esamuelcolvin/watchfiles#369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: improve type safety and error handling by \u003ca href=\"https://github.com/N3XT3R1337\"\u003e\u003ccode\u003e@​N3XT3R1337\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/365\"\u003esamuelcolvin/watchfiles#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRuff target version to 3.10 by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/379\"\u003esamuelcolvin/watchfiles#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupgrade uv lock by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/378\"\u003esamuelcolvin/watchfiles#378\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprep v1.2.0 release by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/371\"\u003esamuelcolvin/watchfiles#371\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/justeph\"\u003e\u003ccode\u003e@​justeph\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/359\"\u003esamuelcolvin/watchfiles#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simonw\"\u003e\u003ccode\u003e@​simonw\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/369\"\u003esamuelcolvin/watchfiles#369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/N3XT3R1337\"\u003e\u003ccode\u003e@​N3XT3R1337\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/365\"\u003esamuelcolvin/watchfiles#365\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.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/samuelcolvin/watchfiles/commit/b6eb04ffaa99c3e656e448c75d137013ffa2ece3\"\u003e\u003ccode\u003eb6eb04f\u003c/code\u003e\u003c/a\u003e prep v1.2.0 release (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/517ffb2ad432d126326fa710af2040a8343588f2\"\u003e\u003ccode\u003e517ffb2\u003c/code\u003e\u003c/a\u003e upgrade uv lock (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/e156213f44bec3fcd3f970b0f6a1419494e21c1f\"\u003e\u003ccode\u003ee156213\u003c/code\u003e\u003c/a\u003e Ruff target version to 3.10 (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/379\"\u003e#379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/f4f63ebcb4ef7602038d8cb90fdc03ac4514f380\"\u003e\u003ccode\u003ef4f63eb\u003c/code\u003e\u003c/a\u003e fix: improve type safety and error handling (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/a928957581ec6f73fbd560efacd519f1dc9ab2de\"\u003e\u003ccode\u003ea928957\u003c/code\u003e\u003c/a\u003e Add Python 3.15-dev build, drop 3.9, increase MVRV to 1.83 (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/f8b91fcabd929b655a9ed440115ea5a1997de736\"\u003e\u003ccode\u003ef8b91fc\u003c/code\u003e\u003c/a\u003e fix linting (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/ac594d105be711b98d1835fe5a26f65917b5d784\"\u003e\u003ccode\u003eac594d1\u003c/code\u003e\u003c/a\u003e ci: add riscv64 manylinux wheels (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \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/Kelem-co/backend/pull/93","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kelem-co%2Fbackend/issues/93","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/93/packages"}},{"old_version":"3.16.9","new_version":"3.17.0","update_type":"minor","path":null,"pr_created_at":"2026-05-21T07:01:45.000Z","version_change":"3.16.9 → 3.17.0","issue":{"uuid":"4492465114","node_id":"PR_kwDOSIL2sc7d07lN","number":53,"state":"closed","title":"Bump the python 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":"2026-06-03T22:56:42.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-21T07:01:45.000Z","updated_at":"2026-06-03T22:56:44.000Z","time_to_close":1180497,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python","update_count":7,"packages":[{"name":"django-allauth","old_version":"65.16.1","new_version":"65.17.0"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.0.3","new_version":"6.0.4"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"ruff","old_version":"0.15.11","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"},{"name":"watchfiles","old_version":"1.1.1","new_version":"1.2.0","repository_url":"https://github.com/samuelcolvin/watchfiles"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 7 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django-allauth[mfa]](https://github.com/sponsors/pennersr) | `65.16.1` | `65.17.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.3` | `6.0.4` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.11` | `0.15.13` |\n| [watchfiles](https://github.com/samuelcolvin/watchfiles) | `1.1.1` | `1.2.0` |\n\n\nUpdates `django-allauth[mfa]` from 65.16.1 to 65.17.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/pennersr/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.3 to 6.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept single \u003ccode\u003estr/Combinable\u003c/code\u003e for \u003ccode\u003eAggregate.order_by\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3357\"\u003etypeddjango/django-stubs#3357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose Aggregate kwargs on subclass \u003ccode\u003e__init__\u003c/code\u003e stubs by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3359\"\u003etypeddjango/django-stubs#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e**flags\u003c/code\u003e with explicit kwargs on \u003ccode\u003eLibrary.filter\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3360\"\u003etypeddjango/django-stubs#3360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve \u003ccode\u003edefault_alias\u003c/code\u003e for positional Aggregate in \u003ccode\u003eannotate()\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3362\"\u003etypeddjango/django-stubs#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django to 6.0.5 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3369\"\u003etypeddjango/django-stubs#3369\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/bitmooze\"\u003e\u003ccode\u003e@​bitmooze\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3331\"\u003etypeddjango/django-stubs#3331\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/928eec423b8454590a46e50653698d85954f04de\"\u003e\u003ccode\u003e928eec4\u003c/code\u003e\u003c/a\u003e Version 6.0.4 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3375\"\u003e#3375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a9942040a2ed28b8e1ae129578c1f5a4f2b449b8\"\u003e\u003ccode\u003ea994204\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3374\"\u003e#3374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ec8107b44d798a16b42ff049fe3904c9a4b5df08\"\u003e\u003ccode\u003eec8107b\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.64.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/28d997bc1e6559579ce3f4663178a8294e402897\"\u003e\u003ccode\u003e28d997b\u003c/code\u003e\u003c/a\u003e Remove unused get_field_lookup_exact_type from helpers (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3372\"\u003e#3372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/d312d60b1d7e852f73babe2a76be1d2961b94393\"\u003e\u003ccode\u003ed312d60\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.14 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3371\"\u003e#3371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f20e49018f19e84a839ab5d11ac47654e671728a\"\u003e\u003ccode\u003ef20e490\u003c/code\u003e\u003c/a\u003e Update Django to 6.0.5 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3369\"\u003e#3369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6d9d0e26fff5462782bfeede76ffd8b2cc36712d\"\u003e\u003ccode\u003e6d9d0e2\u003c/code\u003e\u003c/a\u003e Resolve default_alias for positional Aggregate in annotate() (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3362\"\u003e#3362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6dd9231e36393d5ddaecb5d0ffca2a6b824bf0cc\"\u003e\u003ccode\u003e6dd9231\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.58.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3368\"\u003e#3368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e270482574c273798d875f2191945f64dbb0c00a\"\u003e\u003ccode\u003ee270482\u003c/code\u003e\u003c/a\u003e Update dependency psycopg to v3.3.4 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3365\"\u003e#3365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/cfb0f9a098e24d47f1c3cc5c5de971b599c6e907\"\u003e\u003ccode\u003ecfb0f9a\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.63.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3367\"\u003e#3367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.16.9 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003ch2\u003eVersioning\u003c/h2\u003e\n\u003cp\u003eThis is the first version targeting \u003ccode\u003edjangorestframework\u003c/code\u003e v3.17 and \u003ccode\u003edjango-stubs\u003c/code\u003e v6.0. However, not all stubs have been updated yet for 3.17:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSee \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\u003c/a\u003e for remaining work\u003c/li\u003e\n\u003cli\u003ePlease open pull requests, but keep changes small.\u003c/li\u003e\n\u003cli\u003eFirst check that nobody is already working on that topic: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/pulls\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/pulls\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e \u003ccode\u003ecode\u003c/code\u003e support and fix defaults in validators by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/947\"\u003etypeddjango/djangorestframework-stubs#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorator stubs for DRF 3.17 by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/949\"\u003etypeddjango/djangorestframework-stubs#949\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eSerializer\u003c/code\u003e context type \u003ccode\u003edict\u003c/code\u003e -\u0026gt; \u003ccode\u003eMapping\u003c/code\u003e by \u003ca href=\"https://github.com/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.renderers\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/960\"\u003etypeddjango/djangorestframework-stubs#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/964\"\u003etypeddjango/djangorestframework-stubs#964\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency djangorestframework to v3.17.1 \u0026amp; add new allowlist by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/941\"\u003etypeddjango/djangorestframework-stubs#941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance - Django 5.2.13 \u0026amp; 6.0.4 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/962\"\u003etypeddjango/djangorestframework-stubs#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/984\"\u003etypeddjango/djangorestframework-stubs#984\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/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.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/typeddjango/djangorestframework-stubs/commit/dcaf5607a9c22db2e19274ff49bd149489603e53\"\u003e\u003ccode\u003edcaf560\u003c/code\u003e\u003c/a\u003e Version 3.17.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/9ac7355a57ab3ac7e7c00830bb0d8ad4df699e01\"\u003e\u003ccode\u003e9ac7355\u003c/code\u003e\u003c/a\u003e Clean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/4f367f1fcbeb0c5f041a88ea12988fe5a4872e49\"\u003e\u003ccode\u003e4f367f1\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/7923d06e186d363e88e3590fe88a98bdd924920a\"\u003e\u003ccode\u003e7923d06\u003c/code\u003e\u003c/a\u003e Unpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b2d9250b66d2aa7727793dd05e7cd37208ebcde6\"\u003e\u003ccode\u003eb2d9250\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/77b63b4ea29056d63b30b60b2d82e564f6194d6b\"\u003e\u003ccode\u003e77b63b4\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/96a5e21a45f39a3e65dbff74a4ce3482d0cdd9d1\"\u003e\u003ccode\u003e96a5e21\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b6c3e0298ff742dfb60ec2a87319028cd955686f\"\u003e\u003ccode\u003eb6c3e02\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260510 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/cc0af26d455fd5b3b735806409d17e6aef01a0b2\"\u003e\u003ccode\u003ecc0af26\u003c/code\u003e\u003c/a\u003e Update dependency types-requests to v2.33.0.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/978\"\u003e#978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/001b9c2865e9c0aae2b1cb181baa5f02be2b6be1\"\u003e\u003ccode\u003e001b9c2\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pre-commit` from 4.5.1 to 4.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/releases\"\u003epre-commit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epre-commit v4.6.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier usage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md\"\u003epre-commit's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e4.6.0 - 2026-04-21\u003c/h1\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: allow \u003ccode\u003e--hook-dir\u003c/code\u003e to be missing to enable easier\nusage with \u003ccode\u003egit\u003c/code\u003e 2.54+ git hooks.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epre-commit hook-impl\u003c/code\u003e: \u003ccode\u003e--hook-type\u003c/code\u003e is required.\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e PR by \u003ca href=\"https://github.com/asottile\"\u003e\u003ccode\u003e@​asottile\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f35134b05028ec938ac605ae500fdf95462655d3\"\u003e\u003ccode\u003ef35134b\u003c/code\u003e\u003c/a\u003e v4.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2a51ffcb81f6c8ed2e6467913c3343a8800f3ab9\"\u003e\u003ccode\u003e2a51ffc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3662\"\u003e#3662\u003c/a\u003e from pre-commit/hook-impl-optional-hook-dir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/d7dee322abfc765b042f2e3b872aab3c3a867610\"\u003e\u003ccode\u003ed7dee32\u003c/code\u003e\u003c/a\u003e make --hook-dir optional for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/965aeb1c680e8b526342153547f0ec014484c63d\"\u003e\u003ccode\u003e965aeb1\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3661\"\u003e#3661\u003c/a\u003e from pre-commit/hook-impl-required\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/2eacc064aa9b5bb33d3a0d84a234b475e34f3096\"\u003e\u003ccode\u003e2eacc06\u003c/code\u003e\u003c/a\u003e --hook-type is required for hook-impl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/f5678bf4ac35cffc0ff7174ad85f7fdc2a5c977e\"\u003e\u003ccode\u003ef5678bf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3657\"\u003e#3657\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/054cc5bd6bb1b20faa1eefe09f0de3b68fceee94\"\u003e\u003ccode\u003e054cc5b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/5c0f3024d2524f6e029a4c333392fd9be9fb27f6\"\u003e\u003ccode\u003e5c0f302\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3652\"\u003e#3652\u003c/a\u003e from pre-commit/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/a5d91142676630f8130020b35e166e0c0e92b8f4\"\u003e\u003ccode\u003ea5d9114\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pre-commit/pre-commit/commit/129a1f5ca1eaee0c952a5e7a07faae305c5e15bc\"\u003e\u003ccode\u003e129a1f5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pre-commit/pre-commit/issues/3641\"\u003e#3641\u003c/a\u003e from pre-commit/mxr-patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pre-commit/pre-commit/compare/v4.5.1...v4.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.11 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.11...0.15.13\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `watchfiles` from 1.1.1 to 1.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/samuelcolvin/watchfiles/releases\"\u003ewatchfiles's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.0 2026-05-17\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: add riscv64 manylinux wheels by \u003ca href=\"https://github.com/justeph\"\u003e\u003ccode\u003e@​justeph\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/359\"\u003esamuelcolvin/watchfiles#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix linting by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/370\"\u003esamuelcolvin/watchfiles#370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.15-dev build, drop 3.9, increase MVRV to 1.83 by \u003ca href=\"https://github.com/simonw\"\u003e\u003ccode\u003e@​simonw\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/369\"\u003esamuelcolvin/watchfiles#369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: improve type safety and error handling by \u003ca href=\"https://github.com/N3XT3R1337\"\u003e\u003ccode\u003e@​N3XT3R1337\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/365\"\u003esamuelcolvin/watchfiles#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRuff target version to 3.10 by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/379\"\u003esamuelcolvin/watchfiles#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eupgrade uv lock by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/378\"\u003esamuelcolvin/watchfiles#378\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eprep v1.2.0 release by \u003ca href=\"https://github.com/samuelcolvin\"\u003e\u003ccode\u003e@​samuelcolvin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/371\"\u003esamuelcolvin/watchfiles#371\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/justeph\"\u003e\u003ccode\u003e@​justeph\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/359\"\u003esamuelcolvin/watchfiles#359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simonw\"\u003e\u003ccode\u003e@​simonw\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/369\"\u003esamuelcolvin/watchfiles#369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/N3XT3R1337\"\u003e\u003ccode\u003e@​N3XT3R1337\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/pull/365\"\u003esamuelcolvin/watchfiles#365\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.0\"\u003ehttps://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.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/samuelcolvin/watchfiles/commit/b6eb04ffaa99c3e656e448c75d137013ffa2ece3\"\u003e\u003ccode\u003eb6eb04f\u003c/code\u003e\u003c/a\u003e prep v1.2.0 release (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/517ffb2ad432d126326fa710af2040a8343588f2\"\u003e\u003ccode\u003e517ffb2\u003c/code\u003e\u003c/a\u003e upgrade uv lock (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/e156213f44bec3fcd3f970b0f6a1419494e21c1f\"\u003e\u003ccode\u003ee156213\u003c/code\u003e\u003c/a\u003e Ruff target version to 3.10 (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/379\"\u003e#379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/f4f63ebcb4ef7602038d8cb90fdc03ac4514f380\"\u003e\u003ccode\u003ef4f63eb\u003c/code\u003e\u003c/a\u003e fix: improve type safety and error handling (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/a928957581ec6f73fbd560efacd519f1dc9ab2de\"\u003e\u003ccode\u003ea928957\u003c/code\u003e\u003c/a\u003e Add Python 3.15-dev build, drop 3.9, increase MVRV to 1.83 (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/f8b91fcabd929b655a9ed440115ea5a1997de736\"\u003e\u003ccode\u003ef8b91fc\u003c/code\u003e\u003c/a\u003e fix linting (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/samuelcolvin/watchfiles/commit/ac594d105be711b98d1835fe5a26f65917b5d784\"\u003e\u003ccode\u003eac594d1\u003c/code\u003e\u003c/a\u003e ci: add riscv64 manylinux wheels (\u003ca href=\"https://redirect.github.com/samuelcolvin/watchfiles/issues/359\"\u003e#359\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/samuelcolvin/watchfiles/compare/v1.1.1...v1.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \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/sadanun/NewHire/pull/53","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/sadanun%2FNewHire/issues/53","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/53/packages"}},{"old_version":"3.16.9","new_version":"3.17.0","update_type":"minor","path":null,"pr_created_at":"2026-05-16T07:29:39.000Z","version_change":"3.16.9 → 3.17.0","issue":{"uuid":"4459115687","node_id":"PR_kwDOB1SzD87cLIYU","number":388,"state":"closed","title":"Bump the pip-all group across 1 directory with 9 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-05-18T02:56:18.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-16T07:29:39.000Z","updated_at":"2026-05-18T02:56:19.000Z","time_to_close":156399,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-all","update_count":9,"packages":[{"name":"gunicorn","old_version":"25.3.0","new_version":"26.0.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"requests","old_version":"2.33.1","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"sentry-sdk","old_version":"2.59.0","new_version":"2.60.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.0.3","new_version":"6.0.4","repository_url":"https://github.com/typeddjango/django-stubs"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"mypy","old_version":"1.20.2","new_version":"2.1.0","repository_url":"https://github.com/python/mypy"},{"name":"selenium","old_version":"4.43.0","new_version":"4.44.0","repository_url":"https://github.com/SeleniumHQ/Selenium"},{"name":"types-requests","old_version":"2.33.0.20260503","new_version":"2.33.0.20260513","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-all group with 9 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.3.0` | `26.0.0` |\n| [requests](https://github.com/psf/requests) | `2.33.1` | `2.34.2` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.59.0` | `2.60.0` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [django-stubs](https://github.com/typeddjango/django-stubs) | `6.0.3` | `6.0.4` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [mypy](https://github.com/python/mypy) | `1.20.2` | `2.1.0` |\n| [selenium](https://github.com/SeleniumHQ/Selenium) | `4.43.0` | `4.44.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.33.0.20260503` | `2.33.0.20260513` |\n\n\nUpdates `gunicorn` from 25.3.0 to 26.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benoitc/gunicorn/releases\"\u003egunicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.0.0\u003c/h2\u003e\n\u003ch2\u003eBreaking Changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eEventlet worker removed\u003c/strong\u003e: The \u003ccode\u003eeventlet\u003c/code\u003e worker class has been dropped. Migrate to \u003ccode\u003egevent\u003c/code\u003e, \u003ccode\u003egthread\u003c/code\u003e, or \u003ccode\u003etornado\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Features\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Framework Compatibility Suite\u003c/strong\u003e: New end-to-end compatibility test harness covering Starlette, FastAPI, Litestar, Quart, Sanic, and BlackSheep. Current grid passes 438/444 tests (98%).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Test Suite Expansion\u003c/strong\u003e: 134 additional ASGI unit tests covering protocol semantics, lifespan, websockets, and chunked framing.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/1.1 Request-Target Validation\u003c/strong\u003e (RFC 9112 sections 3.2.3, 3.2.4):\n\u003cul\u003e\n\u003cli\u003eReject \u003ccode\u003eauthority-form\u003c/code\u003e request-target outside \u003ccode\u003eCONNECT\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003easterisk-form\u003c/code\u003e request-target outside \u003ccode\u003eOPTIONS\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003erelative-reference\u003c/code\u003e request-targets\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHeader Field Hardening\u003c/strong\u003e (RFC 9110):\n\u003cul\u003e\n\u003cli\u003eReject control characters in header field-value (section 5.5)\u003c/li\u003e\n\u003cli\u003eReject forbidden trailer field-names (section 6.5.1)\u003c/li\u003e\n\u003cli\u003eReject \u003ccode\u003eContent-Length\u003c/code\u003e list form (RFC 9112 section 6.3)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eRequest Smuggling Hardening\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eTighten keepalive gate and scope \u003ccode\u003efinish_body\u003c/code\u003e byte cap\u003c/li\u003e\n\u003cli\u003eKeep \u003ccode\u003e_body_receiver\u003c/code\u003e alive across the keepalive smuggling gate so pipelined requests cannot re-enter a closed body\u003c/li\u003e\n\u003cli\u003eAddress parser/protocol findings from a six-point WSGI/ASGI audit\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePROXY Protocol (ASGI)\u003c/strong\u003e: Enforce \u003ccode\u003eproxy_allow_ips\u003c/code\u003e and tighten v1/v2 parsing in the ASGI callback parser.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eConnection Draining\u003c/strong\u003e: Drain the connection on close per RFC 9112 section 9.6 to prevent reset-on-close truncation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eBody Framing on HEAD/204/304\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eKeep \u003ccode\u003eContent-Length\u003c/code\u003e on HEAD and 304 responses (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3621\"\u003e#3621\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop body framing on HEAD/204/304 even when the framework set it\u003c/li\u003e\n\u003cli\u003eWarn once when an ASGI app emits a body for a no-body response\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/2 ASGI\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e_handle_stream_ended\u003c/code\u003e to set \u003ccode\u003e_body_complete\u003c/code\u003e in the async HTTP/2 handler so request bodies finalize correctly on stream end\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eInvalidChunkExtension\u003c/code\u003e mapping and fast-parser support in ASGI tests (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3565\"\u003e#3565\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eHTTP/1.1 100-Continue\u003c/strong\u003e: Stop adding \u003ccode\u003eTransfer-Encoding: chunked\u003c/code\u003e to 100-Continue interim responses.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eWebSocket Close Handshake\u003c/strong\u003e (RFC 6455):\n\u003cul\u003e\n\u003cli\u003eComply with the close handshake state machine\u003c/li\u003e\n\u003cli\u003eClose the transport after the close handshake completes\u003c/li\u003e\n\u003cli\u003eFix binary send when the \u003ccode\u003etext\u003c/code\u003e key is \u003ccode\u003eNone\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eEarly Hints\u003c/strong\u003e: Validate headers in the \u003ccode\u003eearly_hints\u003c/code\u003e callback to match \u003ccode\u003eprocess_headers\u003c/code\u003e; pass only the header name to \u003ccode\u003eInvalidHeader\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3588\"\u003e#3588\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Framework Fixes\u003c/strong\u003e:\n\u003cul\u003e\n\u003cli\u003eFix ASGI disconnect handling for Django-style apps\u003c/li\u003e\n\u003cli\u003eFix Litestar request handling (use raw ASGI receive for body/headers)\u003c/li\u003e\n\u003cli\u003eFix Litestar HTTP endpoints for compatibility tests\u003c/li\u003e\n\u003cli\u003eFix Quart headers endpoint to normalize keys to lowercase\u003c/li\u003e\n\u003cli\u003eFix Quart WebSocket close test app (missing \u003ccode\u003eaccept()\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eFix duplicate \u003ccode\u003eTransfer-Encoding\u003c/code\u003e header for BlackSheep streaming\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/benoitc/gunicorn/commit/5d819cf36040f6cc6175fcc804d703fb899509dd\"\u003e\u003ccode\u003e5d819cf\u003c/code\u003e\u003c/a\u003e release: 26.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/b45c70df105f7d5dcbc5abfb732804d6464edc21\"\u003e\u003ccode\u003eb45c70d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3611\"\u003e#3611\u003c/a\u003e from zc-mattcen/docs-typo\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/99c8d48acf453deb5c49fe12e195dbc00d888d1e\"\u003e\u003ccode\u003e99c8d48\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3623\"\u003e#3623\u003c/a\u003e from benoitc/chore/drop-eventlet-add-h2-uvloop-test-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/5a655af50f20e005dd9e32e6078dc82fa45f3d4b\"\u003e\u003ccode\u003e5a655af\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3622\"\u003e#3622\u003c/a\u003e from benoitc/test/docker-port-and-ipv4-fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/201df19a8011c0a1d6a0e75ebe22e89d48eb935e\"\u003e\u003ccode\u003e201df19\u003c/code\u003e\u003c/a\u003e chore: remove eventlet worker; add h2 and uvloop to test deps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/f4ac8e1f1bf1d365e77f41915da55bec31873f84\"\u003e\u003ccode\u003ef4ac8e1\u003c/code\u003e\u003c/a\u003e test: pass action name to dirty client and stabilize after TTOU spam\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/54d38afddf1f0db0c15b5f4ff63f3c7bfad96961\"\u003e\u003ccode\u003e54d38af\u003c/code\u003e\u003c/a\u003e test: unblock docker fixtures on macOS hosts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/68843c8893dd938456f0a2da62085ab5776f8871\"\u003e\u003ccode\u003e68843c8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3621\"\u003e#3621\u003c/a\u003e from benoitc/fix/asgi-preserve-content-length-on-hea...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/31f2618f733cc0c78690df63f4e344aaf3f56b20\"\u003e\u003ccode\u003e31f2618\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3620\"\u003e#3620\u003c/a\u003e from benoitc/fix/asgi-proxy-protocol-trust-and-parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/41ec7527dbd8a9e52728477700707ad40e41d9dc\"\u003e\u003ccode\u003e41ec752\u003c/code\u003e\u003c/a\u003e fix: keep Content-Length on HEAD and 304 responses\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/25.3.0...26.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.1 to 2.34.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/releases\"\u003erequests's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.34.2\u003c/h2\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues with \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling \u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2342-2026-05-14\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.1\u003c/h2\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/k223kim\"\u003e\u003ccode\u003e@​k223kim\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7433\"\u003epsf/requests#7433\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2341-2026-05-13\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.34.0\u003c/h2\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. \u003cstrong\u003eWe believe types are comprehensive but if you find issues, please\nreport them to the \u003ca href=\"https://redirect.github.com/psf/requests/issues/7271\"\u003epinned tracking issue\u003c/a\u003e.\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.34.2 (2026-05-14)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMoved \u003ccode\u003eheaders\u003c/code\u003e input type back to \u003ccode\u003eMapping\u003c/code\u003e to avoid invariance issues\nwith \u003ccode\u003eMutableMapping\u003c/code\u003e and inferred dict types. Users calling\n\u003ccode\u003eRequest.headers.update()\u003c/code\u003e may need to narrow typing in their code. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.1 (2026-05-13)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eWidened \u003ccode\u003ejson\u003c/code\u003e input type from \u003ccode\u003edict\u003c/code\u003e and \u003ccode\u003elist\u003c/code\u003e to \u003ccode\u003eMapping\u003c/code\u003e\nand \u003ccode\u003eSequence\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eheaders\u003c/code\u003e input type to MutableMapping and removed \u003ccode\u003eNone\u003c/code\u003e from\n\u003ccode\u003eRequest.headers\u003c/code\u003e typing to improve handling for users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eResponse.reason\u003c/code\u003e moved from \u003ccode\u003estr | None\u003c/code\u003e to \u003ccode\u003estr\u003c/code\u003e to improve handling\nfor users. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a bug where some bodies with custom \u003ccode\u003e__getattr__\u003c/code\u003e implementations\nweren't being properly detected as Iterables. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7433\"\u003e#7433\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.34.0 (2026-05-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eAnnouncements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eRequests 2.34.0 introduces inline types, replacing those provided by\ntypeshed. Public API types should be fully compatible with mypy, pyright,\nand ty. We believe types are comprehensive but if you find issues, please\nreport them to the pinned tracking issue.\u003c/p\u003e\n\u003cp\u003eSpecial thanks to \u003ca href=\"https://github.com/bastimeyer\"\u003e\u003ccode\u003e@​bastimeyer\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/cthoyt\"\u003e\u003ccode\u003e@​cthoyt\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e, and \u003ca href=\"https://github.com/srittau\"\u003e\u003ccode\u003e@​srittau\u003c/code\u003e\u003c/a\u003e for\nhelping review and test the types ahead of the release. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7272\"\u003e#7272\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eImprovements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDigest Auth hashing algorithms have added \u003ccode\u003eusedforsecurity=False\u003c/code\u003e to clarify\nsecurity considerations. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7310\"\u003e#7310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.15 based on beta1. Downstream projects\nshould be able to start testing prior to its release in October. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7422\"\u003e#7422\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests added support for Python 3.14t. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7419\"\u003e#7419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eResponse.history\u003c/code\u003e no longer contains a reference to itself, preventing\naccidental looping when traversing the history list. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7328\"\u003e#7328\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer performs greedy matching on no_proxy domains. The\nproxy_bypass implementation has been updated with CPython's fix from\nbpo-39057. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequests no longer incorrectly strips duplicate leading slashes in\nURI paths. This should address user issues with specific presigned\nURLs. Note the full fix requires urllib3 2.7.0+. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7315\"\u003e#7315\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6e83187b8feb273ed4c6cdab5efd8d54901dfab3\"\u003e\u003ccode\u003e6e83187\u003c/code\u003e\u003c/a\u003e v2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/84d10f0be83e8f6aeca8a05230c52216431c4d0b\"\u003e\u003ccode\u003e84d10f0\u003c/code\u003e\u003c/a\u003e Move Request.headers back to Mapping (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7441\"\u003e#7441\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/b7b549b54571d03950b16afd2d01bc6ff0348224\"\u003e\u003ccode\u003eb7b549b\u003c/code\u003e\u003c/a\u003e v2.34.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/e511bc72777a94c45d004e010c597925092e1efe\"\u003e\u003ccode\u003ee511bc7\u003c/code\u003e\u003c/a\u003e Fix mutability issues with headers input types (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7431\"\u003e#7431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/5691f596134c2feb121e595c77a0178921fcce61\"\u003e\u003ccode\u003e5691f59\u003c/code\u003e\u003c/a\u003e Update JsonType containers to read-based collections (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7436\"\u003e#7436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/2144213c307691710c9d665700860fc4993c3035\"\u003e\u003ccode\u003e2144213\u003c/code\u003e\u003c/a\u003e Constrain Response.reason to str (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7437\"\u003e#7437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/6404f345e562d962abe6700a1c357ec1e7e18232\"\u003e\u003ccode\u003e6404f34\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eprepare_body\u003c/code\u003e stream detection for \u003ccode\u003e__getattr__\u003c/code\u003e-based file wrappers (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7\"\u003e#7\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/0b401c76b6e80a4eecf3c690085b2553f6e261ca\"\u003e\u003ccode\u003e0b401c7\u003c/code\u003e\u003c/a\u003e v2.34.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/86b378d3f60f828daa13ca50aa82e287ff7b66b4\"\u003e\u003ccode\u003e86b378d\u003c/code\u003e\u003c/a\u003e Align Session.get parameters with requests.get (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7429\"\u003e#7429\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/a4f9a5999bdb9bf2d6e7c8aa973b28cacb17134f\"\u003e\u003ccode\u003ea4f9a59\u003c/code\u003e\u003c/a\u003e Port bpo-39057 to Requests (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7427\"\u003e#7427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.1...v2.34.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentry-sdk` from 2.59.0 to 2.60.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/getsentry/sentry-python/releases\"\u003esentry-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.60.0\u003c/h2\u003e\n\u003cp\u003eAdds a new \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e option that controls how \u003ccode\u003egen_ai\u003c/code\u003e spans are\nsent to Sentry. When set, the SDK extracts all \u003ccode\u003egen_ai\u003c/code\u003e spans out of a\ntransaction and sends them as v2 envelope items.\u003c/p\u003e\n\u003cp\u003eEnable this option if \u003ccode\u003egen_ai\u003c/code\u003e spans are being dropped because the transaction payload exceeds size limits.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\ndsn='https://\u003ca href=\"mailto:examplePublicKey@o0.ingest.sentry.io\"\u003eexamplePublicKey@o0.ingest.sentry.io\u003c/a\u003e/0',\u003cbr /\u003e\nstream_gen_ai_spans=True,\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asyncpg) Add cursor span support via BaseCursor method patching by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6252\"\u003e#6252\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(integrations) Pass along the conversation ID for openai \u003ccode\u003eresponses\u003c/code\u003e calls by \u003ca href=\"https://github.com/constantinius\"\u003e\u003ccode\u003e@​constantinius\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6199\"\u003e#6199\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi,asgi) Introduce substitute values for filtered fields in span-streaming mode by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6178\"\u003e#6178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove truncation when \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e is enabled by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6260\"\u003e#6260\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd option to send GenAI spans in the new span format by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6079\"\u003e#6079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eOpenai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eGuard against \u003ccode\u003echoices=None\u003c/code\u003e by \u003ca href=\"https://github.com/cla7aye15I4nd\"\u003e\u003ccode\u003e@​cla7aye15I4nd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6216\"\u003e#6216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop setting transaction status when child span fails by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6192\"\u003e#6192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in Responses patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6191\"\u003e#6191\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in Chat Completions patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6190\"\u003e#6190\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(stdlib) Instrument response body read for chunked HTTP responses by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6202\"\u003e#6202\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(typing) Add \u003ccode\u003e@sentry_sdk.traces.trace\u003c/code\u003e overloads to fix typing by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6236\"\u003e#6236\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse proto version 2 to fix backfilled user agent and IP by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6256\"\u003e#6256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003ehttp.server\u003c/code\u003e spans are segments by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6230\"\u003e#6230\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle mypy 2.0 related failures by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6218\"\u003e#6218\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eDjango\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck transaction annotations on transaction events by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6251\"\u003e#6251\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReload middleware on test teardown by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6249\"\u003e#6249\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai\u003c/h4\u003e\n\u003c!-- 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/getsentry/sentry-python/blob/master/CHANGELOG.md\"\u003esentry-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.60.0\u003c/h2\u003e\n\u003cp\u003eAdds a new \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e option that controls how \u003ccode\u003egen_ai\u003c/code\u003e spans are\nsent to Sentry. When set, the SDK extracts all \u003ccode\u003egen_ai\u003c/code\u003e spans out of a\ntransaction and sends them as v2 envelope items.\u003c/p\u003e\n\u003cp\u003eEnable this option if \u003ccode\u003egen_ai\u003c/code\u003e spans are being dropped because the transaction payload exceeds size limits.\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eimport sentry_sdk\n\u003cp\u003esentry_sdk.init(\u003cbr /\u003e\ndsn='https://\u003ca href=\"mailto:examplePublicKey@o0.ingest.sentry.io\"\u003eexamplePublicKey@o0.ingest.sentry.io\u003c/a\u003e/0',\u003cbr /\u003e\nstream_gen_ai_spans=True,\u003cbr /\u003e\n)\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asyncpg) Add cursor span support via BaseCursor method patching by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6252\"\u003e#6252\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(integrations) Pass along the conversation ID for openai \u003ccode\u003eresponses\u003c/code\u003e calls by \u003ca href=\"https://github.com/constantinius\"\u003e\u003ccode\u003e@​constantinius\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6199\"\u003e#6199\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(wsgi,asgi) Introduce substitute values for filtered fields in span-streaming mode by \u003ca href=\"https://github.com/ericapisani\"\u003e\u003ccode\u003e@​ericapisani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6178\"\u003e#6178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove truncation when \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e is enabled by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6260\"\u003e#6260\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd option to send GenAI spans in the new span format by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6079\"\u003e#6079\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eOpenai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eGuard against \u003ccode\u003echoices=None\u003c/code\u003e by \u003ca href=\"https://github.com/cla7aye15I4nd\"\u003e\u003ccode\u003e@​cla7aye15I4nd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6216\"\u003e#6216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop setting transaction status when child span fails by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6192\"\u003e#6192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in Responses patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6191\"\u003e#6191\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eOnly finish relevant spans in Chat Completions patches by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6190\"\u003e#6190\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(stdlib) Instrument response body read for chunked HTTP responses by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6202\"\u003e#6202\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(typing) Add \u003ccode\u003e@sentry_sdk.traces.trace\u003c/code\u003e overloads to fix typing by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6236\"\u003e#6236\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse proto version 2 to fix backfilled user agent and IP by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6256\"\u003e#6256\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003ehttp.server\u003c/code\u003e spans are segments by \u003ca href=\"https://github.com/sentrivana\"\u003e\u003ccode\u003e@​sentrivana\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6230\"\u003e#6230\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHandle mypy 2.0 related failures by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6218\"\u003e#6218\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eDjango\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck transaction annotations on transaction events by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6251\"\u003e#6251\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReload middleware on test teardown by \u003ca href=\"https://github.com/alexander-alderman-webb\"\u003e\u003ccode\u003e@​alexander-alderman-webb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/6249\"\u003e#6249\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai\u003c/h4\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e30caaa97793fd37b782d8c48b7727a43428fafd\"\u003e\u003ccode\u003ee30caaa\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/d31ac85a92def5d6f2395fe2bfa8a9133c581323\"\u003e\u003ccode\u003ed31ac85\u003c/code\u003e\u003c/a\u003e release: 2.60.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/fcb93051c5b85f28ee6dc623dd67736d430ef432\"\u003e\u003ccode\u003efcb9305\u003c/code\u003e\u003c/a\u003e feat: Remove truncation when \u003ccode\u003estream_gen_ai_spans\u003c/code\u003e is enabled (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6260\"\u003e#6260\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/253a4d42b13bb5b54cb3b623a32d9fc99639b226\"\u003e\u003ccode\u003e253a4d4\u003c/code\u003e\u003c/a\u003e feat: Add option to send GenAI spans in the new span format (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6079\"\u003e#6079\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/619d803d82f7bbf2a15a80432334c863e4c206eb\"\u003e\u003ccode\u003e619d803\u003c/code\u003e\u003c/a\u003e test(langchain): Inline global state (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6261\"\u003e#6261\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/f92c8036a8ed166ab3be8a48f6344fd98d1761dd\"\u003e\u003ccode\u003ef92c803\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;fix: Work around compromised transitive dependency (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6257\"\u003e#6257\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6262\"\u003e#6262\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/7a303dcbf0e4bc6aa701446d79e847d56db26137\"\u003e\u003ccode\u003e7a303dc\u003c/code\u003e\u003c/a\u003e Add option to drop scrubbed user IP addresses (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6241\"\u003e#6241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/edaa6d6d142e430e1dd0a1097e0b77506cf159e9\"\u003e\u003ccode\u003eedaa6d6\u003c/code\u003e\u003c/a\u003e feat(pymongo): Add span streaming support (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6253\"\u003e#6253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/0e47eadedea808a4ca7865a480552872208be890\"\u003e\u003ccode\u003e0e47ead\u003c/code\u003e\u003c/a\u003e feat(asyncpg): Add cursor span support via BaseCursor method patching (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6252\"\u003e#6252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/17cc8c7b2c31c2df130418bb49137814d4d35f7b\"\u003e\u003ccode\u003e17cc8c7\u003c/code\u003e\u003c/a\u003e fix: Use proto version 2 to fix backfilled user agent and IP (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/6256\"\u003e#6256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.59.0...2.60.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs` from 6.0.3 to 6.0.4\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/928eec423b8454590a46e50653698d85954f04de\"\u003e\u003ccode\u003e928eec4\u003c/code\u003e\u003c/a\u003e Version 6.0.4 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3375\"\u003e#3375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a9942040a2ed28b8e1ae129578c1f5a4f2b449b8\"\u003e\u003ccode\u003ea994204\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3374\"\u003e#3374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ec8107b44d798a16b42ff049fe3904c9a4b5df08\"\u003e\u003ccode\u003eec8107b\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.64.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/28d997bc1e6559579ce3f4663178a8294e402897\"\u003e\u003ccode\u003e28d997b\u003c/code\u003e\u003c/a\u003e Remove unused get_field_lookup_exact_type from helpers (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3372\"\u003e#3372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/d312d60b1d7e852f73babe2a76be1d2961b94393\"\u003e\u003ccode\u003ed312d60\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.14 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3371\"\u003e#3371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f20e49018f19e84a839ab5d11ac47654e671728a\"\u003e\u003ccode\u003ef20e490\u003c/code\u003e\u003c/a\u003e Update Django to 6.0.5 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3369\"\u003e#3369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6d9d0e26fff5462782bfeede76ffd8b2cc36712d\"\u003e\u003ccode\u003e6d9d0e2\u003c/code\u003e\u003c/a\u003e Resolve default_alias for positional Aggregate in annotate() (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3362\"\u003e#3362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6dd9231e36393d5ddaecb5d0ffca2a6b824bf0cc\"\u003e\u003ccode\u003e6dd9231\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.58.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3368\"\u003e#3368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e270482574c273798d875f2191945f64dbb0c00a\"\u003e\u003ccode\u003ee270482\u003c/code\u003e\u003c/a\u003e Update dependency psycopg to v3.3.4 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3365\"\u003e#3365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/cfb0f9a098e24d47f1c3cc5c5de971b599c6e907\"\u003e\u003ccode\u003ecfb0f9a\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.63.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3367\"\u003e#3367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.16.9 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003ch2\u003eVersioning\u003c/h2\u003e\n\u003cp\u003eThis is the first version targeting \u003ccode\u003edjangorestframework\u003c/code\u003e v3.17 and \u003ccode\u003edjango-stubs\u003c/code\u003e v6.0. However, not all stubs have been updated yet for 3.17:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSee \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\u003c/a\u003e for remaining work\u003c/li\u003e\n\u003cli\u003ePlease open pull requests, but keep changes small.\u003c/li\u003e\n\u003cli\u003eFirst check that nobody is already working on that topic: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/pulls\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/pulls\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e \u003ccode\u003ecode\u003c/code\u003e support and fix defaults in validators by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/947\"\u003etypeddjango/djangorestframework-stubs#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorator stubs for DRF 3.17 by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/949\"\u003etypeddjango/djangorestframework-stubs#949\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eSerializer\u003c/code\u003e context type \u003ccode\u003edict\u003c/code\u003e -\u0026gt; \u003ccode\u003eMapping\u003c/code\u003e by \u003ca href=\"https://github.com/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.renderers\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/960\"\u003etypeddjango/djangorestframework-stubs#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/964\"\u003etypeddjango/djangorestframework-stubs#964\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency djangorestframework to v3.17.1 \u0026amp; add new allowlist by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/941\"\u003etypeddjango/djangorestframework-stubs#941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance - Django 5.2.13 \u0026amp; 6.0.4 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/962\"\u003etypeddjango/djangorestframework-stubs#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/984\"\u003etypeddjango/djangorestframework-stubs#984\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/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.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/typeddjango/djangorestframework-stubs/commit/dcaf5607a9c22db2e19274ff49bd149489603e53\"\u003e\u003ccode\u003edcaf560\u003c/code\u003e\u003c/a\u003e Version 3.17.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/9ac7355a57ab3ac7e7c00830bb0d8ad4df699e01\"\u003e\u003ccode\u003e9ac7355\u003c/code\u003e\u003c/a\u003e Clean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/4f367f1fcbeb0c5f041a88ea12988fe5a4872e49\"\u003e\u003ccode\u003e4f367f1\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/7923d06e186d363e88e3590fe88a98bdd924920a\"\u003e\u003ccode\u003e7923d06\u003c/code\u003e\u003c/a\u003e Unpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b2d9250b66d2aa7727793dd05e7cd37208ebcde6\"\u003e\u003ccode\u003eb2d9250\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/77b63b4ea29056d63b30b60b2d82e564f6194d6b\"\u003e\u003ccode\u003e77b63b4\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/96a5e21a45f39a3e65dbff74a4ce3482d0cdd9d1\"\u003e\u003ccode\u003e96a5e21\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b6c3e0298ff742dfb60ec2a87319028cd955686f\"\u003e\u003ccode\u003eb6c3e02\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260510 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/cc0af26d455fd5b3b735806409d17e6aef01a0b2\"\u003e\u003ccode\u003ecc0af26\u003c/code\u003e\u003c/a\u003e Update dependency types-requests to v2.33.0.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/978\"\u003e#978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/001b9c2865e9c0aae2b1cb181baa5f02be2b6be1\"\u003e\u003ccode\u003e001b9c2\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.20.2 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python/mypy/blob/master/CHANGELOG.md\"\u003emypy's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eMypy Release Notes\u003c/h1\u003e\n\u003ch2\u003eNext Release\u003c/h2\u003e\n\u003ch2\u003eMypy 2.1\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 2.1.0 to the Python Package Index (\u003ca href=\"https://pypi.org/project/mypy/\"\u003ePyPI\u003c/a\u003e).\nMypy is a static type checker for Python. This release includes new features, performance\nimprovements and bug fixes. You can install it as follows:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install -U mypy\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eYou can read the full documentation for this release on \u003ca href=\"http://mypy.readthedocs.io\"\u003eRead the Docs\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003elibrt.vecs: Fast Growable Array Type for Mypyc\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.vecs\u003c/code\u003e module provides an efficient growable array type \u003ccode\u003evec\u003c/code\u003e that is\noptimized for mypyc use. It provides fast, packed arrays with integer and floating point\nvalue types, which can be \u003cstrong\u003eseveral times faster\u003c/strong\u003e than \u003ccode\u003elist\u003c/code\u003e, and tens of times faster\nthan \u003ccode\u003earray.array\u003c/code\u003e in code compiled using mypyc. It also supports nested \u003ccode\u003evec\u003c/code\u003e objects and\nnon-value-type items, such as \u003ccode\u003evec[vec[str]]\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_vecs.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo.\u003c/p\u003e\n\u003ch3\u003elibrt.random: Fast Pseudo-Random Number Generation\u003c/h3\u003e\n\u003cp\u003eThe new \u003ccode\u003elibrt.random\u003c/code\u003e module provides fast pseudo-random number generation that is\noptimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib\n\u003ccode\u003erandom\u003c/code\u003e module in compiled code.\u003c/p\u003e\n\u003cp\u003eRefer to the \u003ca href=\"https://mypyc.readthedocs.io/en/latest/librt_random.html\"\u003edocumentation\u003c/a\u003e for\nthe details.\u003c/p\u003e\n\u003cp\u003eContributed by Jukka Lehtosalo (PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21433\"\u003e21433\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMypyc Improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMake compilation order with multiple files consistent (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21419\"\u003e21419\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on accessing \u003ccode\u003eStopAsyncIteration\u003c/code\u003e (Piotr Sawicki, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21406\"\u003e21406\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix incremental compilation with \u003ccode\u003eseparate\u003c/code\u003e flag (Vaggelis Danias, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21299\"\u003e21299\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixes to Crashes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix crash on partial type with \u003ccode\u003e--allow-redefinition\u003c/code\u003e and \u003ccode\u003eglobal\u003c/code\u003e declaration (Jukka Lehtosalo, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21428\"\u003e21428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix broken awaitable generator patching (Ivan Levkivskyi, PR \u003ca href=\"https://redirect.github.com/python/mypy/pull/21435\"\u003e21435\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges to Messages\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c1c336d7e34eb313080c79b156518c58d27c7234\"\u003e\u003ccode\u003ec1c336d\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/74df14b7cbf08140236aa45bbb7f42219b0b1df7\"\u003e\u003ccode\u003e74df14b\u003c/code\u003e\u003c/a\u003e Add changelog for mypy 2.1 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/022d9bc96f86c40f338a5cf150f1806cc8f300ff\"\u003e\u003ccode\u003e022d9bc\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;TypeForm: Enable by default (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21262\"\u003e#21262\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8826288214f1cb31496e610667481221e025359c\"\u003e\u003ccode\u003e8826288\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt.random (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21463\"\u003e#21463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/3f4067b699dbe52d08e42ef3b3ebfdebdc06bd96\"\u003e\u003ccode\u003e3f4067b\u003c/code\u003e\u003c/a\u003e Bump librt version to 0.11.0 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21458\"\u003e#21458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/2b1eb58a250c5f1eb4ef5fb1f312ff528c5a1d4e\"\u003e\u003ccode\u003e2b1eb58\u003c/code\u003e\u003c/a\u003e [mypyc] Enable incremental self-compilation (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21369\"\u003e#21369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/8152f4af3f6c03beaf2660026240f0fdce7feecc\"\u003e\u003ccode\u003e8152f4a\u003c/code\u003e\u003c/a\u003e Respect file config comments for stale modules (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21444\"\u003e#21444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/116d60bdd3fdfe8d97c6afe99370910db56f1b92\"\u003e\u003ccode\u003e116d60b\u003c/code\u003e\u003c/a\u003e Fix nondeterminism from nonassociativity of overload joins (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21455\"\u003e#21455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/6c4af8e42110cea3f84bc02add2ca7b89c268210\"\u003e\u003ccode\u003e6c4af8e\u003c/code\u003e\u003c/a\u003e Fix function call message change for small number of args (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21432\"\u003e#21432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4b8fdcaf24032592510e8f15421fb32d82a71800\"\u003e\u003ccode\u003e4b8fdca\u003c/code\u003e\u003c/a\u003e [mypyc] Add librt.random module (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21433\"\u003e#21433\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.20.2...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `selenium` from 4.43.0 to 4.44.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/SeleniumHQ/Selenium/releases\"\u003eselenium's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eSelenium 4.44.0\u003c/h2\u003e\n\u003ch2\u003eDetailed Changelogs by Component\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG\"\u003eJava\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES\"\u003ePython\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG\"\u003eDotNet\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES\"\u003eRuby\u003c/a\u003e\u003c/strong\u003e     |    \u003c!-- raw HTML omitted --\u003e \u003cstrong\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md\"\u003eJavaScript\u003c/a\u003e\u003c/strong\u003e\n\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cul\u003e\n\u003cli\u003efix(documentation): update artifact naming for generated docs by \u003ca href=\"https://github.com/diemol\"\u003e\u003ccode\u003e@​diemol\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17332\"\u003eSeleniumHQ/selenium#17332\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(ruby): retrieve devtools version dynamically for package verification by \u003ca href=\"https://github.com/diemol\"\u003e\u003ccode\u003e@​diemol\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17335\"\u003eSeleniumHQ/selenium#17335\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Don't truncate internal log messages at error/warn levels by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17333\"\u003eSeleniumHQ/selenium#17333\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Safe modifications of internal log handlers by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17334\"\u003eSeleniumHQ/selenium#17334\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Remove planned obsoleted members for 4.44 by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17328\"\u003eSeleniumHQ/selenium#17328\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Statically declare commands by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17330\"\u003eSeleniumHQ/selenium#17330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Statically declared events by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17331\"\u003eSeleniumHQ/selenium#17331\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Add C# 14 extension to polyfill \u003ccode\u003eArgumentNullException.ThrowIfNull\u003c/code\u003e by \u003ca href=\"https://github.com/RenderMichael\"\u003e\u003ccode\u003e@​RenderMichael\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16697\"\u003eSeleniumHQ/selenium#16697\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Align SetDownloadBehavior command by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17336\"\u003eSeleniumHQ/selenium#17336\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Align ContinueWithAuth command by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17337\"\u003eSeleniumHQ/selenium#17337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Align SetGeolocation polymorphic command by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17338\"\u003eSeleniumHQ/selenium#17338\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [test] In-process test webserver by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17339\"\u003eSeleniumHQ/selenium#17339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] deprecate the 'native' methods inside the HttpClient interface by \u003ca href=\"https://github.com/joerg1985\"\u003e\u003ccode\u003e@​joerg1985\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17340\"\u003eSeleniumHQ/selenium#17340\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCDDL 2 Python generator by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/16914\"\u003eSeleniumHQ/selenium#16914\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix py:local_dev rake task by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17342\"\u003eSeleniumHQ/selenium#17342\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[grid] Accept legacy session-closed event payloads by \u003ca href=\"https://github.com/VietND96\"\u003e\u003ccode\u003e@​VietND96\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17343\"\u003eSeleniumHQ/selenium#17343\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] specify nullability in package \u003ccode\u003eorg.openqa.selenium.remote\u003c/code\u003e by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17325\"\u003eSeleniumHQ/selenium#17325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix NPE when response status is null by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17348\"\u003eSeleniumHQ/selenium#17348\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] fix NoSuchElementException for custom By locators by \u003ca href=\"https://github.com/Chandan25sharma\"\u003e\u003ccode\u003e@​Chandan25sharma\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17287\"\u003eSeleniumHQ/selenium#17287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Update docs with pytest example and minor formatting fixes by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17351\"\u003eSeleniumHQ/selenium#17351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] Fix stopping of network monitoring via DevTools by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17352\"\u003eSeleniumHQ/selenium#17352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [test] Update tests to target .NET 10 by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17353\"\u003eSeleniumHQ/selenium#17353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[build] Clean extra tools from GHA runner to free disk space by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17360\"\u003eSeleniumHQ/selenium#17360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInitial Creation of the Selenium CLI Tool by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17327\"\u003eSeleniumHQ/selenium#17327\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] fix some nullability warnings by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17362\"\u003eSeleniumHQ/selenium#17362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Use generated Bidi files instead of hand curated ones by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17266\"\u003eSeleniumHQ/selenium#17266\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[docs] Add AI-assisted contribution policy by \u003ca href=\"https://github.com/titusfortner\"\u003e\u003ccode\u003e@​titusfortner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17043\"\u003eSeleniumHQ/selenium#17043\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[Agents] Update agents to make sure do linting. by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17366\"\u003eSeleniumHQ/selenium#17366\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[py] Bump dependencies by \u003ca href=\"https://github.com/cgoldberg\"\u003e\u003ccode\u003e@​cgoldberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17368\"\u003eSeleniumHQ/selenium#17368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[git] update gitignore to exclude mempalace by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17369\"\u003eSeleniumHQ/selenium#17369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] remove field \u003ccode\u003eChromiumDriver.capabilities\u003c/code\u003e by \u003ca href=\"https://github.com/asolntsev\"\u003e\u003ccode\u003e@​asolntsev\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17363\"\u003eSeleniumHQ/selenium#17363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[spec] Use http_file for the cddl files by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17372\"\u003eSeleniumHQ/selenium#17372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [bidi] Obsolete Type(string) method in Input module by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17377\"\u003eSeleniumHQ/selenium#17377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix Network failures by \u003ca href=\"https://github.com/AutomatedTester\"\u003e\u003ccode\u003e@​AutomatedTester\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17381\"\u003eSeleniumHQ/selenium#17381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[java] [test] Unignore bidi network conditions tests for Firefox by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17385\"\u003eSeleniumHQ/selenium#17385\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [test] Unignore network conditions tests for Firefox by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17386\"\u003eSeleniumHQ/selenium#17386\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[dotnet] [test] Migrate to MTP by \u003ca href=\"https://github.com/nvborisenko\"\u003e\u003ccode\u003e@​nvborisenko\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/SeleniumHQ/selenium/pull/17384\"\u003eSeleniumHQ/selenium#17384\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/SeleniumHQ/selenium/commit/da2039bd1456a161d0c284de16f9f4f179f1e8ca\"\u003e\u003ccode\u003eda2039b\u003c/code\u003e\u003c/a\u003e [build] Prepare for release of selenium-4.44.0 (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17444\"\u003e#17444\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/d56867b3163eaa25541843ebfdd8c632a01fbf52\"\u003e\u003ccode\u003ed56867b\u003c/code\u003e\u003c/a\u003e Fix prerelease (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17442\"\u003e#17442\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/331becdcd9be0a34b733818c9d05ed209411783d\"\u003e\u003ccode\u003e331becd\u003c/code\u003e\u003c/a\u003e [dotnet][rb][java][js][py] Automated Browser Version Update (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17440\"\u003e#17440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/65bb32ebd5a72f0374934da3ed2355757bb3b068\"\u003e\u003ccode\u003e65bb32e\u003c/code\u003e\u003c/a\u003e [build] do not auto-merge browser updates (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17432\"\u003e#17432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/fd1d36d41053a8886164ed6b12c706fbc602507f\"\u003e\u003ccode\u003efd1d36d\u003c/code\u003e\u003c/a\u003e [build] dynamically add and remove rulesets for release (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17439\"\u003e#17439\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/c799aff2b94666c6cab94c0dec8762ce962bb107\"\u003e\u003ccode\u003ec799aff\u003c/code\u003e\u003c/a\u003e [build] fix release workflow (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17437\"\u003e#17437\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/83ce01eb2ea710bdd9cb34e2ce4eda08a9c890f1\"\u003e\u003ccode\u003e83ce01e\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Add DisownData command in Network module (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17436\"\u003e#17436\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/f342feeeb5d4f2760e8c2c1083815151f25327c7\"\u003e\u003ccode\u003ef342fee\u003c/code\u003e\u003c/a\u003e [dotnet] [bidi] Additional Event streaming (breaking change) (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17349\"\u003e#17349\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/dfcc86ead1ad4b8291cc89e139f5e25fa011a475\"\u003e\u003ccode\u003edfcc86e\u003c/code\u003e\u003c/a\u003e [JavaScript] Move 'isDisplayed' atom to be typescript (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17316\"\u003e#17316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/SeleniumHQ/selenium/commit/cc26ec89c1bdd4a63cd994d5b185c5d169652858\"\u003e\u003ccode\u003ecc26ec8\u003c/code\u003e\u003c/a\u003e [js][py] Convert getAttribute atom from Closure to TypeScript (\u003ca href=\"https://redirect.github.com/SeleniumHQ/Selenium/issues/17370\"\u003e#17370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/SeleniumHQ/Selenium/compare/selenium-4.43.0...selenium-4.44.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-requests` from 2.33.0.20260503 to 2.33.0.20260513\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\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/rodlukas/UP-admin/pull/388","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodlukas%2FUP-admin/issues/388","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/388/packages"}},{"old_version":"3.16.9","new_version":"3.17.0","update_type":"minor","path":null,"pr_created_at":"2026-05-15T04:56:33.000Z","version_change":"3.16.9 → 3.17.0","issue":{"uuid":"4451366313","node_id":"PR_kwDOSUTGnc7byWuq","number":11,"state":"closed","title":"chore(deps): bump the python group across 1 directory with 5 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-05-21T04:56:02.000Z","author_association":null,"state_reason":null,"created_at":"2026-05-15T04:56:33.000Z","updated_at":"2026-05-21T04:56:04.000Z","time_to_close":518369,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"python","update_count":5,"packages":[{"name":"django","old_version":"6.0.4","new_version":"6.0.5","repository_url":"https://github.com/django/django"},{"name":"coverage","old_version":"7.13.5","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"django-stubs","old_version":"6.0.3","new_version":"6.0.4"},{"name":"djangorestframework-stubs","old_version":"3.16.9","new_version":"3.17.0","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"ruff","old_version":"0.15.12","new_version":"0.15.13","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python group with 5 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `6.0.4` | `6.0.5` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.5` | `7.14.0` |\n| [django-stubs[compatible-mypy]](https://github.com/typeddjango/django-stubs) | `6.0.3` | `6.0.4` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.9` | `3.17.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.12` | `0.15.13` |\n\n\nUpdates `django` from 6.0.4 to 6.0.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8f8ad09659d728423a00e0a3b5f16da5c3a38e24\"\u003e\u003ccode\u003e8f8ad09\u003c/code\u003e\u003c/a\u003e [6.0.x] Bumped version for 6.0.5 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/44ad76efcbe3c4ca0f08bb9dabe916f6374596c9\"\u003e\u003ccode\u003e44ad76e\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-6907 -- Prevented caching of requests when Vary header...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/1b0184aa657bc3f5859aeb0206e7c1e94e48b103\"\u003e\u003ccode\u003e1b0184a\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-35192 -- Ensured Vary header is sent when setting sess...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/ad8f9e19e0897ea45ded7c046ff28daf6f773e92\"\u003e\u003ccode\u003ead8f9e1\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed CVE-2026-5766 -- Enforced DATA_UPLOAD_MAX_MEMORY_SIZE in Memory...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/990ab01e70fd8f55e867b4a234c0ee242fd33fec\"\u003e\u003ccode\u003e990ab01\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37039\"\u003e#37039\u003c/a\u003e -- Removed outdated note from QuerySet.iterator() docs.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/f0c269f285ab58bfb4a120141d7dd41ff4f42b45\"\u003e\u003ccode\u003ef0c269f\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed typo in stub release notes for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8bcd15beeff6542acc381b83f50b061d62284c2b\"\u003e\u003ccode\u003e8bcd15b\u003c/code\u003e\u003c/a\u003e [6.0.x] Fixed \u003ca href=\"https://redirect.github.com/django/django/issues/37067\"\u003e#37067\u003c/a\u003e -- Added trailing slash in django_file_prefixes().\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/3cdec6454fb86e8d03a06944c0c68025733ed93f\"\u003e\u003ccode\u003e3cdec64\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs CVE-2026-25674 -- Clarified role of umask in upload permissions.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/5dd5c70cf1056e8e04badb687f773e8f16bba257\"\u003e\u003ccode\u003e5dd5c70\u003c/code\u003e\u003c/a\u003e [6.0.x] Added stub release notes and release date for 6.0.5 and 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/8ee73415270a1a54daaec9bb529ad82c6f7a6d4c\"\u003e\u003ccode\u003e8ee7341\u003c/code\u003e\u003c/a\u003e [6.0.x] Refs \u003ca href=\"https://redirect.github.com/django/django/issues/373\"\u003e#373\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/django/django/issues/34122\"\u003e#34122\u003c/a\u003e -- Removed warning that ForeignObject is an interna...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/6.0.4...6.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `coverage` from 7.13.5 to 7.14.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/coveragepy/coveragepy/blob/main/CHANGES.rst\"\u003ecoverage's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 7.14.0 — 2026-05-10\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFeature: now when running one of the reporting commands, if there are\nparallel data files that need combining, they will be implicitly combined\nbefore creating the report. There is no option to avoid the combination; let\nus know if you have a use case that requires it.  Thanks, \u003ccode\u003eTim Hatch \u0026lt;pull 2162_\u0026gt;\u003c/code\u003e\u003cem\u003e. Closes \u003ccode\u003eissue 1781\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the output from \u003ccode\u003ecombine\u003c/code\u003e was too verbose, listing each file\nconsidered. Now it shows a single line with the counts of files combined,\nfiles skipped, and files with errors. The \u003ccode\u003e-q\u003c/code\u003e flag suppresses this line.\nThe old detailed lines are available with the new \u003ccode\u003e--debug=combine\u003c/code\u003e option.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: running a Python file through a symlink now sets the sys.path correctly,\nmatching regular Python behavior. Fixes \u003ccode\u003eissue 2157\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eCollector.flush_data\u003c/code\u003e could fail with \u0026quot;RuntimeError: Set changed\nsize during iteration\u0026quot; when a tracer in another thread added a line to the\nper-file set that \u003ccode\u003eadd_lines\u003c/code\u003e (or \u003ccode\u003eadd_arcs\u003c/code\u003e) was iterating. The values\npassed to \u003ccode\u003eCoverageData\u003c/code\u003e are now snapshotted via \u003ccode\u003edict.copy()\u003c/code\u003e and\n\u003ccode\u003eset.copy()\u003c/code\u003e, which are atomic under the GIL. Thanks, \u003ccode\u003eAlex Vandiver \u0026lt;pull 2165_\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the soft keyword \u003ccode\u003elazy\u003c/code\u003e is now bolded in HTML reports.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWe are no longer testing eventlet support. Eventlet started issuing stern\ndeprecation warnings that break our tests. Our support code is still there.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 1781: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/1781\"\u003ecoveragepy/coveragepy#1781\u003c/a\u003e\n.. _issue 2157: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2157\"\u003ecoveragepy/coveragepy#2157\u003c/a\u003e\n.. _pull 2162: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2162\"\u003ecoveragepy/coveragepy#2162\u003c/a\u003e\n.. _pull 2165: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2165\"\u003ecoveragepy/coveragepy#2165\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-5:\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/646351b60429f1b5760af6c1b97b28483244a955\"\u003e\u003ccode\u003e646351b\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/39cd015505c8b04369c5b06e34fc22449a697370\"\u003e\u003ccode\u003e39cd015\u003c/code\u003e\u003c/a\u003e docs: prep for 7.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/649e8aa34af7d80c386ae82e8a3a6c9a3acb0dab\"\u003e\u003ccode\u003e649e8aa\u003c/code\u003e\u003c/a\u003e docs: thanks Alex Vandiver for \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/8cd392e3b5c4bc15d534aaec0c21714f9f518469\"\u003e\u003ccode\u003e8cd392e\u003c/code\u003e\u003c/a\u003e fix: snapshot data in Collector.flush_data to avoid threading race (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2165\"\u003e#2165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c48e0edc2ebe44621b0053176e90f77b0c79bec1\"\u003e\u003ccode\u003ec48e0ed\u003c/code\u003e\u003c/a\u003e fix: less output for combining\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/c2a3a284078556c911e0d9b6c6af1b7082a363ea\"\u003e\u003ccode\u003ec2a3a28\u003c/code\u003e\u003c/a\u003e docs: explain the change from \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/1cd47aa6ac1da4e150da44055295d4e4f3a014e8\"\u003e\u003ccode\u003e1cd47aa\u003c/code\u003e\u003c/a\u003e fix: implicit combine-during-report now removes the combined data files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2d99fd7696e0bccec8037479a4e45c1ecccb8058\"\u003e\u003ccode\u003e2d99fd7\u003c/code\u003e\u003c/a\u003e feat: automatically combine coverage in report, thanks Tim Hatch (\u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2162\"\u003e#2162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/9fbdcdfee1c122fac43f1bf9a5e2d1f4d835f21c\"\u003e\u003ccode\u003e9fbdcdf\u003c/code\u003e\u003c/a\u003e fix: lazy soft keywords are bolded\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/5de7d0267b9466d59995aaae1a7e707c8c6f66e7\"\u003e\u003ccode\u003e5de7d02\u003c/code\u003e\u003c/a\u003e build: oops, misplaced quote\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.5...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-stubs[compatible-mypy]` from 6.0.3 to 6.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/django-stubs/releases\"\u003edjango-stubs[compatible-mypy]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e6.0.4\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003emypy@2.0\u003c/code\u003e support is added.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd more test field nullable by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3325\"\u003etypeddjango/django-stubs#3325\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eRedisCache._cache\u003c/code\u003e by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3337\"\u003etypeddjango/django-stubs#3337\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003eanalyze_member_access\u003c/code\u003e helper into helpers module by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3339\"\u003etypeddjango/django-stubs#3339\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType-check \u003ccode\u003edefaults\u003c/code\u003e and \u003ccode\u003ecreate_defaults\u003c/code\u003e dict literals by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3326\"\u003etypeddjango/django-stubs#3326\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRelax constraint on \u003ccode\u003efinders.find(all=...)\u003c/code\u003e by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3352\"\u003etypeddjango/django-stubs#3352\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eType \u003ccode\u003eEmailMessage.message()\u003c/code\u003e return as stdlib \u003ccode\u003eemail.message.EmailMessage\u003c/code\u003e by \u003ca href=\"https://github.com/ahmedasar00\"\u003e\u003ccode\u003e@​ahmedasar00\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3291\"\u003etypeddjango/django-stubs#3291\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix annotate leak across functions by \u003ca href=\"https://github.com/UnknownPlatypus\"\u003e\u003ccode\u003e@​UnknownPlatypus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3330\"\u003etypeddjango/django-stubs#3330\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAccept single \u003ccode\u003estr/Combinable\u003c/code\u003e for \u003ccode\u003eAggregate.order_by\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3357\"\u003etypeddjango/django-stubs#3357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExpose Aggregate kwargs on subclass \u003ccode\u003e__init__\u003c/code\u003e stubs by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3359\"\u003etypeddjango/django-stubs#3359\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e**flags\u003c/code\u003e with explicit kwargs on \u003ccode\u003eLibrary.filter\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3360\"\u003etypeddjango/django-stubs#3360\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eResolve \u003ccode\u003edefault_alias\u003c/code\u003e for positional Aggregate in \u003ccode\u003eannotate()\u003c/code\u003e by \u003ca href=\"https://github.com/federicobond\"\u003e\u003ccode\u003e@​federicobond\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3362\"\u003etypeddjango/django-stubs#3362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Django to 6.0.5 by \u003ca href=\"https://github.com/sobolevn\"\u003e\u003ccode\u003e@​sobolevn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3369\"\u003etypeddjango/django-stubs#3369\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/bitmooze\"\u003e\u003ccode\u003e@​bitmooze\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/pull/3331\"\u003etypeddjango/django-stubs#3331\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ehttps://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/928eec423b8454590a46e50653698d85954f04de\"\u003e\u003ccode\u003e928eec4\u003c/code\u003e\u003c/a\u003e Version 6.0.4 release (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3375\"\u003e#3375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/a9942040a2ed28b8e1ae129578c1f5a4f2b449b8\"\u003e\u003ccode\u003ea994204\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3374\"\u003e#3374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/ec8107b44d798a16b42ff049fe3904c9a4b5df08\"\u003e\u003ccode\u003eec8107b\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.64.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3373\"\u003e#3373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/28d997bc1e6559579ce3f4663178a8294e402897\"\u003e\u003ccode\u003e28d997b\u003c/code\u003e\u003c/a\u003e Remove unused get_field_lookup_exact_type from helpers (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3372\"\u003e#3372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/d312d60b1d7e852f73babe2a76be1d2961b94393\"\u003e\u003ccode\u003ed312d60\u003c/code\u003e\u003c/a\u003e Update dependency django to v5.2.14 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3371\"\u003e#3371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/f20e49018f19e84a839ab5d11ac47654e671728a\"\u003e\u003ccode\u003ef20e490\u003c/code\u003e\u003c/a\u003e Update Django to 6.0.5 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3369\"\u003e#3369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6d9d0e26fff5462782bfeede76ffd8b2cc36712d\"\u003e\u003ccode\u003e6d9d0e2\u003c/code\u003e\u003c/a\u003e Resolve default_alias for positional Aggregate in annotate() (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3362\"\u003e#3362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/6dd9231e36393d5ddaecb5d0ffca2a6b824bf0cc\"\u003e\u003ccode\u003e6dd9231\u003c/code\u003e\u003c/a\u003e Update int128/hide-comment-action action to v1.58.0 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3368\"\u003e#3368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/e270482574c273798d875f2191945f64dbb0c00a\"\u003e\u003ccode\u003ee270482\u003c/code\u003e\u003c/a\u003e Update dependency psycopg to v3.3.4 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3365\"\u003e#3365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/django-stubs/commit/cfb0f9a098e24d47f1c3cc5c5de971b599c6e907\"\u003e\u003ccode\u003ecfb0f9a\u003c/code\u003e\u003c/a\u003e Update dependency pyrefly to v0.63.1 (\u003ca href=\"https://redirect.github.com/typeddjango/django-stubs/issues/3367\"\u003e#3367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/django-stubs/compare/6.0.3...6.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework-stubs` from 3.16.9 to 3.17.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/releases\"\u003edjangorestframework-stubs's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.0\u003c/h2\u003e\n\u003ch2\u003eVersioning\u003c/h2\u003e\n\u003cp\u003eThis is the first version targeting \u003ccode\u003edjangorestframework\u003c/code\u003e v3.17 and \u003ccode\u003edjango-stubs\u003c/code\u003e v6.0. However, not all stubs have been updated yet for 3.17:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSee \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/blob/master/scripts/stubtest/allowlist_todo_317.txt\u003c/a\u003e for remaining work\u003c/li\u003e\n\u003cli\u003ePlease open pull requests, but keep changes small.\u003c/li\u003e\n\u003cli\u003eFirst check that nobody is already working on that topic: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/pulls\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/pulls\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e \u003ccode\u003ecode\u003c/code\u003e support and fix defaults in validators by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/947\"\u003etypeddjango/djangorestframework-stubs#947\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorator stubs for DRF 3.17 by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/949\"\u003etypeddjango/djangorestframework-stubs#949\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eChange \u003ccode\u003eSerializer\u003c/code\u003e context type \u003ccode\u003edict\u003c/code\u003e -\u0026gt; \u003ccode\u003eMapping\u003c/code\u003e by \u003ca href=\"https://github.com/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.renderers\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/960\"\u003etypeddjango/djangorestframework-stubs#960\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e by \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/964\"\u003etypeddjango/djangorestframework-stubs#964\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eHousekeeping\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate dependency djangorestframework to v3.17.1 \u0026amp; add new allowlist by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/941\"\u003etypeddjango/djangorestframework-stubs#941\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLock file maintenance - Django 5.2.13 \u0026amp; 6.0.4 by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/962\"\u003etypeddjango/djangorestframework-stubs#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates by \u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eVersion 3.17.0 release by \u003ca href=\"https://github.com/intgr\"\u003e\u003ccode\u003e@​intgr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/984\"\u003etypeddjango/djangorestframework-stubs#984\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/BrianHicks\"\u003e\u003ccode\u003e@​BrianHicks\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/946\"\u003etypeddjango/djangorestframework-stubs#946\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Copilot\"\u003e\u003ccode\u003e@​Copilot\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/pull/983\"\u003etypeddjango/djangorestframework-stubs#983\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ehttps://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.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/typeddjango/djangorestframework-stubs/commit/dcaf5607a9c22db2e19274ff49bd149489603e53\"\u003e\u003ccode\u003edcaf560\u003c/code\u003e\u003c/a\u003e Version 3.17.0 release (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/984\"\u003e#984\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/9ac7355a57ab3ac7e7c00830bb0d8ad4df699e01\"\u003e\u003ccode\u003e9ac7355\u003c/code\u003e\u003c/a\u003e Clean up and improve \u003ccode\u003erest_framework.fields\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/4f367f1fcbeb0c5f041a88ea12988fe5a4872e49\"\u003e\u003ccode\u003e4f367f1\u003c/code\u003e\u003c/a\u003e Lock file maintenance\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/7923d06e186d363e88e3590fe88a98bdd924920a\"\u003e\u003ccode\u003e7923d06\u003c/code\u003e\u003c/a\u003e Unpin \u003ccode\u003etypes-*\u003c/code\u003e dev dependencies for automatic Renovate updates (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/983\"\u003e#983\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b2d9250b66d2aa7727793dd05e7cd37208ebcde6\"\u003e\u003ccode\u003eb2d9250\u003c/code\u003e\u003c/a\u003e Update dependency mypy to v2 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/77b63b4ea29056d63b30b60b2d82e564f6194d6b\"\u003e\u003ccode\u003e77b63b4\u003c/code\u003e\u003c/a\u003e Lock file maintenance (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/982\"\u003e#982\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/96a5e21a45f39a3e65dbff74a4ce3482d0cdd9d1\"\u003e\u003ccode\u003e96a5e21\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/b6c3e0298ff742dfb60ec2a87319028cd955686f\"\u003e\u003ccode\u003eb6c3e02\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260510 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/cc0af26d455fd5b3b735806409d17e6aef01a0b2\"\u003e\u003ccode\u003ecc0af26\u003c/code\u003e\u003c/a\u003e Update dependency types-requests to v2.33.0.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/978\"\u003e#978\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/commit/001b9c2865e9c0aae2b1cb181baa5f02be2b6be1\"\u003e\u003ccode\u003e001b9c2\u003c/code\u003e\u003c/a\u003e Update dependency types-pyyaml to v6.0.12.20260508 (\u003ca href=\"https://redirect.github.com/typeddjango/djangorestframework-stubs/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/typeddjango/djangorestframework-stubs/compare/3.16.9...3.17.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.15.12 to 0.15.13\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.13\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-05-14.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a rule to flag lazy imports that are eagerly evaluated (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25016\"\u003e#25016\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Standardize diagnostic message (\u003ccode\u003ePLR0914\u003c/code\u003e, \u003ccode\u003ePLR0917\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24996\"\u003e#24996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eF811\u003c/code\u003e false positive for class methods (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24933\"\u003e#24933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix setting selection for multi-folder workspace (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24819\"\u003e#24819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] Fix false positive for lines with leading whitespace (\u003ccode\u003eERA001\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25122\"\u003e#25122\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-pyi\u003c/code\u003e] Fix false positive for f-string debug specifier (\u003ccode\u003ePYI016\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24098\"\u003e#24098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways include panic payload in panic diagnostic message (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24873\"\u003e#24873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRestrict \u003ccode\u003ePYI034\u003c/code\u003e for in-place operations to enclosing class (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24511\"\u003e#24511\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error message for parameters that are declared \u003ccode\u003eglobal\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24902\"\u003e#24902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate known stdlib (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25103\"\u003e#25103\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd TOML examples to \u003ccode\u003e--config\u003c/code\u003e help text (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25013\"\u003e#25013\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eColorize ruff check 'All checks passed' (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25085\"\u003e#25085\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIncrease max allowed value of \u003ccode\u003eline-length\u003c/code\u003e setting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24962\"\u003e#24962\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eD203\u003c/code\u003e to rules that conflict with the formatter (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25044\"\u003e#25044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify \u003ccode\u003eCOM819\u003c/code\u003e and formatter interaction (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25045\"\u003e#25045\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClarify that \u003ccode\u003eNotImplemented\u003c/code\u003e is a value, not an exception (\u003ccode\u003eF901\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/25054\"\u003e#25054\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate number of lint rules supported (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24942\"\u003e#24942\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSimplify the playground's markdown template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24924\"\u003e#24924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2afb467ce397e4a89c13a0a814c62cfecb0e9e49\"\u003e\u003ccode\u003e2afb467\u003c/code\u003e\u003c/a\u003e Bump 0.15.13 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25157\"\u003e#25157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/300879600fa3af7cde1e675c63de6ad9d0797d1b\"\u003e\u003ccode\u003e3008796\u003c/code\u003e\u003c/a\u003e [ty] classify TypeVar semantic tokens as type parameters (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24891\"\u003e#24891\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/79470e31877acb6074f3bbff2a49e508822ae4e8\"\u003e\u003ccode\u003e79470e3\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003eisort\u003c/code\u003e] Avoid constructing \u003ccode\u003eglob::Pattern\u003c/code\u003es for literal known modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25123\"\u003e#25123\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/2522549901d50f18775999f0fb802b19229417f0\"\u003e\u003ccode\u003e2522549\u003c/code\u003e\u003c/a\u003e Remove shellcheck from prek (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25154\"\u003e#25154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7db7170020f539d6d2bc01dbd0b0c09fab91dc06\"\u003e\u003ccode\u003e7db7170\u003c/code\u003e\u003c/a\u003e [ty] Support TypedDict key completions in incomplete, anonymous contexts (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25\"\u003e#25\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/bb3dd535f1c5a83e2e56ac93a771fadbeeceebd0\"\u003e\u003ccode\u003ebb3dd53\u003c/code\u003e\u003c/a\u003e [ty] Run full iteration analysis on narrowed typevars (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25143\"\u003e#25143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/828cdb7732efcb16a53f4ee5f011cf653b834d1a\"\u003e\u003ccode\u003e828cdb7\u003c/code\u003e\u003c/a\u003e [ty] Isolate file-watching test environment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25151\"\u003e#25151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/89e1d8670ea4d3af60c8143ee552dc750200718d\"\u003e\u003ccode\u003e89e1d86\u003c/code\u003e\u003c/a\u003e [ty] Preserve TypedDict keys through dict unpacking (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24523\"\u003e#24523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/86f3064d6fffa5697d174f26b840bd6857b381da\"\u003e\u003ccode\u003e86f3064\u003c/code\u003e\u003c/a\u003e [ty] Avoid accessing \u003ccode\u003eargs[0]\u003c/code\u003e for \u003ccode\u003estatic_assert\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25149\"\u003e#25149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/ed819f947dc27e36eac8bb3134153c4668d76a3a\"\u003e\u003ccode\u003eed819f9\u003c/code\u003e\u003c/a\u003e [ty] Treat custom enum \u003ccode\u003e__new__\u003c/code\u003e values as dynamic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/25136\"\u003e#25136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.12...0.15.13\"\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/Antoni2487/memos-cafe/pull/11","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Antoni2487%2Fmemos-cafe/issues/11","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/11/packages"}}]}