{"id":29878,"name":"pytest-env","ecosystem":"pip","repository_url":"https://github.com/pytest-dev/pytest-env","issues_count":113,"created_at":"2025-06-07T06:23:26.092Z","updated_at":"2025-06-07T06:23:26.092Z","purl":"pkg:pypi/pytest-env","metadata":{"id":2885344,"name":"pytest-env","ecosystem":"pypi","description":"pytest plugin that allows you to add environment variables.","homepage":"https://github.com/pytest-dev/pytest-env","licenses":"MIT License  Copyright (c) 2010-202x The pytest-env developers  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.","normalized_licenses":["Other"],"repository_url":"https://github.com/pytest-dev/pytest-env","keywords_array":["env","pytest"],"namespace":null,"versions_count":17,"first_release_published_at":"2015-02-05T22:26:26.000Z","latest_release_published_at":"2024-09-17T22:39:16.000Z","latest_release_number":"1.1.5","last_synced_at":"2025-05-26T21:24:59.190Z","created_at":"2022-04-10T12:19:44.517Z","updated_at":"2025-05-26T21:25:00.065Z","registry_url":"https://pypi.org/project/pytest-env/","install_command":"pip install pytest-env --index-url https://pypi.org/simple","documentation_url":"https://pytest-env.readthedocs.io/","metadata":{"funding":null,"documentation":null,"classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","License :: OSI Approved :: MIT License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Programming Language :: Python :: Implementation :: CPython","Topic :: Software Development :: Libraries :: Python Modules"],"normalized_name":"pytest-env"},"repo_metadata":{"id":61888131,"uuid":"549162933","full_name":"pytest-dev/pytest-env","owner":"pytest-dev","description":"pytest plugin to set environment variables in pytest.ini or pyproject.toml file","archived":false,"fork":false,"pushed_at":"2025-05-26T20:07:00.000Z","size":153,"stargazers_count":182,"open_issues_count":3,"forks_count":6,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-05-26T21:20:43.543Z","etag":null,"topics":["plugin","pytest","python"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/pytest-env/","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/pytest-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"tidelift":"pypi/pytest-env"}},"created_at":"2022-10-10T19:18:13.000Z","updated_at":"2025-05-13T14:50:42.000Z","dependencies_parsed_at":"2023-09-27T03:25:57.864Z","dependency_job_id":"f2e41faa-d134-4c8b-9131-f83cdd4d9543","html_url":"https://github.com/pytest-dev/pytest-env","commit_stats":{"total_commits":89,"total_committers":13,"mean_commits":6.846153846153846,"dds":0.6292134831460674,"last_synced_commit":"7af6ff895881ba9c249dbe82f78be0b4002c37ab"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pytest-dev","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":256514075,"owners_count":22400203,"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":"pytest-dev","name":"pytest-dev","uuid":"8897583","kind":"organization","description":"","email":"pytest-dev@python.org","website":"https://pytest.org","location":"Everywhere","twitter":"pytestdotorg","company":null,"icon_url":"https://avatars.githubusercontent.com/u/8897583?v=4","repositories_count":75,"last_synced_at":"2025-05-24T00:06:58.590Z","metadata":{"has_sponsors_listing":true},"html_url":"https://github.com/pytest-dev","funding_links":["https://github.com/sponsors/pytest-dev"],"total_stars":34572,"followers":612,"following":0,"created_at":"2022-11-02T16:22:53.846Z","updated_at":"2025-05-24T00:06:58.590Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pytest-dev","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pytest-dev/repositories"},"tags":[{"name":"1.1.5","sha":"fb880383654f2b4b964f4218ebf14954e36cc627","kind":"commit","published_at":"2024-09-17T22:17:56.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/1.1.5","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/1.1.5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.5/manifests"},{"name":"1.1.4","sha":"4d5015bd68469f29b1c03ad6ee60bddbae4f5336","kind":"commit","published_at":"2024-09-07T20:41:50.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/1.1.4","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/1.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.4/manifests"},{"name":"1.1.3","sha":"f0424aa305c66f3e9278c03e842e4489b48fa10a","kind":"commit","published_at":"2023-11-28T04:10:25.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/1.1.3","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/1.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.3/manifests"},{"name":"1.1.2","sha":"53b1c3f7001403940ce8f7f25abc9fce5ec6723e","kind":"commit","published_at":"2023-11-28T04:09:18.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/1.1.2","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.2/manifests"},{"name":"1.1.1","sha":"4e233bf946e6c6931e71dbf8f76ab848b0dd64dc","kind":"commit","published_at":"2023-10-30T19:04:46.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/1.1.1","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.1/manifests"},{"name":"1.1.0","sha":"81a2692250bee43ff9d8da1d4ea163b6d82d65a6","kind":"commit","published_at":"2023-10-24T01:21:28.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/1.1.0","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.1.0/manifests"},{"name":"1.0.1","sha":"44432be7d74b9d20213ac41cba3dc474ca65bb4d","kind":"commit","published_at":"2023-08-24T13:44:16.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/1.0.1","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.0.1/manifests"},{"name":"1.0.0","sha":"fec7a495453dfc1dd2b08ae1f444c936494d63b7","kind":"commit","published_at":"2023-08-22T14:58:08.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/1.0.0","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/1.0.0/manifests"},{"name":"0.8.2","sha":"f56d3935ff8ca99f087f8fd8c38f028f4375b2c7","kind":"commit","published_at":"2023-06-15T22:53:24.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/0.8.2","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/0.8.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/0.8.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/0.8.2/manifests"},{"name":"0.8.1","sha":"53349c7a3bb42789cad6dc30097ba9ffa338a640","kind":"commit","published_at":"2022-10-23T22:48:19.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/0.8.1","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/0.8.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/0.8.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/0.8.1/manifests"},{"name":"0.8.0","sha":"83f64b1f6eae1d0043bd72ef5726a4a5626ff695","kind":"commit","published_at":"2022-10-23T20:38:20.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/0.8.0","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/0.8.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/0.8.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/0.8.0/manifests"},{"name":"0.7.0","sha":"59d909bf92ef51adff792ebb87cbadfc419e20c0","kind":"commit","published_at":"2022-10-22T19:38:45.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/0.7.0","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/0.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/0.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/0.7.0/manifests"},{"name":"0.6.2","sha":"afb13a0e908f649b69273f299262ac12f1b71113","kind":"commit","published_at":"2017-06-16T19:37:39.000Z","download_url":"https://codeload.github.com/pytest-dev/pytest-env/tar.gz/0.6.2","html_url":"https://github.com/pytest-dev/pytest-env/releases/tag/0.6.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/0.6.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pytest-dev%2Fpytest-env/tags/0.6.2/manifests"}]},"repo_metadata_updated_at":"2025-05-26T21:25:00.064Z","dependent_packages_count":256,"downloads":7033280,"downloads_period":"last-month","dependent_repos_count":3689,"rankings":{"downloads":0.21444323723663156,"dependent_repos_count":0.1647806951614223,"dependent_packages_count":0.11359592957432922,"stargazers_count":7.736333511613255,"forks_count":14.245880765358269,"docker_downloads_count":0.6421880440759818,"average":3.8528703638366477},"purl":"pkg:pypi/pytest-env","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pytest-env","docker_dependents_count":70,"docker_downloads_count":127703,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pytest-env","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pytest-env/dependencies","status":null,"funding_links":["https://tidelift.com/funding/github/pypi/pytest-env","https://github.com/sponsors/pytest-dev"],"critical":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pytest-env/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pytest-env/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pytest-env/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pytest-env/related_packages","maintainers":[{"uuid":"nicoddemus","login":"nicoddemus","name":null,"email":null,"url":null,"packages_count":53,"html_url":"https://pypi.org/user/nicoddemus/","role":null,"created_at":"2023-02-05T22:20:46.090Z","updated_at":"2023-02-05T22:20:46.090Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/nicoddemus/packages"},{"uuid":"gaborbernat","login":"gaborbernat","name":null,"email":null,"url":null,"packages_count":18,"html_url":"https://pypi.org/user/gaborbernat/","role":null,"created_at":"2023-02-05T22:20:46.083Z","updated_at":"2023-02-05T22:20:46.083Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/gaborbernat/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":689700,"maintainers_count":292477,"namespaces_count":0,"keywords_count":228396,"github":"pypi","metadata":{"funded_packages_count":48936},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-04T05:22:32.052Z","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":72,"unique_repositories_count_past_30_days":1,"recent_issues":[{"uuid":"5109943540","node_id":"PR_kwDOSArv7M78_lCv","number":3474,"state":"open","title":"chore(deps)(deps): Bump the testing group in /backend with 3 updates","user":"dependabot[bot]","labels":["surface:backend","risk:medium","backend"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-08-10T12:13:50.000Z","updated_at":"2026-08-10T12:14:39.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): Bump","group_name":"testing","update_count":3,"packages":[{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-env","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/pytest-dev/pytest-env"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the testing group in /backend with 3 updates: [pytest](https://github.com/pytest-dev/pytest), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) and [pytest-env](https://github.com/pytest-dev/pytest-env).\n\nUpdates `pytest` from 9.0.3 to 9.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.1.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.1 (2026-06-19)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14220\"\u003e#14220\u003c/a\u003e: Fixed a logic bug in \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e which would might cause it to display incorrect \u0026quot;It matches \u003c!-- raw HTML omitted --\u003eFooError()\u003c!-- raw HTML omitted --\u003e which was paired with \u003c!-- raw HTML omitted --\u003eBarError\u003c!-- raw HTML omitted --\u003e\u0026quot; messages.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14591\"\u003e#14591\u003c/a\u003e: Fixed a regression in pytest 9.1.0 which caused overriding a parametrized fixture with an indirect \u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pytest\"\u003e\u003ccode\u003e@​pytest\u003c/code\u003e\u003c/a\u003e.mark.parametrize\u003c!-- raw HTML omitted --\u003e to fail with \u0026quot;duplicate parametrization of '\u0026lt;fixture name\u0026gt;'\u0026quot;.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14606\"\u003e#14606\u003c/a\u003e: Fixed \u003ccode\u003elist-item\u003c/code\u003e typing errors from mypy in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e \u003ccode\u003eargvalues\u003c/code\u003e parameter.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14608\"\u003e#14608\u003c/a\u003e: Fixed a regression in pytest 9.1.0 where \u003ccode\u003econftest.py\u003c/code\u003e files located in \u003ccode\u003e\u0026lt;invocation dir\u0026gt;/test*\u003c/code\u003e were no longer loaded as initial conftests when invoked without arguments.\nThis could cause certain hooks (like \u003ccode\u003epytest_addoption\u003c/code\u003e) in these files to not fire.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.1.0\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.0 (2026-06-13)\u003c/h1\u003e\n\u003ch2\u003eRemovals and backward incompatible breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14533\"\u003e#14533\u003c/a\u003e: When using \u003ccode\u003e--doctest-modules\u003c/code\u003e, autouse fixtures with \u003ccode\u003emodule\u003c/code\u003e, \u003ccode\u003epackage\u003c/code\u003e or \u003ccode\u003esession\u003c/code\u003e scope that are defined inline in Python test modules (not plugins or conftests) will now possibly execute twice.\u003c/p\u003e\n\u003cp\u003eIf this is undesirable, move the fixture definition to a \u003ccode\u003econftest.py\u003c/code\u003e file if possible.\u003c/p\u003e\n\u003cp\u003eTechnical explanation for those interested:\nWhen using \u003c!-- raw HTML omitted --\u003e--doctest-modules\u003c!-- raw HTML omitted --\u003e, pytest possibly collects Python modules twice, once as \u003ccode\u003epytest.Module\u003c/code\u003e and once as a \u003ccode\u003eDoctestModule\u003c/code\u003e (depending on the configuration).\nDue to improvements in pytest's fixture implementation, if e.g. the \u003ccode\u003eDoctestModule\u003c/code\u003e collects a fixture, it is now visible to it only, and not to the \u003ccode\u003eModule\u003c/code\u003e.\nThis means that both need to register the fixtures independently.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations (removal in next major release)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/10819\"\u003e#10819\u003c/a\u003e: Added a deprecation warning for class-scoped fixtures defined as instance methods (without \u003ccode\u003e@classmethod\u003c/code\u003e). Such fixtures set attributes on a different instance than the test methods use, leading to unexpected behavior. Use \u003ccode\u003e@classmethod\u003c/code\u003e decorator instead -- by \u003ccode\u003eyastcher\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003e10819\u003c/code\u003e and \u003ccode\u003e14011\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12882\"\u003e#12882\u003c/a\u003e: Calling \u003ccode\u003erequest.getfixturevalue() \u0026lt;pytest.FixtureRequest.getfixturevalue\u0026gt;\u003c/code\u003e during teardown to request a fixture that was not already requested is now deprecated and will become an error in pytest 10.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003edynamic-fixture-request-during-teardown\u003c/code\u003e for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13409\"\u003e#13409\u003c/a\u003e: Using non-\u003ccode\u003e~collections.abc.Collection\u003c/code\u003e iterables (such as generators, iterators, or custom iterable objects) for the \u003ccode\u003eargvalues\u003c/code\u003e parameter in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e and \u003ccode\u003emetafunc.parametrize \u0026lt;pytest.Metafunc.parametrize\u0026gt;\u003c/code\u003e is now deprecated.\u003c/p\u003e\n\u003cp\u003eThese iterables get exhausted after the first iteration,\nleading to tests getting unexpectedly skipped in cases such as running \u003ccode\u003epytest.main()\u003c/code\u003e multiple times,\nusing class-level parametrize decorators,\nor collecting tests multiple times.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003eparametrize-iterators\u003c/code\u003e for details and suggestions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute is now deprecated.\nUse \u003ccode\u003econfig.getini() \u0026lt;pytest.Config.getini\u0026gt;\u003c/code\u003e to access configuration values instead.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003econfig-inicfg\u003c/code\u003e for more details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14004\"\u003e#14004\u003c/a\u003e: Passing \u003ccode\u003ebaseid\u003c/code\u003e to \u003ccode\u003e~pytest.FixtureDef\u003c/code\u003e or \u003ccode\u003enodeid\u003c/code\u003e strings to fixture registration APIs is now deprecated. These are internal pytest APIs that are used by some plugins.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/cf470ec0bf7eb89cd97dd56df4859eae5db46447\"\u003e\u003ccode\u003ecf470ec\u003c/code\u003e\u003c/a\u003e Prepare release version 9.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/e0c8ce6cc5db1f08363be6f152c32e6838df2690\"\u003e\u003ccode\u003ee0c8ce6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14625\"\u003e#14625\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/a07c31a97...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/1b82d1694fce22385ee7a4287917fbafbaf2e757\"\u003e\u003ccode\u003e1b82d16\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14624\"\u003e#14624\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/b375b79ec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/501c4bc784da3b08bfcaa64858eba5d15dc59e53\"\u003e\u003ccode\u003e501c4bc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14596\"\u003e#14596\u003c/a\u003e from bluetech/doc-classmethod\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b61f588e36e9377c3d1d3f06bece1da0fc31d9ca\"\u003e\u003ccode\u003eb61f588\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14622\"\u003e#14622\u003c/a\u003e from chrisburr/fix-14608-initial-conftest-test-subdir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/9a567e009f4d2da3ce1721c6db3109cb5744d40a\"\u003e\u003ccode\u003e9a567e0\u003c/code\u003e\u003c/a\u003e [automated] Update plugin list (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14617\"\u003e#14617\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14618\"\u003e#14618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ef8b2993e5b48639e4a3d97d0525df9760781384\"\u003e\u003ccode\u003eef8b299\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14620\"\u003e#14620\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/680f9f3ed...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/66abd0784d4cb7c1ba44ab9a8896506cd4985acc\"\u003e\u003ccode\u003e66abd07\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14220\"\u003e#14220\u003c/a\u003e from bysiber/fix-stale-iexp-raisesgroup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/79fbf93b666cac5f27c9dad047943d47b766c8d5\"\u003e\u003ccode\u003e79fbf93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14612\"\u003e#14612\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/974ed48b6...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/0d312eb876177e9f1c04262b54060a41034ebf5c\"\u003e\u003ccode\u003e0d312eb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14611\"\u003e#14611\u003c/a\u003e from bluetech/parametrize-argvalues-typing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.3...9.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-asyncio` from 1.3.0 to 1.4.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-asyncio/releases\"\u003epytest-asyncio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epytest-asyncio v1.4.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0\"\u003e1.4.0\u003c/a\u003e - 2026-05-26\u003c/h1\u003e\n\u003ch2\u003eDeprecated\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOverriding the \u003cem\u003eevent_loop_policy\u003c/em\u003e fixture is deprecated. Use the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook instead. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook to parametrize asyncio tests with custom event loop factories.\u003c/p\u003e\n\u003cp\u003eThe hook returns a mapping of factory names to loop factories, and \u003ccode\u003epytest.mark.asyncio(loop_factories=[...])\u003c/code\u003e selects a subset of configured factories per test. When a single factory is configured, test names are unchanged.\u003c/p\u003e\n\u003cp\u003eSynchronous \u003ccode\u003e@pytest_asyncio.fixture\u003c/code\u003e functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via \u003ccode\u003easyncio.run()\u003c/code\u003e or \u003ccode\u003easyncio.set_event_loop(None)\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved the readability of the warning message that is displayed when \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e is unset (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly import \u003ccode\u003easyncio.AbstractEventLoopPolicy\u003c/code\u003e for type checking to avoid raising\na DeprecationWarning. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394\"\u003e#1394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated minimum supported pytest version to v8.4.0. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397\"\u003e#1397\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a \u003ccode\u003eResourceWarning: unclosed event loop\u003c/code\u003e warning that could occur when a synchronous test called \u003ccode\u003easyncio.run()\u003c/code\u003e or otherwise unset the current event loop after pytest-asyncio had run an async test or fixture. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded dependency on \u003ccode\u003esphinx-tabs \u0026gt;= 3.5\u003c/code\u003e to organize documentation examples into tabs. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395\"\u003e#1395\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio v1.4.0a2\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0a2\"\u003e1.4.0a2\u003c/a\u003e - 2026-05-02\u003c/h1\u003e\n\u003ch2\u003eDeprecated\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOverriding the \u003cem\u003eevent_loop_policy\u003c/em\u003e fixture is deprecated. Use the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook instead. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook to parametrize asyncio tests with custom event loop factories.\u003c/p\u003e\n\u003cp\u003eThe hook returns a mapping of factory names to loop factories, and \u003ccode\u003epytest.mark.asyncio(loop_factories=[...])\u003c/code\u003e selects a subset of configured factories per test. When a single factory is configured, test names are unchanged on pytest 8.4+.\u003c/p\u003e\n\u003cp\u003eSynchronous \u003ccode\u003e@pytest_asyncio.fixture\u003c/code\u003e functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via \u003ccode\u003easyncio.run()\u003c/code\u003e or \u003ccode\u003easyncio.set_event_loop(None)\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved the readability of the warning message that is displayed when \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e is unset (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly import \u003ccode\u003easyncio.AbstractEventLoopPolicy\u003c/code\u003e for type checking to avoid raising\na DeprecationWarning. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394\"\u003e#1394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425\"\u003e\u003ccode\u003e6e14cd2\u003c/code\u003e\u003c/a\u003e chore: Prepare release of v1.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e\"\u003e\u003ccode\u003e4b900fb\u003c/code\u003e\u003c/a\u003e Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf\"\u003e\u003ccode\u003eab9f632\u003c/code\u003e\u003c/a\u003e Build(deps): Bump zipp from 3.23.1 to 4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa\"\u003e\u003ccode\u003ea56fc77\u003c/code\u003e\u003c/a\u003e Build(deps): Bump hypothesis from 6.152.6 to 6.152.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d\"\u003e\u003ccode\u003ee8bae9b\u003c/code\u003e\u003c/a\u003e Build(deps): Bump requests from 2.34.0 to 2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de\"\u003e\u003ccode\u003efc43340\u003c/code\u003e\u003c/a\u003e Build(deps): Bump idna from 3.14 to 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b\"\u003e\u003ccode\u003e762eaf5\u003c/code\u003e\u003c/a\u003e Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f\"\u003e\u003ccode\u003eb62e222\u003c/code\u003e\u003c/a\u003e Build(deps): Bump click from 8.3.3 to 8.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb\"\u003e\u003ccode\u003e9190447\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pydantic from 2.13.3 to 2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236\"\u003e\u003ccode\u003e82a393c\u003c/code\u003e\u003c/a\u003e ci: Remove unnecessary debug output.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.6.0 to 1.7.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-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.7.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/216\"\u003epytest-dev/pytest-env#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📦 build: move the testing extra to a dependency group by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/243\"\u003epytest-dev/pytest-env#243\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👷 ci: test against Python 3.15 beta by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/245\"\u003epytest-dev/pytest-env#245\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.6.0...1.7.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.6.0...1.7.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/pytest-dev/pytest-env/commit/db01e70d52e8d0dc61e0a393a6aae20d9c8f8b8c\"\u003e\u003ccode\u003edb01e70\u003c/code\u003e\u003c/a\u003e 👷 ci: test against Python 3.15 beta (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/9e3ce0dc1d1787f507001f6945d4189beb97aa6d\"\u003e\u003ccode\u003e9e3ce0d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/69dae16e3a08073c39c910b02e7514de672ca124\"\u003e\u003ccode\u003e69dae16\u003c/code\u003e\u003c/a\u003e 📦 build: move the testing extra to a dependency group (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/290c20dec06782b60c2466f565045febdb59f5df\"\u003e\u003ccode\u003e290c20d\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.3.1 to 8.3.2 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/c64e6db41c6e71ff334536c60cb5348b95a75957\"\u003e\u003ccode\u003ec64e6db\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.3.0 to 8.3.1 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/23d37acba088cdc1e2639e310f987ae13aed32eb\"\u003e\u003ccode\u003e23d37ac\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/240\"\u003e#240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/82ba4271801991502b8ad0a330fc1e309c3f51ce\"\u003e\u003ccode\u003e82ba427\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.2.0 to 8.3.0 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/1a85be52b402e1b58aab6058ba2b536a039362f4\"\u003e\u003ccode\u003e1a85be5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/238\"\u003e#238\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/63c209343c73ebca58d9f83feaf6d0f6aa2f7186\"\u003e\u003ccode\u003e63c2093\u003c/code\u003e\u003c/a\u003e :moneybag: Surface GitHub Sponsors + thanks.dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/ce3f28bc7dbd65eda26c7ad5ceec3da0efa831a5\"\u003e\u003ccode\u003ece3f28b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/237\"\u003e#237\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.6.0...1.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/srikumarimuddana-lab/spinrvm/pull/3474","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/srikumarimuddana-lab%2Fspinrvm/issues/3474","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3474/packages"},{"uuid":"4514318366","node_id":"PR_kwDOERpozs7e6EfY","number":1059,"state":"open","title":"Deps: Bump the python-packages group with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-25T04:41:50.000Z","updated_at":"2026-05-25T04:43:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Deps: Bump","group_name":"python-packages","update_count":27,"packages":[{"name":"django","old_version":"4.2.30","new_version":"5.2.14","repository_url":"https://github.com/django/django"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"weasyprint","old_version":"66.0","new_version":"68.1","repository_url":"https://github.com/Kozea/WeasyPrint"},{"name":"pylint","old_version":"3.3.9","new_version":"4.0.5","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-django","old_version":"4.11.1","new_version":"4.12.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"pytest-env","old_version":"1.1.5","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"pontos","old_version":"26.2.0","new_version":"26.5.0","repository_url":"https://github.com/greenbone/pontos"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"astroid","old_version":"3.3.11","new_version":"4.0.4","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"certifi","old_version":"2026.4.22","new_version":"2026.5.20","repository_url":"https://github.com/certifi/python-certifi"},{"name":"coverage","old_version":"7.10.7","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cssselect2","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.63.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"idna","old_version":"3.15","new_version":"3.16","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"isort","old_version":"6.1.0","new_version":"8.0.1","repository_url":"https://github.com/PyCQA/isort"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.1","repository_url":"https://github.com/lxml/lxml"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.9.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pycparser","old_version":"2.23","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydyf","old_version":"0.11.0","new_version":"0.12.1","repository_url":"https://github.com/CourtBouillon/pydyf"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.15.13","new_version":"0.15.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tinyhtml5","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/CourtBouillon/tinyhtml5"},{"name":"zopfli","old_version":"0.2.3.post1","new_version":"0.4.1","repository_url":"https://github.com/fonttools/py-zopfli"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 27 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `4.2.30` | `5.2.14` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [weasyprint](https://github.com/Kozea/WeasyPrint) | `66.0` | `68.1` |\n| [pylint](https://github.com/pylint-dev/pylint) | `3.3.9` | `4.0.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.3` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.11.1` | `4.12.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.1.5` | `1.6.0` |\n| [pontos](https://github.com/greenbone/pontos) | `26.2.0` | `26.5.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [astroid](https://github.com/pylint-dev/astroid) | `3.3.11` | `4.0.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.5.20` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.7` | `7.14.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.8.0` | `0.9.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.63.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.16` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.1.0` | `8.0.1` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.2.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.9.6` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.23` | `3.0` |\n| [pydyf](https://github.com/CourtBouillon/pydyf) | `0.11.0` | `0.12.1` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.13` | `0.15.14` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tinyhtml5](https://github.com/CourtBouillon/tinyhtml5) | `2.0.0` | `2.1.0` |\n| [zopfli](https://github.com/fonttools/py-zopfli) | `0.2.3.post1` | `0.4.1` |\n\nUpdates `django` from 4.2.30 to 5.2.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/024c26b1e77ea5b1b158265167ade47927a64c06\"\u003e\u003ccode\u003e024c26b\u003c/code\u003e\u003c/a\u003e [5.2.x] Bumped version for 5.2.14 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2115d4eaee15107f5cd290d7cfcc5ffe3ad43661\"\u003e\u003ccode\u003e2115d4e\u003c/code\u003e\u003c/a\u003e [5.2.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/47cf968c125e3fab317e10fe150ec479e745f995\"\u003e\u003ccode\u003e47cf968\u003c/code\u003e\u003c/a\u003e [5.2.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/2ec27eda3ba6c14f0856e6e3eb1df07c41fd95e6\"\u003e\u003ccode\u003e2ec27ed\u003c/code\u003e\u003c/a\u003e [5.2.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/ed18840c8cd1be81fdb3955cbfc9459989d6df68\"\u003e\u003ccode\u003eed18840\u003c/code\u003e\u003c/a\u003e [5.2.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/de3f622b7fa72aee68650f15263f2788b626680a\"\u003e\u003ccode\u003ede3f622\u003c/code\u003e\u003c/a\u003e [5.2.x] Added stub release notes and release date for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fb61c8a6e902abc885048a1a78592a4bd4329f87\"\u003e\u003ccode\u003efb61c8a\u003c/code\u003e\u003c/a\u003e [5.2.x] Refs CVE-2026-4292 -- Isolated new test in AdminViewListEditable.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/bd1a7583061a96059ea560eb7b59bebce4240778\"\u003e\u003ccode\u003ebd1a758\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed two issues in release helper scripts/verify_release.sh.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/da57aaad76e674fdb01b741974acf229d3ac4132\"\u003e\u003ccode\u003eda57aaa\u003c/code\u003e\u003c/a\u003e [5.2.x] Added CVE-2026-3902, CVE-2026-4277, CVE-2026-4292, CVE-2026-33033, an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9a8bdbc4839a442b1a0453bd8ed38def4776139\"\u003e\u003ccode\u003ec9a8bdb\u003c/code\u003e\u003c/a\u003e [5.2.x] Post-release version bump.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/4.2.30...5.2.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 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/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values 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/9928\"\u003eencode/django-rest-framework#9928\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.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.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 Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support 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/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field 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/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format 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/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e 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/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher 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/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation 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/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `weasyprint` from 66.0 to 68.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/WeasyPrint/releases\"\u003eweasyprint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev68.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2662\"\u003e#2662\u003c/a\u003e: Don’t crash when SVG clip paths are not in defs tags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2665\"\u003e#2665\u003c/a\u003e: Fix position of box bounding box\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2663\"\u003e#2663\u003c/a\u003e: Fix transparency with Acrobat and Edge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2666\"\u003e#2666\u003c/a\u003e: Don’t rely on random default font to define test page size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2670\"\u003e#2670\u003c/a\u003e: Fix pattern detection of URL schemes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/pull/2671\"\u003e#2671\u003c/a\u003e: Improve API compatibility between URLFetcherResponse and addinfourl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2672\"\u003e#2672\u003c/a\u003e: Fix charset for old URL fetcher requests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/pull/2675\"\u003e#2675\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2673\"\u003e#2673\u003c/a\u003e: Fix calc for many properties\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eGuillaume Ayoub\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBackers and sponsors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpacinov\u003c/li\u003e\n\u003cli\u003eSyslifters\u003c/li\u003e\n\u003cli\u003eKobalt\u003c/li\u003e\n\u003cli\u003eSimon Sapin\u003c/li\u003e\n\u003cli\u003eGrip Angebotssoftware\u003c/li\u003e\n\u003cli\u003eManuel Barkhau\u003c/li\u003e\n\u003cli\u003eSimonsoft\u003c/li\u003e\n\u003cli\u003eKontextWork\u003c/li\u003e\n\u003cli\u003eMenutech\u003c/li\u003e\n\u003cli\u003eTrainingSparkle\u003c/li\u003e\n\u003cli\u003eHealthchecks.io\u003c/li\u003e\n\u003cli\u003eMethod B\u003c/li\u003e\n\u003cli\u003eFieldHub\u003c/li\u003e\n\u003cli\u003eHammerbacher\u003c/li\u003e\n\u003cli\u003eYanal-Yves Fargialla\u003c/li\u003e\n\u003cli\u003eMorntag\u003c/li\u003e\n\u003cli\u003ePiloterr\u003c/li\u003e\n\u003cli\u003eXavid\u003c/li\u003e\n\u003cli\u003eCharlie S.\u003c/li\u003e\n\u003cli\u003eProthesis Dental Solutions\u003c/li\u003e\n\u003cli\u003eKai DeLorenzo\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev68.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eThis is a security update (CVE-2025-68616).\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eWe strongly recommend to upgrade WeasyPrint to the latest version if you use the \u003ccode\u003edefault_url_fetcher\u003c/code\u003e function in your custom URL fetcher, or if you use the \u003ccode\u003eallowed_protocols\u003c/code\u003e parameter of the \u003ccode\u003edefault_url_fetcher\u003c/code\u003e function.\u003c/p\u003e\n\u003cp\u003eRead about this release \u003ca href=\"https://www.courtbouillon.org/blog/00061-weasyprint-68/\"\u003eon our blog\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eSecurity\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/Kozea/WeasyPrint/blob/main/docs/changelog.rst\"\u003eweasyprint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 68.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-06.\u003c/p\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#2662](https://github.com/Kozea/WeasyPrint/issues/2662) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2662\u0026gt;\u003c/code\u003e_:\nDon’t crash when SVG clip paths are not in defs tags\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2665](https://github.com/Kozea/WeasyPrint/issues/2665) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2665\u0026gt;\u003c/code\u003e_:\nFix position of box bounding box\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2663](https://github.com/Kozea/WeasyPrint/issues/2663) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2663\u0026gt;\u003c/code\u003e_:\nFix transparency with Acrobat and Edge\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2666](https://github.com/Kozea/WeasyPrint/issues/2666) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2666\u0026gt;\u003c/code\u003e_:\nDon’t rely on random default font to define test page size\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2670](https://github.com/Kozea/WeasyPrint/issues/2670) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2670\u0026gt;\u003c/code\u003e_:\nFix pattern detection of URL schemes\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2671](https://github.com/Kozea/WeasyPrint/issues/2671) \u0026lt;https://github.com/Kozea/WeasyPrint/pull/2671\u0026gt;\u003c/code\u003e_:\nImprove API compatibility between URLFetcherResponse and addinfourl\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2672](https://github.com/Kozea/WeasyPrint/issues/2672) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2672\u0026gt;\u003c/code\u003e_:\nFix charset for old URL fetcher requests\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2675](https://github.com/Kozea/WeasyPrint/issues/2675) \u0026lt;https://github.com/Kozea/WeasyPrint/pull/2675\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#2673](https://github.com/Kozea/WeasyPrint/issues/2673) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2673\u0026gt;\u003c/code\u003e\u003c/em\u003e:\nFix calc for many properties\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eContributors:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGuillaume Ayoub\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBackers and sponsors:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSpacinov\u003c/li\u003e\n\u003cli\u003eSyslifters\u003c/li\u003e\n\u003cli\u003eKobalt\u003c/li\u003e\n\u003cli\u003eSimon Sapin\u003c/li\u003e\n\u003cli\u003eGrip Angebotssoftware\u003c/li\u003e\n\u003cli\u003eManuel Barkhau\u003c/li\u003e\n\u003cli\u003eSimonsoft\u003c/li\u003e\n\u003cli\u003eKontextWork\u003c/li\u003e\n\u003cli\u003eMenutech\u003c/li\u003e\n\u003cli\u003eTrainingSparkle\u003c/li\u003e\n\u003cli\u003eHealthchecks.io\u003c/li\u003e\n\u003cli\u003eMethod B\u003c/li\u003e\n\u003cli\u003eFieldHub\u003c/li\u003e\n\u003cli\u003eHammerbacher\u003c/li\u003e\n\u003cli\u003eYanal-Yves Fargialla\u003c/li\u003e\n\u003cli\u003eMorntag\u003c/li\u003e\n\u003cli\u003ePiloterr\u003c/li\u003e\n\u003cli\u003eXavid\u003c/li\u003e\n\u003cli\u003eCharlie S.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/88d466df43b205c6abbc385e2832cbe6c77aeddc\"\u003e\u003ccode\u003e88d466d\u003c/code\u003e\u003c/a\u003e Version 68.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/d5dab6e9f173826208082f24546977927d9c3c0c\"\u003e\u003ccode\u003ed5dab6e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2675\"\u003e#2675\u003c/a\u003e from Kozea/fix-calc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/e752cb3fde54d13cdc5eb4a7fdb80fd172a3c28b\"\u003e\u003ccode\u003ee752cb3\u003c/code\u003e\u003c/a\u003e Allow calc for more properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/66928cec7a2b000c706b5699518adbcedeff6e71\"\u003e\u003ccode\u003e66928ce\u003c/code\u003e\u003c/a\u003e Allow calc for preferred content width\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/c155e217b8ff1624f536113ab54622effece3ad8\"\u003e\u003ccode\u003ec155e21\u003c/code\u003e\u003c/a\u003e Allow calc for text-underline-offset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/9f5ca24e816a250b3c35cc5dda4b871cbc8d829a\"\u003e\u003ccode\u003e9f5ca24\u003c/code\u003e\u003c/a\u003e Allow calc for text-decoration-thickness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/b2acd6d5eb7fc00920a883169b62ad13394e1f38\"\u003e\u003ccode\u003eb2acd6d\u003c/code\u003e\u003c/a\u003e Allow calc for hyphenate-limit-zone\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/321bcf696acb710115a467d04fc0b5f640faf627\"\u003e\u003ccode\u003e321bcf6\u003c/code\u003e\u003c/a\u003e Simplify, test and fix wrong calc() values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/38d3f53154a2c3c3d7b29dd11e01ed21f61fc2ab\"\u003e\u003ccode\u003e38d3f53\u003c/code\u003e\u003c/a\u003e Fix and test calc() function for table width\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/4dfd05f13dfeadf36d44e8f72ee3f2df0b4c6945\"\u003e\u003ccode\u003e4dfd05f\u003c/code\u003e\u003c/a\u003e Don’t iterate over all lines when trying to report footnotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/WeasyPrint/compare/v66.0...v68.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pylint` from 3.3.9 to 4.0.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/88e1ab7545a4af4aea15c305a154c164a95ab842\"\u003e\u003ccode\u003e88e1ab7\u003c/code\u003e\u003c/a\u003e Bump pylint to 4.0.5, update changelog (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10860\"\u003e#10860\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/d96d489a1743d32b6bfa53fc0f69a4333209a146\"\u003e\u003ccode\u003ed96d489\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Relax isort version constraint to allow isort 8 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/0b08ccb014c265700f244a885bdcbdfa3a03de46\"\u003e\u003ccode\u003e0b08ccb\u003c/code\u003e\u003c/a\u003e Fix dynamic color mapping for \u0026quot;fail-on\u0026quot; messages when using multiple reporter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/154dba43276e8232a2e1cb8f90bfcc63886f3460\"\u003e\u003ccode\u003e154dba4\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix FP for \u003ccode\u003einvalid-name\u003c/code\u003e with \u003ccode\u003etyping.Final\u003c/code\u003e on...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/7b73bfdedf275935b9c5b43a6aeda5cc648b4847\"\u003e\u003ccode\u003e7b73bfd\u003c/code\u003e\u003c/a\u003e Disable unspecified-encoding for py-version above Python 3.15 (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10800\"\u003e#10800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/4cc98be8b7786dbc6692493fe9cedb8585af5518\"\u003e\u003ccode\u003e4cc98be\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix setting options for import order checker (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f0d30a27b510d69f846e3aaa0054cf0a1412923c\"\u003e\u003ccode\u003ef0d30a2\u003c/code\u003e\u003c/a\u003e Sync astroid version with requirements file again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/38bdf024648724e6aea017e62d3b57cb44097ec3\"\u003e\u003ccode\u003e38bdf02\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix \u003ccode\u003elogging-unsupported-format\u003c/code\u003e when logging ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f08c33ae3e691eed868e49c0d15270dc6e6a0d6c\"\u003e\u003ccode\u003ef08c33a\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Properly detect \u003ccode\u003eself.fail()\u003c/code\u003e as a terminating...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/e16f942166511d6fb4427e503a734152fae0c4fe\"\u003e\u003ccode\u003ee16f942\u003c/code\u003e\u003c/a\u003e Bump pylint to 4.0.4, update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pylint-dev/pylint/compare/v3.3.9...v4.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.3\"\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.11.1 to 4.12.0\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.12.0 (2026-02-14)\u003c/h2\u003e\n\u003cp\u003eCompatibility\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficial Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9, minimum version is now Python 3.10.\u003c/li\u003e\n\u003cli\u003eOfficial Django 6.0 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements\n^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe :ref:\u003ccode\u003emultiple databases \u0026lt;multi-db\u0026gt;\u003c/code\u003e support added in v4.3.0 is no longer considered experimental.\u003c/li\u003e\n\u003cli\u003eAdded :func:\u003ccode\u003e@pytest.mark.django_isolate_apps \u0026lt;pytest.mark.django_isolate_apps\u0026gt;\u003c/code\u003e\nfor isolating Django's app registry in pytest tests, and a\n:fixture:\u003ccode\u003edjango_isolated_apps\u003c/code\u003e fixture to access the isolated Apps registry instance if needed.\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/a2a94956cc24bb30030510710f0f27e61efb0cf0\"\u003e\u003ccode\u003ea2a9495\u003c/code\u003e\u003c/a\u003e Release 4.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/020bc237ac7be78ab3a2780d07637f77166a6263\"\u003e\u003ccode\u003e020bc23\u003c/code\u003e\u003c/a\u003e tests: make sure access to default can also be blocked\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/bcefbe832468f764b0f2665548aae8a9f75820a7\"\u003e\u003ccode\u003ebcefbe8\u003c/code\u003e\u003c/a\u003e Add support for isolating apps in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/39c8dcc249d5c103d29d170a5ad63a2fe7067049\"\u003e\u003ccode\u003e39c8dcc\u003c/code\u003e\u003c/a\u003e plugin: add a note why we reorder tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/1830acd6193ad6d851131c9ed805c003c10ce27a\"\u003e\u003ccode\u003e1830acd\u003c/code\u003e\u003c/a\u003e pyproject.toml: require pytest 9 for self tests, switch to native toml config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/f19da084b9b8b131c5ae178f1a8a907ec6e3567b\"\u003e\u003ccode\u003ef19da08\u003c/code\u003e\u003c/a\u003e Fix the order of the test cases that use the live_server fixture\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/92858eed573ce1786d0f67d242426c7f8f75dd7b\"\u003e\u003ccode\u003e92858ee\u003c/code\u003e\u003c/a\u003e docs: add pytest 9.0+ native TOML configuration format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/3f550d93947acda430c27be578b7619c25abddc8\"\u003e\u003ccode\u003e3f550d9\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/1f50dd29b8778e645ca7a88a285b30a9c788afc4\"\u003e\u003ccode\u003e1f50dd2\u003c/code\u003e\u003c/a\u003e Drop obsolete traces of Django 5.0 in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/247ec1c365da3d25f230dde22b7a0e1805749d09\"\u003e\u003ccode\u003e247ec1c\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ePytestCollectionWarning\u003c/code\u003e for \u003ccode\u003eTestRunner\u003c/code\u003e class (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-django/issues/1259\"\u003e#1259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-django/compare/v4.11.1...v4.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.1.5 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 build(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/192\"\u003epytest-dev/pytest-env#192\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.1.5...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pontos` from 26.2.0 to 26.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/greenbone/pontos/releases\"\u003epontos's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epontos 26.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.3..26.5.0\"\u003e26.5.0\u003c/a\u003e - 2026-05-19\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:construction_worker: Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u0026quot;Status Change\u0026quot; to \u0026quot;CVE Status Change\u0026quot; by \u003ca href=\"https://github.com/n-thumann\"\u003e\u003ccode\u003e@​n-thumann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:ship: Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump urllib3 from 2.6.3 to 2.7.0 by \u003ca href=\"https://github.com/dependabot%5Bbot%5D\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1217\"\u003e#1217\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.2..26.4.3\"\u003e26.4.3\u003c/a\u003e - 2026-04-29\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:sparkles: Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCVE Change event name \u0026quot;Data Remediation\u0026quot; by \u003ca href=\"https://github.com/n-thumann\"\u003e\u003ccode\u003e@​n-thumann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1214\"\u003e#1214\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.1..26.4.2\"\u003e26.4.2\u003c/a\u003e - 2026-04-27\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:sparkles: Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTwo test cases for XML files by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1211\"\u003e#1211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:construction_worker: Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove XML declarations from templates by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/9e2d78c64bcd5ffc4fb793d3770bdb409cf56b1e\"\u003e9e2d78c\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:bug: Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent duplication and adding of XML declarations by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/ee996b5771ddb3e0183b00ad34ffda45988d6dbc\"\u003eee996b5\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:wrench: Miscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse git-cliff for release changelog generation by \u003ca href=\"https://github.com/bjoernricks\"\u003e\u003ccode\u003e@​bjoernricks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/af9e7f10db1b8cab9912e0c0827380feab952194\"\u003eaf9e7f1\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the conventional commits workflow by \u003ca href=\"https://github.com/bjoernricks\"\u003e\u003ccode\u003e@​bjoernricks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1210\"\u003e#1210\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:ship: Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 8 updates by \u003ca href=\"https://github.com/dependabot%5Bbot%5D\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1209\"\u003e#1209\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.1\u003c/h2\u003e\n\u003ch2\u003e[26.4.1] - 2026-04-21\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/greenbone/pontos/commit/a380de64b4e171a476b1cf3172319ee180ed818f\"\u003e\u003ccode\u003ea380de6\u003c/code\u003e\u003c/a\u003e Automatic release to 26.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/12b9dd283e3d261098719ac8ce94625f73e98684\"\u003e\u003ccode\u003e12b9dd2\u003c/code\u003e\u003c/a\u003e Change: Rename \u0026quot;Status Change\u0026quot; to \u0026quot;CVE Status Change\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/fd0a178d18da0d3ead9de7c1d9933364d6cfafac\"\u003e\u003ccode\u003efd0a178\u003c/code\u003e\u003c/a\u003e Deps: Bump urllib3 from 2.6.3 to 2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/00adf5473d50e7aa0e0839984a8ba44447e28c0d\"\u003e\u003ccode\u003e00adf54\u003c/code\u003e\u003c/a\u003e Update: Greenbone license header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/a793376e247ac9a8e0994d1ba56cd2e44bbaf575\"\u003e\u003ccode\u003ea793376\u003c/code\u003e\u003c/a\u003e Automatic adjustments after release [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/7e3dffb21ddab71884678eac10215767319d29f4\"\u003e\u003ccode\u003e7e3dffb\u003c/code\u003e\u003c/a\u003e Automatic release to 26.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/f2f04018b6e2eabb1b64123445dadbcfdb85d112\"\u003e\u003ccode\u003ef2f0401\u003c/code\u003e\u003c/a\u003e Add: CVE Change event name \u0026quot;Data Remediation\u0026quot; (\u003ca href=\"https://redirect.github.com/greenbone/pontos/issues/1214\"\u003e#1214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/a81ba0338193a9e889da80825487a86be7179ee2\"\u003e\u003ccode\u003ea81ba03\u003c/code\u003e\u003c/a\u003e Automatic adjustments after release [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/46c3185d68b38c4889db97a0e89fd2622728c341\"\u003e\u003ccode\u003e46c3185\u003c/code\u003e\u003c/a\u003e Automatic release to 26.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/31d04650f4750791cbfdfbc3afa267693e709051\"\u003e\u003ccode\u003e31d0465\u003c/code\u003e\u003c/a\u003e Use snake_case for release-version output variables\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/greenbone/pontos/compare/v26.2.0...v26.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `astroid` from 3.3.11 to 4.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pylint-dev/astroid/releases\"\u003eastroid's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.4\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.4?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-02-07\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eis_namespace()\u003c/code\u003e crash when search locations contain \u003ccode\u003epathlib.Path\u003c/code\u003e objects.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2942\"\u003e#2942\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.3\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.3?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-01-03\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix inference of \u003ccode\u003eIfExp\u003c/code\u003e (ternary expression) nodes to avoid prematurely narrowing\nresults in the face of inference ambiguity.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2899\"\u003e#2899\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix base class inference for dataclasses using the PEP 695 typing syntax.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10788\"\u003epylint-dev/pylint#10788\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.2\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.2?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-11-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHandle FunctionDef blockstart_tolineno edge cases correctly.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2880\"\u003e#2880\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eHTTPMethod\u003c/code\u003e enum support to brain module for Python 3.11+.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10624\"\u003epylint-dev/pylint#10624\u003c/a\u003e\nCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2877\"\u003e#2877\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.1?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress \u003ccode\u003eSyntaxWarning\u003c/code\u003e for invalid escape sequences and return in finally on\nPython 3.14 when parsing modules.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAssign \u003ccode\u003eImport\u003c/code\u003e and \u003ccode\u003eImportFrom\u003c/code\u003e nodes to module locals if used with \u003ccode\u003eglobal\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10632\"\u003epylint-dev/pylint#10632\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.0\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/pylint-dev/astroid/blob/main/ChangeLog\"\u003eastroid's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.4?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-02-07\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eis_namespace()\u003c/code\u003e crash when search locations contain \u003ccode\u003epathlib.Path\u003c/code\u003e objects.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2942\"\u003e#2942\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.3?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-01-03\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix inference of \u003ccode\u003eIfExp\u003c/code\u003e (ternary expression) nodes to avoid prematurely narrowing\nresults in the face of inference ambiguity.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2899\"\u003e#2899\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix base class inference for dataclasses using the PEP 695 typing syntax.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10788\"\u003epylint-dev/pylint#10788\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.2?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-11-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHandle FunctionDef blockstart_tolineno edge cases correctly.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2880\"\u003e#2880\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eHTTPMethod\u003c/code\u003e enum support to brain module for Python 3.11+.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10624\"\u003epylint-dev/pylint#10624\u003c/a\u003e\nCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2877\"\u003e#2877\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.1?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress \u003ccode\u003eSyntaxWarning\u003c/code\u003e for invalid escape sequences and return in finally on\nPython 3.14 when parsing modules.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAssign \u003ccode\u003eImport\u003c/code\u003e and \u003ccode\u003eImportFrom\u003c/code\u003e nodes to module locals if used with \u003ccode\u003eglobal\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10632\"\u003epylint-dev/pylint#10632\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.0?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-05\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/pylint-dev/astroid/commit/019feb6018eef32a0e3a25d8153427a537961882\"\u003e\u003ccode\u003e019feb6\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.4, update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/b25ee05e15b70693a4d740ac563568e0b618ec0d\"\u003e\u003ccode\u003eb25ee05\u003c/code\u003e\u003c/a\u003e Fix namespace detection crash (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2949\"\u003e#2949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/b978037e67f233f4366de4ccbcdad2c627474477\"\u003e\u003ccode\u003eb978037\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.3, update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/5476bc3dad1fe83bd4725ae284229a51326bd97c\"\u003e\u003ccode\u003e5476bc3\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Wrong inference with default argument values (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/ae761dca40d1aa1b7e7b941e535a819acd83f9a5\"\u003e\u003ccode\u003eae761dc\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix base class inference for dataclasses with PE...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/077c51fa1eb737a13d6888873dc432cf8cbbe9e0\"\u003e\u003ccode\u003e077c51f\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] [typing] Add sys check guard for typing.Self for...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/f3255d1611277ecc3d6f338d551ce8437f66ae72\"\u003e\u003ccode\u003ef3255d1\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Skip mypy install for pypy (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/d2823f2cb764b3d63c91998f6cd392629147c095\"\u003e\u003ccode\u003ed2823f2\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] [ci] Fix windows cache key (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/05c79e1e57da03875a8fd8a30715688f179585da\"\u003e\u003ccode\u003e05c79e1\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Improve self argument typing (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2904\"\u003e#2904\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/a068430290b375a06f6eccdcea7d5026995172ba\"\u003e\u003ccode\u003ea068430\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.2, update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pylint-dev/astroid/compare/v3.3.11...v4.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\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 `coverage` from 7.10.7 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\u003ch2\u003eVersion 7.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\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/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.10.7...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cssselect2` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/cssselect2/releases\"\u003ecssselect2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, support 3.14\u003c/li\u003e\n\u003cli\u003eSupport :host\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/Kozea/cssselect2/blob/main/docs/changelog.rst\"\u003ecssselect2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cp\u003eVersion 0.9.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, support 3.14\u003c/li\u003e\n\u003cli\u003eSupport :host\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.8.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2025-03-05.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.8 and 3.9, support 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eHandle case-sensitive and case-insensitive attribute selectors\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.7.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-09-19.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport :has selector\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.6.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-04-15.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis version deprecates the \u003ccode\u003eiter_ancestors\u003c/code\u003e and \u003ccode\u003eiter_previous_siblings\u003c/code\u003e\nmethods, that will be removed in 0.7.0. Use the \u003ccode\u003ean...\n\n_Description has been truncated_","html_url":"https://github.com/greenbone/pheme/pull/1059","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenbone%2Fpheme/issues/1059","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1059/packages"},{"uuid":"4381203561","node_id":"PR_kwDOPEqTzc7YPwRn","number":10,"state":"open","title":"Bump pytest-env from 1.1.5 to 1.6.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-05T03:03:18.000Z","updated_at":"2026-05-05T03:03:19.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pytest-env","old_version":"1.1.5","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pytest-env](https://github.com/pytest-dev/pytest-env) from 1.1.5 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 build(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/192\"\u003epytest-dev/pytest-env#192\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.1.5...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pytest-env\u0026package-manager=uv\u0026previous-version=1.1.5\u0026new-version=1.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/Rev4nchist/FastMCP/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rev4nchist%2FFastMCP/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"},{"uuid":"4328788762","node_id":"PR_kwDOQnZ8zc7Vn8p7","number":67,"state":"closed","title":"deps(pip): bump the pip-minor-and-patch group across 1 directory with 42 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-25T17:36:23.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-25T17:30:14.000Z","updated_at":"2026-04-25T17:36:25.000Z","time_to_close":369,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(pip): bump","group_name":"pip-minor-and-patch","update_count":42,"packages":[{"name":"dj-database-url","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/jazzband/dj-database-url"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"django-environ","old_version":"0.12.1","new_version":"0.13.0","repository_url":"https://github.com/joke2k/django-environ"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"bandit","old_version":"1.9.3","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"boto3","old_version":"1.42.39","new_version":"1.42.96","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.39","new_version":"1.42.96","repository_url":"https://github.com/boto/botocore"},{"name":"cbor2","old_version":"5.8.0","new_version":"5.9.0","repository_url":"https://github.com/agronholm/cbor2"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.1","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"daphne","old_version":"4.1.2","new_version":"4.2.1","repository_url":"https://github.com/django/daphne"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"filelock","old_version":"3.24.2","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"identify","old_version":"2.6.16","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.11","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"librt","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/mypyc/librt"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"numpy","old_version":"2.4.2","new_version":"2.4.4","repository_url":"https://github.com/numpy/numpy"},{"name":"pathspec","old_version":"1.0.3","new_version":"1.1.0","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"platformdirs","old_version":"4.9.2","new_version":"4.9.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyasn1","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyopenssl","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/pyca/pyopenssl"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.3.2","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.15.1","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/boto/s3transfer"},{"name":"stevedore","old_version":"5.6.0","new_version":"5.7.0"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wheel","old_version":"0.46.3","new_version":"0.47.0","repository_url":"https://github.com/pypa/wheel"},{"name":"zope-interface","old_version":"8.2","new_version":"8.4","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-and-patch group with 42 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dj-database-url](https://github.com/jazzband/dj-database-url) | `3.1.0` | `3.1.2` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.10.9` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [django-environ](https://github.com/joke2k/django-environ) | `0.12.1` | `0.13.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [boto3](https://github.com/boto/boto3) | `1.42.39` | `1.42.96` |\n| [botocore](https://github.com/boto/botocore) | `1.42.39` | `1.42.96` |\n| [cbor2](https://github.com/agronholm/cbor2) | `5.8.0` | `5.9.0` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.3` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [daphne](https://github.com/django/daphne) | `4.1.2` | `4.2.1` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.24.2` | `3.29.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.16` | `2.6.19` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.13` |\n| [librt](https://github.com/mypyc/librt) | `0.8.0` | `0.9.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.2` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.2` | `2.4.4` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.0.3` | `1.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.2` | `4.9.6` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.25.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.2` | `0.6.3` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.12.1` |\n| [pyopenssl](https://github.com/pyca/pyopenssl) | `26.0.0` | `26.1.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.3.2` | `1.6.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.15.12` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.16.1` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.6.0` | `5.7.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250913` | `2.33.0.20260408` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.41.0` | `0.46.0` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.3` | `0.47.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `8.2` | `8.4` |\n\n\nUpdates `dj-database-url` from 3.1.0 to 3.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jazzband/dj-database-url/releases\"\u003edj-database-url's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump cryptography from 46.0.3 to 46.0.5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/293\"\u003ejazzband/dj-database-url#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump django from 5.2.9 to 5.2.11 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/294\"\u003ejazzband/dj-database-url#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump urllib3 from 2.6.2 to 2.6.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/295\"\u003ejazzband/dj-database-url#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump wheel from 0.45.1 to 0.46.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/296\"\u003ejazzband/dj-database-url#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/297\"\u003ejazzband/dj-database-url#297\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/293\"\u003ejazzband/dj-database-url#293\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.1...v3.1.2\"\u003ehttps://github.com/jazzband/dj-database-url/compare/v3.1.1...v3.1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests directory to source distribution by \u003ca href=\"https://github.com/yohaann196\"\u003e\u003ccode\u003e@​yohaann196\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/285\"\u003ejazzband/dj-database-url#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch linting and formatting from flake8+isort+black to ruff; add typos to pre-commit; fix typos by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/281\"\u003ejazzband/dj-database-url#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd project URLs to pyproject.toml by \u003ca href=\"https://github.com/luzfcb\"\u003e\u003ccode\u003e@​luzfcb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/287\"\u003ejazzband/dj-database-url#287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate .pre-commit-config.yaml to use pinned version numbers. by \u003ca href=\"https://github.com/mattseymour\"\u003e\u003ccode\u003e@​mattseymour\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/289\"\u003ejazzband/dj-database-url#289\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/291\"\u003ejazzband/dj-database-url#291\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/yohaann196\"\u003e\u003ccode\u003e@​yohaann196\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/285\"\u003ejazzband/dj-database-url#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/luzfcb\"\u003e\u003ccode\u003e@​luzfcb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/287\"\u003ejazzband/dj-database-url#287\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.1\"\u003ehttps://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md\"\u003edj-database-url's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCHANGELOG\u003c/h1\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e77149f799f971f85d2cd1ccf01dbd3f0eb69cb5\"\u003e\u003ccode\u003ee77149f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/297\"\u003e#297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/6beffe6de6a2d6284d6c5c76ee6753cc8787aee2\"\u003e\u003ccode\u003e6beffe6\u003c/code\u003e\u003c/a\u003e Fix a regression in adding tests/ dir to source package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/f9c31305ae85f1a22d2102da0b83acb577154d97\"\u003e\u003ccode\u003ef9c3130\u003c/code\u003e\u003c/a\u003e Bump wheel from 0.45.1 to 0.46.2 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/5337838ac302faaec32c969712dc44dfe28d4e15\"\u003e\u003ccode\u003e5337838\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.6.2 to 2.6.3 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/6fc366459ff21030c49ba613d1c129f615ee4228\"\u003e\u003ccode\u003e6fc3664\u003c/code\u003e\u003c/a\u003e Bump django from 5.2.9 to 5.2.11 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/19805c97f3667da652ce57df0be0e02a1187d6b8\"\u003e\u003ccode\u003e19805c9\u003c/code\u003e\u003c/a\u003e Bump cryptography from 46.0.3 to 46.0.5 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/1b102cd42868d49321ec10393ecaae5cedb912b5\"\u003e\u003ccode\u003e1b102cd\u003c/code\u003e\u003c/a\u003e Update project URLs in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e41afda72b5ee6e4433ba044fe065afe1399ed48\"\u003e\u003ccode\u003ee41afda\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/291\"\u003e#291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/dba60770813761db92bba5753a6694e25c39a5a0\"\u003e\u003ccode\u003edba6077\u003c/code\u003e\u003c/a\u003e Update .pre-commit-config.yaml to use pinned version numbers. (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e6f4ccc49d31feaab4e9f930525573e60c5c4cfb\"\u003e\u003ccode\u003ee6f4ccc\u003c/code\u003e\u003c/a\u003e Add pytest to dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 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/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values 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/9928\"\u003eencode/django-rest-framework#9928\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.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.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 Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support 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/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field 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/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format 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/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e 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/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher 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/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation 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/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.8 to 3.10.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.9\u003c/h2\u003e\n\u003cp\u003eThis is a micro release of the v3.10.x series.\nHighlights of this release include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious minor bug and doc fixes\u003c/li\u003e\n\u003cli\u003eSecurity hardening validation of cyclers - Removing eval usage\u003c/li\u003e\n\u003cli\u003eSecurity hardening in Latex and PS calls - Removing shell escapes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/dd8d78b8dce60b6c8db86132892577a0b9dbe469\"\u003e\u003ccode\u003edd8d78b\u003c/code\u003e\u003c/a\u003e REL: v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/2fb18915bcfe69a188832c776fe18d88337de9bc\"\u003e\u003ccode\u003e2fb1891\u003c/code\u003e\u003c/a\u003e REL: Release prep v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d0e923abfa016c04901fe4e315b9d215949f6fc5\"\u003e\u003ccode\u003ed0e923a\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.8-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/163793248a5fc9f23a560e45551c44351a8bd716\"\u003e\u003ccode\u003e1637932\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31558\"\u003e#31558\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31556-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a83faacb0dbe7edd1bae38e1e715b77b6aaebb84\"\u003e\u003ccode\u003ea83faac\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31556\"\u003e#31556\u003c/a\u003e: FIX: Inverted PyErr_Occurred check in enum type caster (_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a4f57ab0623f9d26be29e0a3b0de904667c7eeb7\"\u003e\u003ccode\u003ea4f57ab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31545\"\u003e#31545\u003c/a\u003e from ksunden/backport-of-pr-31282-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/063288d0cc912aa2af5cc1b7e7ca3d228d9f8976\"\u003e\u003ccode\u003e063288d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31544\"\u003e#31544\u003c/a\u003e from ksunden/backport-of-pr-31248-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b2ed1969191a03ec8927f96573664474662ab4c1\"\u003e\u003ccode\u003eb2ed196\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31248\"\u003e#31248\u003c/a\u003e: SEC: Remove eval() from validate_cycler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/acc60241a70b920eaf04fce41a8cf0a77010fb7d\"\u003e\u003ccode\u003eacc6024\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31282\"\u003e#31282\u003c/a\u003e from scottshambaugh/tex_no_shell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/e3fb54163b1ce9dbc1a9e8e0973289dc14e366c2\"\u003e\u003ccode\u003ee3fb541\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31078\"\u003e#31078\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31075-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.8...v3.10.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\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/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\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.12.1 to 0.13.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.13.0\u003c/h2\u003e\n\u003ch2\u003e\u003ccode\u003ev0.13.0\u003c/code\u003e_ - 18-February-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded optional warnings when defaults are used\n\u003ccode\u003e[#582](https://github.com/joke2k/django-environ/issues/582) \u0026lt;https://github.com/joke2k/django-environ/pull/582\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echoices\u003c/code\u003e argument support for value validation in \u003ccode\u003eEnv.str(...)\u003c/code\u003e\n\u003ccode\u003e[#555](https://github.com/joke2k/django-environ/issues/555) \u0026lt;https://github.com/joke2k/django-environ/pull/555\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded Valkey support via \u003ccode\u003evalkey://\u003c/code\u003e and \u003ccode\u003evalkeys://\u003c/code\u003e cache URL schemes\n\u003ccode\u003e[#554](https://github.com/joke2k/django-environ/issues/554) \u0026lt;https://github.com/joke2k/django-environ/pull/554\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003erediss://\u003c/code\u003e scheme in channels URL parsing\n\u003ccode\u003e[#573](https://github.com/joke2k/django-environ/issues/573) \u0026lt;https://github.com/joke2k/django-environ/pull/573\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded django-prometheus database backend aliases to DB URL parsing schemes\n\u003ccode\u003e[#559](https://github.com/joke2k/django-environ/issues/559) \u0026lt;https://github.com/joke2k/django-environ/pull/559\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeclared support for Python 3.14\n\u003ccode\u003e[#580](https://github.com/joke2k/django-environ/issues/580) \u0026lt;https://github.com/joke2k/django-environ/pull/580\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eDeclared support for Django 5.2 and Django 6.0\n\u003ccode\u003e[#578](https://github.com/joke2k/django-environ/issues/578) \u0026lt;https://github.com/joke2k/django-environ/pull/578\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved type hint coverage and related lint issues\n\u003ccode\u003e[#546](https://github.com/joke2k/django-environ/issues/546) \u0026lt;https://github.com/joke2k/django-environ/pull/546\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed typos in the FAQ page\n\u003ccode\u003e[#445](https://github.com/joke2k/django-environ/issues/445) \u0026lt;https://github.com/joke2k/django-environ/pull/445\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/django-environ/blob/develop/CHANGELOG.rst\"\u003edjango-environ's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev0.13.0\u003c/code\u003e_ - 18-February-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded optional warnings when defaults are used\n\u003ccode\u003e[#582](https://github.com/joke2k/django-environ/issues/582) \u0026lt;https://github.com/joke2k/django-environ/pull/582\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echoices\u003c/code\u003e argument support for value validation in \u003ccode\u003eEnv.str(...)\u003c/code\u003e\n\u003ccode\u003e[#555](https://github.com/joke2k/django-environ/issues/555) \u0026lt;https://github.com/joke2k/django-environ/pull/555\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded Valkey support via \u003ccode\u003evalkey://\u003c/code\u003e and \u003ccode\u003evalkeys://\u003c/code\u003e cache URL schemes\n\u003ccode\u003e[#554](https://github.com/joke2k/django-environ/issues/554) \u0026lt;https://github.com/joke2k/django-environ/pull/554\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003erediss://\u003c/code\u003e scheme in channels URL parsing\n\u003ccode\u003e[#573](https://github.com/joke2k/django-environ/issues/573) \u0026lt;https://github.com/joke2k/django-environ/pull/573\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded django-prometheus database backend aliases to DB URL parsing schemes\n\u003ccode\u003e[#559](https://github.com/joke2k/django-environ/issues/559) \u0026lt;https://github.com/joke2k/django-environ/pull/559\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeclared support for Python 3.14\n\u003ccode\u003e[#580](https://github.com/joke2k/django-environ/issues/580) \u0026lt;https://github.com/joke2k/django-environ/pull/581\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eDeclared support for Django 5.2 and Django 6.0\n\u003ccode\u003e[#578](https://github.com/joke2k/django-environ/issues/578) \u0026lt;https://github.com/joke2k/django-environ/pull/578\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved type hint coverage and related lint issues\n\u003ccode\u003e[#546](https://github.com/joke2k/django-environ/issues/546) \u0026lt;https://github.com/joke2k/django-environ/pull/546\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed typos in the FAQ page\n\u003ccode\u003e[#445](https://github.com/joke2k/django-environ/issues/445) \u0026lt;https://github.com/joke2k/django-environ/pull/445\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/00746d0f63d37dcafad527ea7a820a46f8fb81e0\"\u003e\u003ccode\u003e00746d0\u003c/code\u003e\u003c/a\u003e docs: add Django 5.2 and 6.0 support to README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/d1f115932aed9d21c38c898c3ae4b4b678cd210d\"\u003e\u003ccode\u003ed1f1159\u003c/code\u003e\u003c/a\u003e Release 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/d82e361ddb7ffdad01451623d806d402c3a657fd\"\u003e\u003ccode\u003ed82e361\u003c/code\u003e\u003c/a\u003e Add optional warnings when defaults are used (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/582\"\u003e#582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/a78f7c888d840c1b1903371f2424ee641906c923\"\u003e\u003ccode\u003ea78f7c8\u003c/code\u003e\u003c/a\u003e Fixed some typos in the FAQ page (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/24b299e002f3bcc14983eef4be770edb143338dc\"\u003e\u003ccode\u003e24b299e\u003c/code\u003e\u003c/a\u003e Feature/add choice parameter and raise an exception if fetched value is not w...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c4414130f4cf11704e9f1ea446c68074f69c0b54\"\u003e\u003ccode\u003ec441413\u003c/code\u003e\u003c/a\u003e Add django-prometheus database backends to DB_SCHEMES (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/559\"\u003e#559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/98a0aad4c10e789d84e572a3f97a5a9cf9080973\"\u003e\u003ccode\u003e98a0aad\u003c/code\u003e\u003c/a\u003e Fix lint issues in environ type hints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/f4e77e41e629ae8631da9582241f7db527085699\"\u003e\u003ccode\u003ef4e77e4\u003c/code\u003e\u003c/a\u003e feat(cache): add valkey and valkeys as allowed schemes (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/554\"\u003e#554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/dd4d308baea427b5e820a8ac326b0d63e557c956\"\u003e\u003ccode\u003edd4d308\u003c/code\u003e\u003c/a\u003e Add type hints (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/3137c4f733f90a14a12da9fc252d446357190537\"\u003e\u003ccode\u003e3137c4f\u003c/code\u003e\u003c/a\u003e Support lower case options for Django Redis cache backend (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.12.1...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.3 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.42.39 to 1.42.96\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/60921ee112275b89a361d137657d9d48daacbf2a\"\u003e\u003ccode\u003e60921ee\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.96'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/508588d61de44577d761094e3f204dd85a0eb3c0\"\u003e\u003ccode\u003e508588d\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.96\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/fd3d17795980826ef2b5e34fd4eb62338d1ecc55\"\u003e\u003ccode\u003efd3d177\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4be6bbd12cb1ad40505dab385bafab62e70a4da8\"\u003e\u003ccode\u003e4be6bbd\u003c/code\u003e\u003c/a\u003e chore: enable dependabot for pre-commit and refresh hook pins (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4775\"\u003e#4775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/a47ce816eb1f088956353335f2bd2cd56b6b1fc6\"\u003e\u003ccode\u003ea47ce81\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4ccdda83164e69faf24839542d20a523c5263465\"\u003e\u003ccode\u003e4ccdda8\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/03cc5cdf7c550b4a36d43f07745f77aa9dbc0c9a\"\u003e\u003ccode\u003e03cc5cd\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.95\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ab160a576b0e6e150a9752837fe5e52961ae7349\"\u003e\u003ccode\u003eab160a5\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/10094042f04226ec32ae43a7051c2635bc033164\"\u003e\u003ccode\u003e1009404\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.94'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0017b80aa909dd8e95cfde8f79345cef8bcafc66\"\u003e\u003ccode\u003e0017b80\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.94' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.42.39...1.42.96\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.42.39 to 1.42.96\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/435c9a3f09d6ef9716e5d8a3c0d4be118cfbfe41\"\u003e\u003ccode\u003e435c9a3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.96'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/804525091b40e8bdfd90f2145ebe73f59c6ba584\"\u003e\u003ccode\u003e8045250\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.96\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/243b48e8f21e9c814e63bbe93221590da6c48904\"\u003e\u003ccode\u003e243b48e\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8ec506c1254150336916f8ed495df6529b9c5fb9\"\u003e\u003ccode\u003e8ec506c\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8ce183e14781ff29cff89057e84b398d0f5f0c81\"\u003e\u003ccode\u003e8ce183e\u003c/code\u003e\u003c/a\u003e chore: enable dependabot for pre-commit and refresh hook pins (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3685\"\u003e#3685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0aaee4ddba63cfd6337907ea8491a97424606586\"\u003e\u003ccode\u003e0aaee4d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/daaf0f37dc534f42953184a0910d9a5ea154a967\"\u003e\u003ccode\u003edaaf0f3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/157860ae07eb2b3f6c32cfaa4f10c48af69a084c\"\u003e\u003ccode\u003e157860a\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.95\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/19a789f6b7050d12b4188589a60efc454fdd6efc\"\u003e\u003ccode\u003e19a789f\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b88d178dd9bd410769f72e45f72e4d8e0716b2c4\"\u003e\u003ccode\u003eb88d178\u003c/code\u003e\u003c/a\u003e Merge customizations for CloudWatch OTel enrichment (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.42.39...1.42.96\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cbor2` from 5.8.0 to 5.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/cbor2/releases\"\u003ecbor2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003emax_depth\u003c/code\u003e decoder parameter to limit the maximum allowed nesting level of containers, with a default value of 400 levels (CVE-2026-26209)\u003c/li\u003e\n\u003cli\u003eChanged the default \u003ccode\u003eread_size\u003c/code\u003e from 4096 to 1 for backwards compatibility. The buffered reads introduced in 5.8.0 could cause issues when code needs to access the stream position after decoding. Users can opt-in to faster decoding by passing \u003ccode\u003eread_size=4096\u003c/code\u003e when they don't need to access the stream directly after decoding. Added a direct read path for \u003ccode\u003eread_size=1\u003c/code\u003e to avoid buffer management overhead. (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/pull/275\"\u003e#275\u003c/a\u003e; PR by \u003ca href=\"https://github.com/andreer\"\u003e\u003ccode\u003e@​andreer\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed C encoder not respecting string referencing when encoding string-type datetimes (tag 0) (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/254\"\u003e#254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a missed check for an exception in the C implementation of \u003ccode\u003eCBOREncoder.encode_shared()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed two reference/memory leaks in the C extension's long string decoder (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/pull/290\"\u003e#290\u003c/a\u003e PR by \u003ca href=\"https://github.com/killiancowan82\"\u003e\u003ccode\u003e@​killiancowan82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed C decoder ignoring the \u003ccode\u003estr_errors\u003c/code\u003e setting when decoding strings, and improved string decoding performance by using stack allocation for small strings and eliminating unnecessary conditionals. Benchmarks show 9-17% faster deserialization. (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/255\"\u003e#255\u003c/a\u003e; PR by \u003ca href=\"https://github.com/andreer\"\u003e\u003ccode\u003e@​andreer\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/93c598838d50b554e242920902aada82d32d55bc\"\u003e\u003ccode\u003e93c5988\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/d903d62c86de118e8abe626596f9be7b98ac44e9\"\u003e\u003ccode\u003ed903d62\u003c/code\u003e\u003c/a\u003e Updated the max_depth default value in the C function signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/2b53b2813d44a7919dae18747b5ac36cf9c5fb87\"\u003e\u003ccode\u003e2b53b28\u003c/code\u003e\u003c/a\u003e Stack allocate small strings (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/a7ac10d5cbb7a8622e8270c201a131ac2abc26c7\"\u003e\u003ccode\u003ea7ac10d\u003c/code\u003e\u003c/a\u003e Upped the max_depth value to 400\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/54c8ed541c5f4842508cace5ff4b2aae54bc731b\"\u003e\u003ccode\u003e54c8ed5\u003c/code\u003e\u003c/a\u003e Fixed reference/memory leaks in decode_definite_long_string (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/a8d92dc3dc00233c796c4abccb5daa31089bf3c0\"\u003e\u003ccode\u003ea8d92dc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/c91aa007117828560329a1624eabc5dad5435ebc\"\u003e\u003ccode\u003ec91aa00\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/53521e7ca96c7a19f8a529fe59ef566212a24b3f\"\u003e\u003ccode\u003e53521e7\u003c/code\u003e\u003c/a\u003e Fixed ssize_t to Py_ssize_t\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/94e0d2125fbfb183606afa9ef07754a8dba50748\"\u003e\u003ccode\u003e94e0d21\u003c/code\u003e\u003c/a\u003e Added missing Python counterpart for max_depth\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/bcb6cea4edde1d00ff4f0eece883dea951f66e1b\"\u003e\u003ccode\u003ebcb6cea\u003c/code\u003e\u003c/a\u003e Added the max_depth decoder parameter\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/cbor2/compare/5.8.0...5.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10151\"\u003ecelery/celery#10151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove on_af...\n\n_Description has been truncated_","html_url":"https://github.com/rahim8050/weather-apis/pull/67","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rahim8050%2Fweather-apis/issues/67","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/67/packages"},{"uuid":"4328664228","node_id":"PR_kwDOQnZ8zc7VnkLt","number":62,"state":"closed","title":"deps(pip): bump the pip-minor-and-patch group across 1 directory with 43 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-25T17:09:06.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-25T16:35:26.000Z","updated_at":"2026-04-25T17:09:08.000Z","time_to_close":2020,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(pip): bump","group_name":"pip-minor-and-patch","update_count":43,"packages":[{"name":"dj-database-url","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/jazzband/dj-database-url"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"django-environ","old_version":"0.12.1","new_version":"0.13.0","repository_url":"https://github.com/joke2k/django-environ"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"bandit","old_version":"1.9.3","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"boto3","old_version":"1.42.39","new_version":"1.42.96","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.39","new_version":"1.42.96","repository_url":"https://github.com/boto/botocore"},{"name":"cbor2","old_version":"5.8.0","new_version":"5.9.0","repository_url":"https://github.com/agronholm/cbor2"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.1","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"daphne","old_version":"4.1.2","new_version":"4.2.1","repository_url":"https://github.com/django/daphne"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"filelock","old_version":"3.24.2","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"identify","old_version":"2.6.16","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.11","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"librt","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/mypyc/librt"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"numpy","old_version":"2.4.2","new_version":"2.4.4","repository_url":"https://github.com/numpy/numpy"},{"name":"pillow","old_version":"12.1.1","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.9.2","new_version":"4.9.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyasn1","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyopenssl","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/pyca/pyopenssl"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.3.2","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.15.1","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/boto/s3transfer"},{"name":"stevedore","old_version":"5.6.0","new_version":"5.7.0"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"ujson","old_version":"5.11.0","new_version":"5.12.0","repository_url":"https://github.com/ultrajson/ultrajson"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wheel","old_version":"0.46.3","new_version":"0.47.0","repository_url":"https://github.com/pypa/wheel"},{"name":"zope-interface","old_version":"8.2","new_version":"8.4","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-and-patch group with 43 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dj-database-url](https://github.com/jazzband/dj-database-url) | `3.1.0` | `3.1.2` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.10.9` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [django-environ](https://github.com/joke2k/django-environ) | `0.12.1` | `0.13.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [boto3](https://github.com/boto/boto3) | `1.42.39` | `1.42.96` |\n| [botocore](https://github.com/boto/botocore) | `1.42.39` | `1.42.96` |\n| [cbor2](https://github.com/agronholm/cbor2) | `5.8.0` | `5.9.0` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.3` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [daphne](https://github.com/django/daphne) | `4.1.2` | `4.2.1` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.24.2` | `3.29.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.16` | `2.6.19` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.13` |\n| [librt](https://github.com/mypyc/librt) | `0.8.0` | `0.9.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.2` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.2` | `2.4.4` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.1` | `12.2.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.2` | `4.9.6` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.25.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.2` | `0.6.3` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.12.1` |\n| [pyopenssl](https://github.com/pyca/pyopenssl) | `26.0.0` | `26.1.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.3.2` | `1.6.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.15.12` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.16.1` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.6.0` | `5.7.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250913` | `2.33.0.20260408` |\n| [ujson](https://github.com/ultrajson/ultrajson) | `5.11.0` | `5.12.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.41.0` | `0.46.0` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.3` | `0.47.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `8.2` | `8.4` |\n\n\nUpdates `dj-database-url` from 3.1.0 to 3.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jazzband/dj-database-url/releases\"\u003edj-database-url's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump cryptography from 46.0.3 to 46.0.5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/293\"\u003ejazzband/dj-database-url#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump django from 5.2.9 to 5.2.11 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/294\"\u003ejazzband/dj-database-url#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump urllib3 from 2.6.2 to 2.6.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/295\"\u003ejazzband/dj-database-url#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump wheel from 0.45.1 to 0.46.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/296\"\u003ejazzband/dj-database-url#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/297\"\u003ejazzband/dj-database-url#297\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/293\"\u003ejazzband/dj-database-url#293\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.1...v3.1.2\"\u003ehttps://github.com/jazzband/dj-database-url/compare/v3.1.1...v3.1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests directory to source distribution by \u003ca href=\"https://github.com/yohaann196\"\u003e\u003ccode\u003e@​yohaann196\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/285\"\u003ejazzband/dj-database-url#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch linting and formatting from flake8+isort+black to ruff; add typos to pre-commit; fix typos by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/281\"\u003ejazzband/dj-database-url#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd project URLs to pyproject.toml by \u003ca href=\"https://github.com/luzfcb\"\u003e\u003ccode\u003e@​luzfcb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/287\"\u003ejazzband/dj-database-url#287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate .pre-commit-config.yaml to use pinned version numbers. by \u003ca href=\"https://github.com/mattseymour\"\u003e\u003ccode\u003e@​mattseymour\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/289\"\u003ejazzband/dj-database-url#289\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/291\"\u003ejazzband/dj-database-url#291\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/yohaann196\"\u003e\u003ccode\u003e@​yohaann196\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/285\"\u003ejazzband/dj-database-url#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/luzfcb\"\u003e\u003ccode\u003e@​luzfcb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/287\"\u003ejazzband/dj-database-url#287\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.1\"\u003ehttps://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md\"\u003edj-database-url's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCHANGELOG\u003c/h1\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e77149f799f971f85d2cd1ccf01dbd3f0eb69cb5\"\u003e\u003ccode\u003ee77149f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/297\"\u003e#297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/6beffe6de6a2d6284d6c5c76ee6753cc8787aee2\"\u003e\u003ccode\u003e6beffe6\u003c/code\u003e\u003c/a\u003e Fix a regression in adding tests/ dir to source package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/f9c31305ae85f1a22d2102da0b83acb577154d97\"\u003e\u003ccode\u003ef9c3130\u003c/code\u003e\u003c/a\u003e Bump wheel from 0.45.1 to 0.46.2 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/5337838ac302faaec32c969712dc44dfe28d4e15\"\u003e\u003ccode\u003e5337838\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.6.2 to 2.6.3 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/6fc366459ff21030c49ba613d1c129f615ee4228\"\u003e\u003ccode\u003e6fc3664\u003c/code\u003e\u003c/a\u003e Bump django from 5.2.9 to 5.2.11 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/19805c97f3667da652ce57df0be0e02a1187d6b8\"\u003e\u003ccode\u003e19805c9\u003c/code\u003e\u003c/a\u003e Bump cryptography from 46.0.3 to 46.0.5 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/1b102cd42868d49321ec10393ecaae5cedb912b5\"\u003e\u003ccode\u003e1b102cd\u003c/code\u003e\u003c/a\u003e Update project URLs in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e41afda72b5ee6e4433ba044fe065afe1399ed48\"\u003e\u003ccode\u003ee41afda\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/291\"\u003e#291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/dba60770813761db92bba5753a6694e25c39a5a0\"\u003e\u003ccode\u003edba6077\u003c/code\u003e\u003c/a\u003e Update .pre-commit-config.yaml to use pinned version numbers. (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e6f4ccc49d31feaab4e9f930525573e60c5c4cfb\"\u003e\u003ccode\u003ee6f4ccc\u003c/code\u003e\u003c/a\u003e Add pytest to dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 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/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values 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/9928\"\u003eencode/django-rest-framework#9928\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.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.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 Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support 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/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field 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/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format 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/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e 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/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher 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/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation 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/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.8 to 3.10.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.9\u003c/h2\u003e\n\u003cp\u003eThis is a micro release of the v3.10.x series.\nHighlights of this release include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious minor bug and doc fixes\u003c/li\u003e\n\u003cli\u003eSecurity hardening validation of cyclers - Removing eval usage\u003c/li\u003e\n\u003cli\u003eSecurity hardening in Latex and PS calls - Removing shell escapes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/dd8d78b8dce60b6c8db86132892577a0b9dbe469\"\u003e\u003ccode\u003edd8d78b\u003c/code\u003e\u003c/a\u003e REL: v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/2fb18915bcfe69a188832c776fe18d88337de9bc\"\u003e\u003ccode\u003e2fb1891\u003c/code\u003e\u003c/a\u003e REL: Release prep v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d0e923abfa016c04901fe4e315b9d215949f6fc5\"\u003e\u003ccode\u003ed0e923a\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.8-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/163793248a5fc9f23a560e45551c44351a8bd716\"\u003e\u003ccode\u003e1637932\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31558\"\u003e#31558\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31556-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a83faacb0dbe7edd1bae38e1e715b77b6aaebb84\"\u003e\u003ccode\u003ea83faac\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31556\"\u003e#31556\u003c/a\u003e: FIX: Inverted PyErr_Occurred check in enum type caster (_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a4f57ab0623f9d26be29e0a3b0de904667c7eeb7\"\u003e\u003ccode\u003ea4f57ab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31545\"\u003e#31545\u003c/a\u003e from ksunden/backport-of-pr-31282-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/063288d0cc912aa2af5cc1b7e7ca3d228d9f8976\"\u003e\u003ccode\u003e063288d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31544\"\u003e#31544\u003c/a\u003e from ksunden/backport-of-pr-31248-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b2ed1969191a03ec8927f96573664474662ab4c1\"\u003e\u003ccode\u003eb2ed196\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31248\"\u003e#31248\u003c/a\u003e: SEC: Remove eval() from validate_cycler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/acc60241a70b920eaf04fce41a8cf0a77010fb7d\"\u003e\u003ccode\u003eacc6024\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31282\"\u003e#31282\u003c/a\u003e from scottshambaugh/tex_no_shell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/e3fb54163b1ce9dbc1a9e8e0973289dc14e366c2\"\u003e\u003ccode\u003ee3fb541\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31078\"\u003e#31078\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31075-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.8...v3.10.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\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/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\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.12.1 to 0.13.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.13.0\u003c/h2\u003e\n\u003ch2\u003e\u003ccode\u003ev0.13.0\u003c/code\u003e_ - 18-February-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded optional warnings when defaults are used\n\u003ccode\u003e[#582](https://github.com/joke2k/django-environ/issues/582) \u0026lt;https://github.com/joke2k/django-environ/pull/582\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echoices\u003c/code\u003e argument support for value validation in \u003ccode\u003eEnv.str(...)\u003c/code\u003e\n\u003ccode\u003e[#555](https://github.com/joke2k/django-environ/issues/555) \u0026lt;https://github.com/joke2k/django-environ/pull/555\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded Valkey support via \u003ccode\u003evalkey://\u003c/code\u003e and \u003ccode\u003evalkeys://\u003c/code\u003e cache URL schemes\n\u003ccode\u003e[#554](https://github.com/joke2k/django-environ/issues/554) \u0026lt;https://github.com/joke2k/django-environ/pull/554\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003erediss://\u003c/code\u003e scheme in channels URL parsing\n\u003ccode\u003e[#573](https://github.com/joke2k/django-environ/issues/573) \u0026lt;https://github.com/joke2k/django-environ/pull/573\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded django-prometheus database backend aliases to DB URL parsing schemes\n\u003ccode\u003e[#559](https://github.com/joke2k/django-environ/issues/559) \u0026lt;https://github.com/joke2k/django-environ/pull/559\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeclared support for Python 3.14\n\u003ccode\u003e[#580](https://github.com/joke2k/django-environ/issues/580) \u0026lt;https://github.com/joke2k/django-environ/pull/580\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eDeclared support for Django 5.2 and Django 6.0\n\u003ccode\u003e[#578](https://github.com/joke2k/django-environ/issues/578) \u0026lt;https://github.com/joke2k/django-environ/pull/578\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved type hint coverage and related lint issues\n\u003ccode\u003e[#546](https://github.com/joke2k/django-environ/issues/546) \u0026lt;https://github.com/joke2k/django-environ/pull/546\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed typos in the FAQ page\n\u003ccode\u003e[#445](https://github.com/joke2k/django-environ/issues/445) \u0026lt;https://github.com/joke2k/django-environ/pull/445\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/django-environ/blob/develop/CHANGELOG.rst\"\u003edjango-environ's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev0.13.0\u003c/code\u003e_ - 18-February-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded optional warnings when defaults are used\n\u003ccode\u003e[#582](https://github.com/joke2k/django-environ/issues/582) \u0026lt;https://github.com/joke2k/django-environ/pull/582\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echoices\u003c/code\u003e argument support for value validation in \u003ccode\u003eEnv.str(...)\u003c/code\u003e\n\u003ccode\u003e[#555](https://github.com/joke2k/django-environ/issues/555) \u0026lt;https://github.com/joke2k/django-environ/pull/555\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded Valkey support via \u003ccode\u003evalkey://\u003c/code\u003e and \u003ccode\u003evalkeys://\u003c/code\u003e cache URL schemes\n\u003ccode\u003e[#554](https://github.com/joke2k/django-environ/issues/554) \u0026lt;https://github.com/joke2k/django-environ/pull/554\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003erediss://\u003c/code\u003e scheme in channels URL parsing\n\u003ccode\u003e[#573](https://github.com/joke2k/django-environ/issues/573) \u0026lt;https://github.com/joke2k/django-environ/pull/573\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded django-prometheus database backend aliases to DB URL parsing schemes\n\u003ccode\u003e[#559](https://github.com/joke2k/django-environ/issues/559) \u0026lt;https://github.com/joke2k/django-environ/pull/559\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeclared support for Python 3.14\n\u003ccode\u003e[#580](https://github.com/joke2k/django-environ/issues/580) \u0026lt;https://github.com/joke2k/django-environ/pull/581\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eDeclared support for Django 5.2 and Django 6.0\n\u003ccode\u003e[#578](https://github.com/joke2k/django-environ/issues/578) \u0026lt;https://github.com/joke2k/django-environ/pull/578\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved type hint coverage and related lint issues\n\u003ccode\u003e[#546](https://github.com/joke2k/django-environ/issues/546) \u0026lt;https://github.com/joke2k/django-environ/pull/546\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed typos in the FAQ page\n\u003ccode\u003e[#445](https://github.com/joke2k/django-environ/issues/445) \u0026lt;https://github.com/joke2k/django-environ/pull/445\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/00746d0f63d37dcafad527ea7a820a46f8fb81e0\"\u003e\u003ccode\u003e00746d0\u003c/code\u003e\u003c/a\u003e docs: add Django 5.2 and 6.0 support to README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/d1f115932aed9d21c38c898c3ae4b4b678cd210d\"\u003e\u003ccode\u003ed1f1159\u003c/code\u003e\u003c/a\u003e Release 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/d82e361ddb7ffdad01451623d806d402c3a657fd\"\u003e\u003ccode\u003ed82e361\u003c/code\u003e\u003c/a\u003e Add optional warnings when defaults are used (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/582\"\u003e#582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/a78f7c888d840c1b1903371f2424ee641906c923\"\u003e\u003ccode\u003ea78f7c8\u003c/code\u003e\u003c/a\u003e Fixed some typos in the FAQ page (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/24b299e002f3bcc14983eef4be770edb143338dc\"\u003e\u003ccode\u003e24b299e\u003c/code\u003e\u003c/a\u003e Feature/add choice parameter and raise an exception if fetched value is not w...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c4414130f4cf11704e9f1ea446c68074f69c0b54\"\u003e\u003ccode\u003ec441413\u003c/code\u003e\u003c/a\u003e Add django-prometheus database backends to DB_SCHEMES (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/559\"\u003e#559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/98a0aad4c10e789d84e572a3f97a5a9cf9080973\"\u003e\u003ccode\u003e98a0aad\u003c/code\u003e\u003c/a\u003e Fix lint issues in environ type hints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/f4e77e41e629ae8631da9582241f7db527085699\"\u003e\u003ccode\u003ef4e77e4\u003c/code\u003e\u003c/a\u003e feat(cache): add valkey and valkeys as allowed schemes (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/554\"\u003e#554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/dd4d308baea427b5e820a8ac326b0d63e557c956\"\u003e\u003ccode\u003edd4d308\u003c/code\u003e\u003c/a\u003e Add type hints (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/3137c4f733f90a14a12da9fc252d446357190537\"\u003e\u003ccode\u003e3137c4f\u003c/code\u003e\u003c/a\u003e Support lower case options for Django Redis cache backend (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.12.1...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.3 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.42.39 to 1.42.96\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/60921ee112275b89a361d137657d9d48daacbf2a\"\u003e\u003ccode\u003e60921ee\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.96'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/508588d61de44577d761094e3f204dd85a0eb3c0\"\u003e\u003ccode\u003e508588d\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.96\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/fd3d17795980826ef2b5e34fd4eb62338d1ecc55\"\u003e\u003ccode\u003efd3d177\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4be6bbd12cb1ad40505dab385bafab62e70a4da8\"\u003e\u003ccode\u003e4be6bbd\u003c/code\u003e\u003c/a\u003e chore: enable dependabot for pre-commit and refresh hook pins (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4775\"\u003e#4775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/a47ce816eb1f088956353335f2bd2cd56b6b1fc6\"\u003e\u003ccode\u003ea47ce81\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4ccdda83164e69faf24839542d20a523c5263465\"\u003e\u003ccode\u003e4ccdda8\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/03cc5cdf7c550b4a36d43f07745f77aa9dbc0c9a\"\u003e\u003ccode\u003e03cc5cd\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.95\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ab160a576b0e6e150a9752837fe5e52961ae7349\"\u003e\u003ccode\u003eab160a5\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/10094042f04226ec32ae43a7051c2635bc033164\"\u003e\u003ccode\u003e1009404\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.94'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0017b80aa909dd8e95cfde8f79345cef8bcafc66\"\u003e\u003ccode\u003e0017b80\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.94' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.42.39...1.42.96\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.42.39 to 1.42.96\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/435c9a3f09d6ef9716e5d8a3c0d4be118cfbfe41\"\u003e\u003ccode\u003e435c9a3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.96'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/804525091b40e8bdfd90f2145ebe73f59c6ba584\"\u003e\u003ccode\u003e8045250\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.96\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/243b48e8f21e9c814e63bbe93221590da6c48904\"\u003e\u003ccode\u003e243b48e\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8ec506c1254150336916f8ed495df6529b9c5fb9\"\u003e\u003ccode\u003e8ec506c\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8ce183e14781ff29cff89057e84b398d0f5f0c81\"\u003e\u003ccode\u003e8ce183e\u003c/code\u003e\u003c/a\u003e chore: enable dependabot for pre-commit and refresh hook pins (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3685\"\u003e#3685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0aaee4ddba63cfd6337907ea8491a97424606586\"\u003e\u003ccode\u003e0aaee4d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/daaf0f37dc534f42953184a0910d9a5ea154a967\"\u003e\u003ccode\u003edaaf0f3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/157860ae07eb2b3f6c32cfaa4f10c48af69a084c\"\u003e\u003ccode\u003e157860a\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.95\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/19a789f6b7050d12b4188589a60efc454fdd6efc\"\u003e\u003ccode\u003e19a789f\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b88d178dd9bd410769f72e45f72e4d8e0716b2c4\"\u003e\u003ccode\u003eb88d178\u003c/code\u003e\u003c/a\u003e Merge customizations for CloudWatch OTel enrichment (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.42.39...1.42.96\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cbor2` from 5.8.0 to 5.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/cbor2/releases\"\u003ecbor2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003emax_depth\u003c/code\u003e decoder parameter to limit the maximum allowed nesting level of containers, with a default value of 400 levels (CVE-2026-26209)\u003c/li\u003e\n\u003cli\u003eChanged the default \u003ccode\u003eread_size\u003c/code\u003e from 4096 to 1 for backwards compatibility. The buffered reads introduced in 5.8.0 could cause issues when code needs to access the stream position after decoding. Users can opt-in to faster decoding by passing \u003ccode\u003eread_size=4096\u003c/code\u003e when they don't need to access the stream directly after decoding. Added a direct read path for \u003ccode\u003eread_size=1\u003c/code\u003e to avoid buffer management overhead. (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/pull/275\"\u003e#275\u003c/a\u003e; PR by \u003ca href=\"https://github.com/andreer\"\u003e\u003ccode\u003e@​andreer\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed C encoder not respecting string referencing when encoding string-type datetimes (tag 0) (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/254\"\u003e#254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a missed check for an exception in the C implementation of \u003ccode\u003eCBOREncoder.encode_shared()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed two reference/memory leaks in the C extension's long string decoder (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/pull/290\"\u003e#290\u003c/a\u003e PR by \u003ca href=\"https://github.com/killiancowan82\"\u003e\u003ccode\u003e@​killiancowan82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed C decoder ignoring the \u003ccode\u003estr_errors\u003c/code\u003e setting when decoding strings, and improved string decoding performance by using stack allocation for small strings and eliminating unnecessary conditionals. Benchmarks show 9-17% faster deserialization. (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/255\"\u003e#255\u003c/a\u003e; PR by \u003ca href=\"https://github.com/andreer\"\u003e\u003ccode\u003e@​andreer\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/93c598838d50b554e242920902aada82d32d55bc\"\u003e\u003ccode\u003e93c5988\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/d903d62c86de118e8abe626596f9be7b98ac44e9\"\u003e\u003ccode\u003ed903d62\u003c/code\u003e\u003c/a\u003e Updated the max_depth default value in the C function signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/2b53b2813d44a7919dae18747b5ac36cf9c5fb87\"\u003e\u003ccode\u003e2b53b28\u003c/code\u003e\u003c/a\u003e Stack allocate small strings (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/a7ac10d5cbb7a8622e8270c201a131ac2abc26c7\"\u003e\u003ccode\u003ea7ac10d\u003c/code\u003e\u003c/a\u003e Upped the max_depth value to 400\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/54c8ed541c5f4842508cace5ff4b2aae54bc731b\"\u003e\u003ccode\u003e54c8ed5\u003c/code\u003e\u003c/a\u003e Fixed reference/memory leaks in decode_definite_long_string (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/a8d92dc3dc00233c796c4abccb5daa31089bf3c0\"\u003e\u003ccode\u003ea8d92dc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/c91aa007117828560329a1624eabc5dad5435ebc\"\u003e\u003ccode\u003ec91aa00\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/53521e7ca96c7a19f8a529fe59ef566212a24b3f\"\u003e\u003ccode\u003e53521e7\u003c/code\u003e\u003c/a\u003e Fixed ssize_t to Py_ssize_t\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/94e0d2125fbfb183606afa9ef07754a8dba50748\"\u003e\u003ccode\u003e94e0d21\u003c/code\u003e\u003c/a\u003e Added missing Python counterpart for max_depth\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/bcb6cea4edde1d00ff4f0eece883dea951f66e1b\"\u003e\u003ccode\u003ebcb6cea\u003c/code\u003e\u003c/a\u003e Added the max_depth decoder parameter\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/cbor2/compare/5.8.0...5.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/c...\n\n_Description has been truncated_","html_url":"https://github.com/rahim8050/weather-apis/pull/62","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rahim8050%2Fweather-apis/issues/62","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/62/packages"},{"uuid":"4305889176","node_id":"PR_kwDORvGpa87Uds6e","number":27,"state":"closed","title":"Chore(deps): Bump the small-changes group across 1 directory with 37 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-05T23:41:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-21T23:44:08.000Z","updated_at":"2026-05-05T23:41:28.000Z","time_to_close":1209438,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"small-changes","update_count":37,"packages":[{"name":"dateparser","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"django-guardian","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/django-guardian/django-guardian"},{"name":"django-treenode","old_version":"0.23.3","new_version":"0.24.0","repository_url":"https://github.com/fabiocaccamo/django-treenode"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"drf-spectacular-sidecar","old_version":"2026.3.1","new_version":"2026.4.14","repository_url":"https://github.com/tfranzel/drf-spectacular-sidecar"},{"name":"filelock","old_version":"3.25.2","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gotenberg-client","old_version":"0.13.1","new_version":"0.14.0","repository_url":"https://github.com/stumpylog/gotenberg-client"},{"name":"imap-tools","old_version":"1.11.1","new_version":"1.12.1","repository_url":"https://github.com/ikvk/imap_tools"},{"name":"llama-index-core","old_version":"0.14.16","new_version":"0.14.21","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-embeddings-huggingface","old_version":"0.6.1","new_version":"0.7.0"},{"name":"llama-index-embeddings-openai","old_version":"0.5.2","new_version":"0.6.0"},{"name":"llama-index-llms-ollama","old_version":"0.9.1","new_version":"0.10.1"},{"name":"llama-index-llms-openai","old_version":"0.6.26","new_version":"0.7.5"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.3","new_version":"0.6.0"},{"name":"nltk","old_version":"3.9.3","new_version":"3.9.4","repository_url":"https://github.com/nltk/nltk"},{"name":"ocrmypdf","old_version":"17.3.0","new_version":"17.4.2","repository_url":"https://github.com/ocrmypdf/OCRmyPDF"},{"name":"openai","old_version":"2.26.0","new_version":"2.32.0","repository_url":"https://github.com/openai/openai-python"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"regex","old_version":"2026.2.28","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"sentence-transformers","old_version":"5.2.3","new_version":"5.4.1","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"tika-client","old_version":"0.10.0","new_version":"0.11.0","repository_url":"https://github.com/stumpylog/tika-client"},{"name":"torch","old_version":"2.10.0","new_version":"2.11.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"zensical","old_version":"0.0.26","new_version":"0.0.34","repository_url":"https://github.com/zensical/zensical"},{"name":"faker","old_version":"40.8.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"pytest-httpx","old_version":"0.36.0","new_version":"0.36.2","repository_url":"https://github.com/Colin-b/pytest_httpx"},{"name":"prek","old_version":"0.3.5","new_version":"0.3.10","repository_url":"https://github.com/j178/prek"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"celery-types","old_version":"0.24.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-baseline","old_version":"0.7.3","new_version":"0.7.4","repository_url":"https://github.com/orsinium-labs/mypy-baseline"},{"name":"pyrefly","old_version":"0.55.0","new_version":"0.62.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"types-dateparser","old_version":"1.3.0.20260206","new_version":"1.4.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the small-changes group with 36 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.3.0` | `1.4.0` |\n| [django-guardian](https://github.com/django-guardian/django-guardian) | `3.3.0` | `3.3.1` |\n| [django-treenode](https://github.com/fabiocaccamo/django-treenode) | `0.23.3` | `0.24.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [drf-spectacular-sidecar](https://github.com/tfranzel/drf-spectacular-sidecar) | `2026.3.1` | `2026.4.14` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.25.2` | `3.29.0` |\n| [gotenberg-client](https://github.com/stumpylog/gotenberg-client) | `0.13.1` | `0.14.0` |\n| [imap-tools](https://github.com/ikvk/imap_tools) | `1.11.1` | `1.12.1` |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.16` | `0.14.21` |\n| llama-index-embeddings-huggingface | `0.6.1` | `0.7.0` |\n| llama-index-embeddings-openai | `0.5.2` | `0.6.0` |\n| llama-index-llms-ollama | `0.9.1` | `0.10.1` |\n| llama-index-llms-openai | `0.6.26` | `0.7.5` |\n| llama-index-vector-stores-faiss | `0.5.3` | `0.6.0` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.3` | `3.9.4` |\n| [ocrmypdf](https://github.com/ocrmypdf/OCRmyPDF) | `17.3.0` | `17.4.2` |\n| [openai](https://github.com/openai/openai-python) | `2.26.0` | `2.32.0` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.5` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.4.4` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.3` | `5.4.1` |\n| [tika-client](https://github.com/stumpylog/tika-client) | `0.10.0` | `0.11.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.10.0` | `2.11.0` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.26` | `0.0.34` |\n| [faker](https://github.com/joke2k/faker) | `40.8.0` | `40.15.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [pytest-httpx](https://github.com/Colin-b/pytest_httpx) | `0.36.0` | `0.36.2` |\n| [prek](https://github.com/j178/prek) | `0.3.5` | `0.3.10` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.11` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.24.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.2` |\n| [mypy-baseline](https://github.com/orsinium-labs/mypy-baseline) | `0.7.3` | `0.7.4` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.55.0` | `0.62.0` |\n| [types-dateparser](https://github.com/python/typeshed) | `1.3.0.20260206` | `1.4.0.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n\n\nUpdates `dateparser` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2026-03-26)\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/commit/60b8a75b1a7e84d875e491e6c730a844646ae91b\"\u003e\u003ccode\u003e60b8a75\u003c/code\u003e\u003c/a\u003e Bump version: 1.3.0 → 1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/d405657bbefd10ec8c1cb3df71ce295ca473f910\"\u003e\u003ccode\u003ed405657\u003c/code\u003e\u003c/a\u003e 1.4.0 release notes and fixes (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/7a3113e3b495dc95e6e238da696433e259f11827\"\u003e\u003ccode\u003e7a3113e\u003c/code\u003e\u003c/a\u003e Add the en-US locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/62710c066b2cb44e508d07532df069b78d52bbf0\"\u003e\u003ccode\u003e62710c0\u003c/code\u003e\u003c/a\u003e Add a security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/341d3080f377c058b35ab39353940ba0f9349724\"\u003e\u003ccode\u003e341d308\u003c/code\u003e\u003c/a\u003e Fix deployment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/5add61cccf258788f9cca748dee3d5094ff65651\"\u003e\u003ccode\u003e5add61c\u003c/code\u003e\u003c/a\u003e Use official publish GitHub action in CI (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e22e62e336cc59b1ac38ea947c1b9b471d420846\"\u003e\u003ccode\u003ee22e62e\u003c/code\u003e\u003c/a\u003e Fix word-number phrases parsing (e.g., 'two days later') (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/8cdcf800ff16a0745b4782359db0c8085961219d\"\u003e\u003ccode\u003e8cdcf80\u003c/code\u003e\u003c/a\u003e Make logo more translucent (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1312\"\u003e#1312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e0939ecdd7ca04a24ca9d9a325224fe7fef7921c\"\u003e\u003ccode\u003ee0939ec\u003c/code\u003e\u003c/a\u003e Replace 'setup.py install' (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/cd5f226454e0ed3fe93164e7eff55b00f57e57c7\"\u003e\u003ccode\u003ecd5f226\u003c/code\u003e\u003c/a\u003e Honor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying year-bias...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-guardian` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-guardian/django-guardian/releases\"\u003edjango-guardian's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove managers typing and reduce code duplication by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/962\"\u003edjango-guardian/django-guardian#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd dependabot configuration by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/964\"\u003edjango-guardian/django-guardian#964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/965\"\u003edjango-guardian/django-guardian#965\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix possible IndexError when trying to bulk-assign permissions by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/969\"\u003edjango-guardian/django-guardian#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update coverage badge to 97.8% 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/django-guardian/django-guardian/pull/970\"\u003edjango-guardian/django-guardian#970\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix indentation in code example by \u003ca href=\"https://github.com/jmwhitworth\"\u003e\u003ccode\u003e@​jmwhitworth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/971\"\u003edjango-guardian/django-guardian#971\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/975\"\u003edjango-guardian/django-guardian#975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease process section is added by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/977\"\u003edjango-guardian/django-guardian#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e429 document how to migrate from generic object permissions to direct foreign keys by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/978\"\u003edjango-guardian/django-guardian#978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue966 by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/976\"\u003edjango-guardian/django-guardian#976\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eminor version update by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/979\"\u003edjango-guardian/django-guardian#979\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/jmwhitworth\"\u003e\u003ccode\u003e@​jmwhitworth\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/971\"\u003edjango-guardian/django-guardian#971\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-guardian/django-guardian/compare/3.3.0...3.3.1\"\u003ehttps://github.com/django-guardian/django-guardian/compare/3.3.0...3.3.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/django-guardian/django-guardian/commit/55d47bad5f7c8f038f77b8c021cfbcff3d1b9cc3\"\u003e\u003ccode\u003e55d47ba\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/979\"\u003e#979\u003c/a\u003e from django-guardian/version-update-3-3-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/fefaa91fa2f00cfdf71aa6026b1de29930900ee1\"\u003e\u003ccode\u003efefaa91\u003c/code\u003e\u003c/a\u003e minor version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/8ea54bb93cc23562f1d93183d6ada8d1469aa2c7\"\u003e\u003ccode\u003e8ea54bb\u003c/code\u003e\u003c/a\u003e Fix Issue 966 (\u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/ec417f9d67f3b374deb20705ad820fe6e4753816\"\u003e\u003ccode\u003eec417f9\u003c/code\u003e\u003c/a\u003e 429 document how to migrate from generic object permissions to direct foreign...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/5667e5b235069f6940760814067a6b237f128b03\"\u003e\u003ccode\u003e5667e5b\u003c/code\u003e\u003c/a\u003e Add release process documentation (\u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/582fc93a93738052218399b5b24061acb699d94a\"\u003e\u003ccode\u003e582fc93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/975\"\u003e#975\u003c/a\u003e from django-guardian/dependabot/github_actions/github...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/16abffc9e69e0798d5577190bbe912d1ee3cfc4f\"\u003e\u003ccode\u003e16abffc\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 5 to 7 in the github-actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/4dba1aad5777dabf3660d6847a388e890ef49671\"\u003e\u003ccode\u003e4dba1aa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/971\"\u003e#971\u003c/a\u003e from jmwhitworth/docs/fix-group-model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/3cf3beee1289f7018309f165be9aeba50f729002\"\u003e\u003ccode\u003e3cf3bee\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/970\"\u003e#970\u003c/a\u003e from django-guardian/auto-update-coverage-badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/5cbcf7d4ac7bd89399b9a623282a2975a62adc75\"\u003e\u003ccode\u003e5cbcf7d\u003c/code\u003e\u003c/a\u003e Fix indentation in code example\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-guardian/django-guardian/compare/3.3.0...3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-treenode` from 0.23.3 to 0.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fabiocaccamo/django-treenode/releases\"\u003edjango-treenode's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.24.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ePython 3.14\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDjango 6.0\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eFix skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump test requirements.\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\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/fabiocaccamo/django-treenode/blob/main/CHANGELOG.md\"\u003edjango-treenode's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/releases/tag/0.24.0\"\u003e0.24.0\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ePython 3.14\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDjango 6.0\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eFix skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump test requirements.\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\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/fabiocaccamo/django-treenode/commit/c5afb6cb48d81b4a0d0b8279666e22a6c4f91624\"\u003e\u003ccode\u003ec5afb6c\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003eCHANGELOG\u003c/code\u003e and version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/246de2cfad245d2386617d54dc843ae91c6edb41\"\u003e\u003ccode\u003e246de2c\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/536d7504b02b560c95ec914bf09dffacee8939c0\"\u003e\u003ccode\u003e536d750\u003c/code\u003e\u003c/a\u003e Update tox requirement in the python-requirements group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/214\"\u003e#214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/2c835fb06aacf6fddbe5a64cfcd789b9a40c4b5e\"\u003e\u003ccode\u003e2c835fb\u003c/code\u003e\u003c/a\u003e fix: skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/452bbd165ae9280823394f830f719808e92b6857\"\u003e\u003ccode\u003e452bbd1\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/85f10b447a101f5fe2d9110ec2ccd48da901cf81\"\u003e\u003ccode\u003e85f10b4\u003c/code\u003e\u003c/a\u003e Update coverage requirement in the python-requirements group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/8f71467fddd9db697dec018d4bb97d716e506c37\"\u003e\u003ccode\u003e8f71467\u003c/code\u003e\u003c/a\u003e Update pre-commit hooks. (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/2a572e30696820cd416d6c71c4d925f8638dae36\"\u003e\u003ccode\u003e2a572e3\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request in the github-actions group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/a13fc25c5c70d451f7312ad0879c08c9dca3f074\"\u003e\u003ccode\u003ea13fc25\u003c/code\u003e\u003c/a\u003e Update .pre-commit-config.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/16b84e0350ac6583da522436312bf45d37b9f6f2\"\u003e\u003ccode\u003e16b84e0\u003c/code\u003e\u003c/a\u003e Update FUNDING.yml\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fabiocaccamo/django-treenode/compare/0.23.3...0.24.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 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/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values 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/9928\"\u003eencode/django-rest-framework#9928\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.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.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 Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support 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/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field 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/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format 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/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e 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/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher 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/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation 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/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular-sidecar` from 2026.3.1 to 2026.4.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/05fbf42eca0a97579a884c5264a0e146673d985c\"\u003e\u003ccode\u003e05fbf42\u003c/code\u003e\u003c/a\u003e version bump 2026.4.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/4ca03e1f015837694091dd3698f4ef6cd8ecf45d\"\u003e\u003ccode\u003e4ca03e1\u003c/code\u003e\u003c/a\u003e Force rebuild for redoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/ab433ec2a85576947809c9039b62c966d5452694\"\u003e\u003ccode\u003eab433ec\u003c/code\u003e\u003c/a\u003e Merge branch 'pr16'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/f14ea06d1572efe0c840cba36570cf866f6fb069\"\u003e\u003ccode\u003ef14ea06\u003c/code\u003e\u003c/a\u003e update github actions due to deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/50ef330d14f39d5221ae30aa3aa4b9b408e10df3\"\u003e\u003ccode\u003e50ef330\u003c/code\u003e\u003c/a\u003e Fix redoc files \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular-sidecar/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/b714a7ffda691c8a0b06c80e091ce1e5e4f92666\"\u003e\u003ccode\u003eb714a7f\u003c/code\u003e\u003c/a\u003e version bump 2026.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/63be86409f10222db354b736811f877238a68a26\"\u003e\u003ccode\u003e63be864\u003c/code\u003e\u003c/a\u003e Fix: update assets list\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/compare/2026.3.1...2026.4.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.25.2 to 3.29.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.29.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(async): use single-thread executor for lock consistency by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/533\"\u003etox-dev/filelock#533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): enable stale lock detection on Windows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/534\"\u003etox-dev/filelock#534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.28.0...3.29.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.28.0...3.29.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.28.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/529\"\u003etox-dev/filelock#529\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.27.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/528\"\u003etox-dev/filelock#528\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling by \u003ca href=\"https://github.com/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\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/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/517\"\u003etox-dev/filelock#517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 fix(ci): restore git credentials for release job by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/520\"\u003etox-dev/filelock#520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/524\"\u003etox-dev/filelock#524\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.25.2...3.26.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.25.2...3.26.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/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e3.29.0 (2026-04-19)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): enable stale lock detection on Windows :pr:\u003ccode\u003e534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(async): use single-thread executor for lock consistency :pr:\u003ccode\u003e533\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 :pr:\u003ccode\u003e530\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.28.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again :pr:\u003ccode\u003e529\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.1 (2026-04-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling :pr:\u003ccode\u003e518\u003c/code\u003e - by :user:\u003ccode\u003enaarob\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 :pr:\u003ccode\u003e525\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.0 (2026-04-06)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking :pr:\u003ccode\u003e524\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e523\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 :pr:\u003ccode\u003e522\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove persist-credentials: false from release job :pr:\u003ccode\u003e520\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e519\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing :pr:\u003ccode\u003e517\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e516\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e514\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.2 (2026-03-11)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(unix): suppress EIO on close in Docker bind mounts :pr:\u003ccode\u003e513\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.1 (2026-03-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e510\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(win): restore best-effort lock file cleanup on release :pr:\u003ccode\u003e511\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/tox-dev/filelock/commit/469b47f192b0a9f8c8b795d9b9f57212c716959b\"\u003e\u003ccode\u003e469b47f\u003c/code\u003e\u003c/a\u003e Release 3.29.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/e85d07281987e0855ba67c03dfdef342ec1097d5\"\u003e\u003ccode\u003ee85d072\u003c/code\u003e\u003c/a\u003e ✨ feat(soft): enable stale lock detection on Windows (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/534\"\u003e#534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f5ee1712ced6916b2768812ee378183319339944\"\u003e\u003ccode\u003ef5ee171\u003c/code\u003e\u003c/a\u003e 🐛 fix(async): use single-thread executor for lock consistency (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/533\"\u003e#533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/2a954588cdf462a786835eeb102240ce79fecc8b\"\u003e\u003ccode\u003e2a95458\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/55de20c0819652362881906fa289feff5a323c19\"\u003e\u003ccode\u003e55de20c\u003c/code\u003e\u003c/a\u003e Release 3.28.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/476b0e4a92776fe530b5d993247342f039004174\"\u003e\u003ccode\u003e476b0e4\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): unbreak release workflow, publish to PyPI again (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/824713edc32b54efd66566907f97c1238502810e\"\u003e\u003ccode\u003e824713e\u003c/code\u003e\u003c/a\u003e ✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/528\"\u003e#528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/9879de9298db93ffba0a9f58d9de75e9e2a00fc1\"\u003e\u003ccode\u003e9879de9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/527\"\u003e#527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4cfab498b6916f89be46152efa4a72e9731be98f\"\u003e\u003ccode\u003e4cfab49\u003c/code\u003e\u003c/a\u003e Release 3.26.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/734c9f26e8107ad24886129fc68865f0b46cf71f\"\u003e\u003ccode\u003e734c9f2\u003c/code\u003e\u003c/a\u003e 🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handli...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.25.2...3.29.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gotenberg-client` from 0.13.1 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/stumpylog/gotenberg-client/releases\"\u003egotenberg-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[BREAKING]: Drop support for Python 3.9\n\u003cul\u003e\n\u003cli\u003eThis modernizes typing annotations and allows adding \u003ccode\u003eslots\u003c/code\u003e to all dataclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA bug in the retry logic which would have raised almost immediately\u003c/li\u003e\n\u003cli\u003eMinor internal class names were spelled incorrectly\u003c/li\u003e\n\u003cli\u003ePDF/A-1b was missing as a PDF output option\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/stumpylog/gotenberg-client/blob/main/CHANGELOG.md\"\u003egotenberg-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.14.0] - 2023-03-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[BREAKING]: Drop support for Python 3.9\n\u003cul\u003e\n\u003cli\u003eThis modernizes typing annotations and allows adding \u003ccode\u003eslots\u003c/code\u003e to all dataclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA bug in the retry logic which would have raised almost immediately\u003c/li\u003e\n\u003cli\u003eMinor internal class names were spelled incorrectly\u003c/li\u003e\n\u003cli\u003ePDF/A-1b was missing as a PDF output option\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/stumpylog/gotenberg-client/commit/adf65d3f73b814720e65fd4fc6e721ae0778642c\"\u003e\u003ccode\u003eadf65d3\u003c/code\u003e\u003c/a\u003e Merge branch 'release/0.14.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/05ad02b067027343e7ac2bbfe0b712c078d18974\"\u003e\u003ccode\u003e05ad02b\u003c/code\u003e\u003c/a\u003e Bumps version to 0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d2b41f058e521c6059a483aa5e72b2e7ffd6b148\"\u003e\u003ccode\u003ed2b41f0\u003c/code\u003e\u003c/a\u003e Updates hooks and resolves zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/c27040d49f92783e4de1292b7bb239429af92e05\"\u003e\u003ccode\u003ec27040d\u003c/code\u003e\u003c/a\u003e Resolves the cached_property\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/e90c4bd3a96bc5700d693c6ce400c9ed2ff60867\"\u003e\u003ccode\u003ee90c4bd\u003c/code\u003e\u003c/a\u003e Adds slots=True to the dataclasses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d06b72da77320996cc8974ad776f4fb1381e7971\"\u003e\u003ccode\u003ed06b72d\u003c/code\u003e\u003c/a\u003e Dropping Python 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/3522ca08f5055681bba509ae903b4e3a246f0ad2\"\u003e\u003ccode\u003e3522ca0\u003c/code\u003e\u003c/a\u003e Bump the actions group with 2 updates (\u003ca href=\"https://redirect.github.com/stumpylog/gotenberg-client/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/3bdcaefa42849fe9bcbc3a2fb0b728f2b42b2bb4\"\u003e\u003ccode\u003e3bdcaef\u003c/code\u003e\u003c/a\u003e Fixes a typo in the universal access mixin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d560579a4829740d9bbaf6dc47fc485521377646\"\u003e\u003ccode\u003ed560579\u003c/code\u003e\u003c/a\u003e AI generated review for some tasks that might be nice\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/7833b99b4b03b7d6a6d37a3e1f42137afddc3b9e\"\u003e\u003ccode\u003e7833b99\u003c/code\u003e\u003c/a\u003e Transitions away from the Codecov test results action\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stumpylog/gotenberg-client/compare/0.13.1...0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imap-tools` from 1.11.1 to 1.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ikvk/imap_tools/releases\"\u003eimap-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.12.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: BaseMailBox.login now quotes username to handle special IMAP characters (e.g. \u003ccode\u003e*\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/blob/master/docs/release_notes.rst\"\u003eimap-tools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.12.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: BaseMailBox.login now quotes username to handle special IMAP characters (e.g. \u003ccode\u003e*\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.12.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/commit/4ff405b742191ec5ab360ce5b8efb6aeb6786075\"\u003e\u003ccode\u003e4ff405b\u003c/code\u003e\u003c/a\u003e vers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/6443dd61f6c66bec21078ad79020d7fc456a30ba\"\u003e\u003ccode\u003e6443dd6\u003c/code\u003e\u003c/a\u003e Fixes the username quoting when using login with a username containing charac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/74083c4d31e94d9f0b5a0504c8a27f7a1525fd5d\"\u003e\u003ccode\u003e74083c4\u003c/code\u003e\u003c/a\u003e doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/4db25623a72277bf02480757fb28f21fc01addd6\"\u003e\u003ccode\u003e4db2562\u003c/code\u003e\u003c/a\u003e doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/c59a60723b7e6fec353590811ec6ad674110031c\"\u003e\u003ccode\u003ec59a607\u003c/code\u003e\u003c/a\u003e MailMessage.headers - LazyHeaders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/32ddf22fcac2fc80c7ed9ce0a6719d020c9ff57f\"\u003e\u003ccode\u003e32ddf22\u003c/code\u003e\u003c/a\u003e MailMessage.headers docs\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ikvk/imap_tools/compare/v1.11.1...v1.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-core` from 0.14.16 to 0.14.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.21\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-04-21]\u003c/h2\u003e\n\u003ch3\u003ellama-index-callbacks-honeyhive [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.21]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(core): prevent \u003ccode\u003eKeyError\u003c/code\u003e in \u003ccode\u003eDocumentSummaryIndex.delete_nodes\u003c/code\u003e when invalid node ID is provided (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21067\"\u003e#21067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): handle \u003ccode\u003eValueError\u003c/code\u003e and \u003ccode\u003eTypeError\u003c/code\u003e from structured output failures (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21090\"\u003e#21090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add explicit UTF-8 encoding to persistence layer fs.open() calls (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21111\"\u003e#21111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Breaking Change in Message Block Buffer Resolution (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21339\"\u003e#21339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-huggingface-optimum [0.4.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-nvidia [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(embeddings-nvidia): add http client support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21046\"\u003e#21046\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-oracleai [0.4.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-premai [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-text-embeddings-inference [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-textembed [0.4.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-together [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.6.1]\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/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.21]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(core): prevent \u003ccode\u003eKeyError\u003c/code\u003e in \u003ccode\u003eDocumentSummaryIndex.delete_nodes\u003c/code\u003e when invalid node ID is provided (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21067\"\u003e#21067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): handle \u003ccode\u003eValueError\u003c/code\u003e and \u003ccode\u003eTypeError\u003c/code\u003e from structured output failures (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21090\"\u003e#21090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add explicit UTF-8 encoding to persistence layer fs.open() calls (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21111\"\u003e#21111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Breaking Change in Message Block Buffer Resolution (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21339\"\u003e#21339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-huggingface-optimum [0.4.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-nvidia [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(embeddings-nvidia): add http client support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21046\"\u003e#21046\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-oracleai [0.4.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-premai [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-text-embeddings-inference [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-textembed [0.4.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-together [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.6.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-vertex [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-vertex-endpoint [0.4.0]\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/run-llama/llama_index/commit/931f56eaf25910fb5296f58e6e2f7293e61d148c\"\u003e\u003ccode\u003e931f56e\u003c/code\u003e\u003c/a\u003e Release 0.14.21 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21427\"\u003e#21427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/17fba87d51c28202ad30da6ba63fe6187550a5a6\"\u003e\u003ccode\u003e17fba87\u003c/code\u003e\u003c/a\u003e fix: add explicit UTF-8 encoding to persistence layer fs.open() calls (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21111\"\u003e#21111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/33f7ba4e3c5e20c6b1a26cae354fa39900e6ffb4\"\u003e\u003ccode\u003e33f7ba4\u003c/code\u003e\u003c/a\u003e Adds Google Gemma models and Bump version to 0.14.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21380\"\u003e#21380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/38c17169d0755406d0f216ffad6fa5b66158dc62\"\u003e\u003ccode\u003e38c1716\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/7921256cd1e85afe8cf15ef51dccd996e96751a0\"\u003e\u003ccode\u003e7921256\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/ffc726f65811f089e4dcea53e456e0256632b07d\"\u003e\u003ccode\u003effc726f\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/91fe33e75ce31d3ca447c017a5ea153ed8b38700\"\u003e\u003ccode\u003e91fe33e\u003c/code\u003e\u003c/a\u003e Fix Breaking Change in Message Block Buffer Resolution (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21339\"\u003e#21339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/10955bf0d24d6b695ed71993112276abf3a8aed6\"\u003e\u003ccode\u003e10955bf\u003c/code\u003e\u003c/a\u003e fix: parse MistralAI structured ThinkChunk/TextChunk without regex (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20916\"\u003e#20916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/9eb4c2dcb68cdbf1d8b040b3ff13f6ac46e3b118\"\u003e\u003ccode\u003e9eb4c2d\u003c/code\u003e\u003c/a\u003e fix: filter unknown kwargs before VectorStoreQuery construction (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/14557\"\u003e#14557\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21\"\u003e#21\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/a61f2cf3ddbe33c0d45ee1363428885e9e4134cb\"\u003e\u003ccode\u003ea61f2cf\u003c/code\u003e\u003c/a\u003e fix(core): handle \u003ccode\u003eValueError\u003c/code\u003e and \u003ccode\u003eTypeError\u003c/code\u003e from structured output failure...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.16...v0.14.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-embeddings-huggingface` from 0.6.1 to 0.7.0\n\nUpdates `llama-index-embeddings-openai` from 0.5.2 to 0.6.0\n\nUpdates `llama-index-llms-ollama` from 0.9.1 to 0.10.1\n\nUpdates `llama-index-llms-openai` from 0.6.26 to 0.7.5\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.3 to 0.6.0\n\nUpdates `nltk` from 3.9.3 to 3.9.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nltk/nltk/blob/develop/ChangeLog\"\u003enltk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion 3.9.4 2026-03-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14\u003c/li\u003e\n\u003cli\u003eFix bug in Levenshtein distance when substitution_cost \u0026gt; 2\u003c/li\u003e\n\u003cli\u003eFix bug in Treebank detokeniser re quote ordering\u003c/li\u003e\n\u003cli\u003eFix bug in Jaro similarity for empty strings\u003c/li\u003e\n\u003cli\u003eSeveral security enhancements\u003c/li\u003e\n\u003cli\u003eFix GHSA-rf74-v2fm-23pw: unbounded recursion in JSONTaggedDecoder\u003c/li\u003e\n\u003cli\u003eImplement TextTiling vocabulary introduction method (Hearst 1997)\u003c/li\u003e\n\u003cli\u003eFix ALINE feature matrix errors and add comprehensive tests\u003c/li\u003e\n\u003cli\u003eSupport multiple VerbNet versions, fix longid/shortid regex for VerbNet ids\u003c/li\u003e\n\u003cli\u003eLet downloader fallback to md5 when sha256 is unavailable\u003c/li\u003e\n\u003cli\u003eSeveral other minor bugfixes and code cleanups\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.4:\nMin-Yen Kan, Eric Kafe, Emily Voss, bowiechen, Hrudhai01,\njancallewaert, Mr-Neutr0n, pollak.peter89, ylwango613,\u003c/p\u003e\n\u003cp\u003eVersion 3.9.3 2026-02-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2025-14009: secure ZIP extraction in nltk.downloader (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3468\"\u003e#3468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/arbitrary reads in nltk.data for protocol-less refs (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3467\"\u003e#3467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/abs paths in corpus readers and FS pointers (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3479\"\u003e#3479\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3480\"\u003e#3480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eValidate external StanfordSegmenter JARs using SHA256 (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3477\"\u003e#3477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd optional sandbox enforcement for filestring() (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3485\"\u003e#3485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMaintenance: downloader/zipped models, CI/tooling updates\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.3:\nChris Clauss, Eric Kafe, HyperPS, purificant, Shivansh-Game, Christopher Smith\u003c/p\u003e\n\u003cp\u003eVersion 3.9.2 2025-10-01\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate download checksums to use SHA256 in built index\u003c/li\u003e\n\u003cli\u003eFix percentage escape in new-style string formatting\u003c/li\u003e\n\u003cli\u003ereplace shortened URLs using goo.gl\u003c/li\u003e\n\u003cli\u003eMake Wordnet interoperable with various taggers and tagged corpora\u003c/li\u003e\n\u003cli\u003eFix saving PerceptronTagger\u003c/li\u003e\n\u003cli\u003eDocument how to reproduce old Wordnet studies\u003c/li\u003e\n\u003cli\u003eproperly initialize Portuguese corpus reader\u003c/li\u003e\n\u003cli\u003esupport for mixed rules conversion into Chomsky Normal Form\u003c/li\u003e\n\u003cli\u003eonly import tkinter if a GUI is needed\u003c/li\u003e\n\u003cli\u003eissue \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/2112\"\u003e#2112\u003c/a\u003e with Corenlp\u003c/li\u003e\n\u003cli\u003enew environment variable NLTK_DOWNLOADER_FORCE_INTERACTIVE_SHELL\u003c/li\u003e\n\u003cli\u003eLesk defaults to most frequent sense in case of ties\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.2:\nJose Cols, Peter de Blanc, GeneralPoxter, Eric Kafe, William LaCroix, Jason Liu,\nSamer Masterson, Mike014, purificant, Andrew Ernest Ritz, samertm, Ikram Ul Haq,\nChristopher Smith, Ryan Mannion\u003c/p\u003e\n\u003cp\u003eVersion 3.9.1 2024-08-19\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/nltk/nltk/commit/ad9c96ba00a16923ffe917eacf63f1707bfa2d08\"\u003e\u003ccode\u003ead9c96b\u003c/code\u003e\u003c/a\u003e Update copyright year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/7edcddfda566627b897397397cc4d10ae91cb86d\"\u003e\u003ccode\u003e7edcddf\u003c/code\u003e\u003c/a\u003e Updates for 3.9.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/67a2736f89b286b028db08bd247134f17a11fc6b\"\u003e\u003ccode\u003e67a2736\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3180\"\u003e#3180\u003c/a\u003e from yzhaoinuw/bug-on-edit_distance_align\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/2b17ac5358a1c8d4b97455766efde0b786e6cdb2\"\u003e\u003ccode\u003e2b17ac5\u003c/code\u003e\u003c/a\u003e Fix edit_distance_align backtrace for high substitution costs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/4b72976a6ff3d180ed4012f11843e611a8f89516\"\u003e\u003ccode\u003e4b72976\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3018\"\u003e#3018\u003c/a\u003e from JuanIMartinezB/bug/shortid-longid\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/8a5619f53a281149e5342b1a00fe05fe2fc6517f\"\u003e\u003ccode\u003e8a5619f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3222\"\u003e#3222\u003c/a\u003e from Syzygy2048/feature/texttiling-vocabulary-introd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/c6574d755e02b6163d9cd1d0b407076940e08864\"\u003e\u003ccode\u003ec6574d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3289\"\u003e#3289\u003c/a\u003e from ihitamandal/codeflash/optimize-windowdiff-2024-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/98ff5d9eaa1a81511873b9aef857944519c28dc4\"\u003e\u003ccode\u003e98ff5d9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3435\"\u003e#3435\u003c/a\u003e from Hrudhai01/fix-3260-detokenize-quotes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/aec4fce1b84ad725b8975f7365b23a4f626572a9\"\u003e\u003ccode\u003eaec4fce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3522\"\u003e#3522\u003c/a\u003e from ekaf/pathsec\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/eec4ee3591cb9cb8b8c2989f08012608c841d532\"\u003e\u003ccode\u003eeec4ee3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3526\"\u003e#3526\u003c/a\u003e from nltk/update-contributing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nltk/nltk/compare/3.9.3...3.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ocrmypdf` from 17.3.0 to 17.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/releases\"\u003eocrmypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev17.4.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Python API unconditionally overriding \u003ccode\u003ePIL.Image.MAX_IMAGE_PIXELS\u003c/code\u003e\nwhen the caller did not explicitly set \u003ccode\u003emax_image_mpixels\u003c/code\u003e. Host\napplications (e.g. Paperless-NGX) that configure the PIL limit before\ninvoking \u003ccode\u003eocrmypdf.ocr()\u003c/code\u003e now have their setting respected. The CLI\ndefault of 250 megapixels is unchanged. {issue}\u003ccode\u003e1665\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdated uv.lock to avoid pinning a vulnerable version of Pillow. {issue}\u003ccode\u003e1666\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev17.4.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed RTL text extraction order in the fpdf2 renderer. Arabic lam-alef\nligatures and other multi-character CMap entries were garbled by the bidi\nalgorithm during text extraction. {issue}\u003ccode\u003e1655\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ework_folder\u003c/code\u003e not being set in \u003ccode\u003ePdfContext\u003c/code\u003e options when using\nthe Python API. Thanks \u003ca href=\"https://github.com/bluebox-steven\"\u003e\u003ccode\u003e@​bluebox-steven\u003c/code\u003e\u003c/a\u003e. {issue}\u003ccode\u003e1613\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdated Ghostscript JPEG corruption warning to include the detected version\nnumber, confirming the bug persists in Ghostscript 10.7.0.\u003c/li\u003e\n\u003cli\u003eInternal refactoring.\u003c/li\u003e\n\u003cli\u003eCI dependency updates.\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/ocrmypdf/OCRmyPDF/commit/1c89cacfef918ea2487ad014de87b6d578361a7c\"\u003e\u003ccode\u003e1c89cac\u003c/code\u003e\u003c/a\u003e Respect host-set PIL.Image.MAX_IMAGE_PIXELS in Python API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/commit/89c76b51455b7e7e4158558b4ca7a8eaf31063ef\"\u003e\u003ccode\u003e89c76b5\u003c/code\u003e\u003c/a\u003e v17.4.1 release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/commit/6f2b8408c1c490798775fd9f9cfd9d402f6c0017\"\u003e\u003ccode\u003e6f2b840\u003c/code\u003e\u003c/a\u003e v17.4.0 release notes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://gi...\n\n_Description has been truncated_","html_url":"https://github.com/edsanpemc/paperless-ngx/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsanpemc%2Fpaperless-ngx/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"},{"uuid":"4265359014","node_id":"PR_kwDORvGpa87SeJm5","number":25,"state":"open","title":"Chore(deps): Bump the small-changes group across 1 directory with 36 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-14T23:41:41.000Z","updated_at":"2026-04-14T23:41:41.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"small-changes","update_count":36,"packages":[{"name":"dateparser","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"django-guardian","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/django-guardian/django-guardian"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"drf-spectacular-sidecar","old_version":"2026.3.1","new_version":"2026.4.14","repository_url":"https://github.com/tfranzel/drf-spectacular-sidecar"},{"name":"filelock","old_version":"3.25.2","new_version":"3.28.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gotenberg-client","old_version":"0.13.1","new_version":"0.14.0","repository_url":"https://github.com/stumpylog/gotenberg-client"},{"name":"imap-tools","old_version":"1.11.1","new_version":"1.12.0","repository_url":"https://github.com/ikvk/imap_tools"},{"name":"llama-index-core","old_version":"0.14.16","new_version":"0.14.20","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-embeddings-huggingface","old_version":"0.6.1","new_version":"0.7.0"},{"name":"llama-index-embeddings-openai","old_version":"0.5.2","new_version":"0.6.0"},{"name":"llama-index-llms-ollama","old_version":"0.9.1","new_version":"0.10.1"},{"name":"llama-index-llms-openai","old_version":"0.6.26","new_version":"0.7.5"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.3","new_version":"0.6.0"},{"name":"nltk","old_version":"3.9.3","new_version":"3.9.4","repository_url":"https://github.com/nltk/nltk"},{"name":"ocrmypdf","old_version":"17.3.0","new_version":"17.4.1","repository_url":"https://github.com/ocrmypdf/OCRmyPDF"},{"name":"openai","old_version":"2.26.0","new_version":"2.31.0","repository_url":"https://github.com/openai/openai-python"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"regex","old_version":"2026.2.28","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"sentence-transformers","old_version":"5.2.3","new_version":"5.4.1","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"tika-client","old_version":"0.10.0","new_version":"0.11.0","repository_url":"https://github.com/stumpylog/tika-client"},{"name":"torch","old_version":"2.10.0","new_version":"2.11.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"zensical","old_version":"0.0.26","new_version":"0.0.33","repository_url":"https://github.com/zensical/zensical"},{"name":"faker","old_version":"40.8.0","new_version":"40.13.0","repository_url":"https://github.com/joke2k/faker"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"pytest-httpx","old_version":"0.36.0","new_version":"0.36.2","repository_url":"https://github.com/Colin-b/pytest_httpx"},{"name":"prek","old_version":"0.3.5","new_version":"0.3.9","repository_url":"https://github.com/j178/prek"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"celery-types","old_version":"0.24.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-baseline","old_version":"0.7.3","new_version":"0.7.4","repository_url":"https://github.com/orsinium-labs/mypy-baseline"},{"name":"pyrefly","old_version":"0.55.0","new_version":"0.61.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"types-dateparser","old_version":"1.3.0.20260206","new_version":"1.4.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the small-changes group with 35 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.3.0` | `1.4.0` |\n| [django-guardian](https://github.com/django-guardian/django-guardian) | `3.3.0` | `3.3.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [drf-spectacular-sidecar](https://github.com/tfranzel/drf-spectacular-sidecar) | `2026.3.1` | `2026.4.14` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.25.2` | `3.28.0` |\n| [gotenberg-client](https://github.com/stumpylog/gotenberg-client) | `0.13.1` | `0.14.0` |\n| [imap-tools](https://github.com/ikvk/imap_tools) | `1.11.1` | `1.12.0` |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.16` | `0.14.20` |\n| llama-index-embeddings-huggingface | `0.6.1` | `0.7.0` |\n| llama-index-embeddings-openai | `0.5.2` | `0.6.0` |\n| llama-index-llms-ollama | `0.9.1` | `0.10.1` |\n| llama-index-llms-openai | `0.6.26` | `0.7.5` |\n| llama-index-vector-stores-faiss | `0.5.3` | `0.6.0` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.3` | `3.9.4` |\n| [ocrmypdf](https://github.com/ocrmypdf/OCRmyPDF) | `17.3.0` | `17.4.1` |\n| [openai](https://github.com/openai/openai-python) | `2.26.0` | `2.31.0` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.5` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.4.4` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.3` | `5.4.1` |\n| [tika-client](https://github.com/stumpylog/tika-client) | `0.10.0` | `0.11.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.10.0` | `2.11.0` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.26` | `0.0.33` |\n| [faker](https://github.com/joke2k/faker) | `40.8.0` | `40.13.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [pytest-httpx](https://github.com/Colin-b/pytest_httpx) | `0.36.0` | `0.36.2` |\n| [prek](https://github.com/j178/prek) | `0.3.5` | `0.3.9` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.10` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.24.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.1` |\n| [mypy-baseline](https://github.com/orsinium-labs/mypy-baseline) | `0.7.3` | `0.7.4` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.55.0` | `0.61.0` |\n| [types-dateparser](https://github.com/python/typeshed) | `1.3.0.20260206` | `1.4.0.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n\n\nUpdates `dateparser` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2026-03-26)\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/commit/60b8a75b1a7e84d875e491e6c730a844646ae91b\"\u003e\u003ccode\u003e60b8a75\u003c/code\u003e\u003c/a\u003e Bump version: 1.3.0 → 1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/d405657bbefd10ec8c1cb3df71ce295ca473f910\"\u003e\u003ccode\u003ed405657\u003c/code\u003e\u003c/a\u003e 1.4.0 release notes and fixes (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/7a3113e3b495dc95e6e238da696433e259f11827\"\u003e\u003ccode\u003e7a3113e\u003c/code\u003e\u003c/a\u003e Add the en-US locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/62710c066b2cb44e508d07532df069b78d52bbf0\"\u003e\u003ccode\u003e62710c0\u003c/code\u003e\u003c/a\u003e Add a security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/341d3080f377c058b35ab39353940ba0f9349724\"\u003e\u003ccode\u003e341d308\u003c/code\u003e\u003c/a\u003e Fix deployment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/5add61cccf258788f9cca748dee3d5094ff65651\"\u003e\u003ccode\u003e5add61c\u003c/code\u003e\u003c/a\u003e Use official publish GitHub action in CI (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e22e62e336cc59b1ac38ea947c1b9b471d420846\"\u003e\u003ccode\u003ee22e62e\u003c/code\u003e\u003c/a\u003e Fix word-number phrases parsing (e.g., 'two days later') (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/8cdcf800ff16a0745b4782359db0c8085961219d\"\u003e\u003ccode\u003e8cdcf80\u003c/code\u003e\u003c/a\u003e Make logo more translucent (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1312\"\u003e#1312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e0939ecdd7ca04a24ca9d9a325224fe7fef7921c\"\u003e\u003ccode\u003ee0939ec\u003c/code\u003e\u003c/a\u003e Replace 'setup.py install' (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/cd5f226454e0ed3fe93164e7eff55b00f57e57c7\"\u003e\u003ccode\u003ecd5f226\u003c/code\u003e\u003c/a\u003e Honor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying year-bias...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-guardian` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-guardian/django-guardian/releases\"\u003edjango-guardian's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove managers typing and reduce code duplication by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/962\"\u003edjango-guardian/django-guardian#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd dependabot configuration by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/964\"\u003edjango-guardian/django-guardian#964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/965\"\u003edjango-guardian/django-guardian#965\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix possible IndexError when trying to bulk-assign permissions by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/969\"\u003edjango-guardian/django-guardian#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update coverage badge to 97.8% 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/django-guardian/django-guardian/pull/970\"\u003edjango-guardian/django-guardian#970\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix indentation in code example by \u003ca href=\"https://github.com/jmwhitworth\"\u003e\u003ccode\u003e@​jmwhitworth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/971\"\u003edjango-guardian/django-guardian#971\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/975\"\u003edjango-guardian/django-guardian#975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease process section is added by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/977\"\u003edjango-guardian/django-guardian#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e429 document how to migrate from generic object permissions to direct foreign keys by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/978\"\u003edjango-guardian/django-guardian#978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue966 by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/976\"\u003edjango-guardian/django-guardian#976\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eminor version update by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/979\"\u003edjango-guardian/django-guardian#979\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/jmwhitworth\"\u003e\u003ccode\u003e@​jmwhitworth\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/971\"\u003edjango-guardian/django-guardian#971\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-guardian/django-guardian/compare/3.3.0...3.3.1\"\u003ehttps://github.com/django-guardian/django-guardian/compare/3.3.0...3.3.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/django-guardian/django-guardian/commit/55d47bad5f7c8f038f77b8c021cfbcff3d1b9cc3\"\u003e\u003ccode\u003e55d47ba\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/979\"\u003e#979\u003c/a\u003e from django-guardian/version-update-3-3-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/fefaa91fa2f00cfdf71aa6026b1de29930900ee1\"\u003e\u003ccode\u003efefaa91\u003c/code\u003e\u003c/a\u003e minor version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/8ea54bb93cc23562f1d93183d6ada8d1469aa2c7\"\u003e\u003ccode\u003e8ea54bb\u003c/code\u003e\u003c/a\u003e Fix Issue 966 (\u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/ec417f9d67f3b374deb20705ad820fe6e4753816\"\u003e\u003ccode\u003eec417f9\u003c/code\u003e\u003c/a\u003e 429 document how to migrate from generic object permissions to direct foreign...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/5667e5b235069f6940760814067a6b237f128b03\"\u003e\u003ccode\u003e5667e5b\u003c/code\u003e\u003c/a\u003e Add release process documentation (\u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/582fc93a93738052218399b5b24061acb699d94a\"\u003e\u003ccode\u003e582fc93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/975\"\u003e#975\u003c/a\u003e from django-guardian/dependabot/github_actions/github...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/16abffc9e69e0798d5577190bbe912d1ee3cfc4f\"\u003e\u003ccode\u003e16abffc\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 5 to 7 in the github-actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/4dba1aad5777dabf3660d6847a388e890ef49671\"\u003e\u003ccode\u003e4dba1aa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/971\"\u003e#971\u003c/a\u003e from jmwhitworth/docs/fix-group-model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/3cf3beee1289f7018309f165be9aeba50f729002\"\u003e\u003ccode\u003e3cf3bee\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/970\"\u003e#970\u003c/a\u003e from django-guardian/auto-update-coverage-badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/5cbcf7d4ac7bd89399b9a623282a2975a62adc75\"\u003e\u003ccode\u003e5cbcf7d\u003c/code\u003e\u003c/a\u003e Fix indentation in code example\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-guardian/django-guardian/compare/3.3.0...3.3.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.16.1 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/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values 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/9928\"\u003eencode/django-rest-framework#9928\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.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.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 Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support 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/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field 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/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format 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/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e 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/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher 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/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation 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/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular-sidecar` from 2026.3.1 to 2026.4.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/05fbf42eca0a97579a884c5264a0e146673d985c\"\u003e\u003ccode\u003e05fbf42\u003c/code\u003e\u003c/a\u003e version bump 2026.4.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/4ca03e1f015837694091dd3698f4ef6cd8ecf45d\"\u003e\u003ccode\u003e4ca03e1\u003c/code\u003e\u003c/a\u003e Force rebuild for redoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/ab433ec2a85576947809c9039b62c966d5452694\"\u003e\u003ccode\u003eab433ec\u003c/code\u003e\u003c/a\u003e Merge branch 'pr16'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/f14ea06d1572efe0c840cba36570cf866f6fb069\"\u003e\u003ccode\u003ef14ea06\u003c/code\u003e\u003c/a\u003e update github actions due to deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/50ef330d14f39d5221ae30aa3aa4b9b408e10df3\"\u003e\u003ccode\u003e50ef330\u003c/code\u003e\u003c/a\u003e Fix redoc files \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular-sidecar/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/b714a7ffda691c8a0b06c80e091ce1e5e4f92666\"\u003e\u003ccode\u003eb714a7f\u003c/code\u003e\u003c/a\u003e version bump 2026.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/63be86409f10222db354b736811f877238a68a26\"\u003e\u003ccode\u003e63be864\u003c/code\u003e\u003c/a\u003e Fix: update assets list\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/compare/2026.3.1...2026.4.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.25.2 to 3.28.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.28.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/529\"\u003etox-dev/filelock#529\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.27.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/528\"\u003etox-dev/filelock#528\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling by \u003ca href=\"https://github.com/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\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/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/517\"\u003etox-dev/filelock#517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 fix(ci): restore git credentials for release job by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/520\"\u003etox-dev/filelock#520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/524\"\u003etox-dev/filelock#524\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.25.2...3.26.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.25.2...3.26.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/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e3.28.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again :pr:\u003ccode\u003e529\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.1 (2026-04-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling :pr:\u003ccode\u003e518\u003c/code\u003e - by :user:\u003ccode\u003enaarob\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 :pr:\u003ccode\u003e525\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.0 (2026-04-06)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking :pr:\u003ccode\u003e524\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e523\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 :pr:\u003ccode\u003e522\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove persist-credentials: false from release job :pr:\u003ccode\u003e520\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e519\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing :pr:\u003ccode\u003e517\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e516\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e514\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.2 (2026-03-11)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(unix): suppress EIO on close in Docker bind mounts :pr:\u003ccode\u003e513\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.1 (2026-03-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e510\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(win): restore best-effort lock file cleanup on release :pr:\u003ccode\u003e511\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e508\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs(logo): add branded project logo :pr:\u003ccode\u003e507\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.0 (2026-03-01)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(async): add AsyncReadWriteLock :pr:\u003ccode\u003e506\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/tox-dev/filelock/commit/55de20c0819652362881906fa289feff5a323c19\"\u003e\u003ccode\u003e55de20c\u003c/code\u003e\u003c/a\u003e Release 3.28.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/476b0e4a92776fe530b5d993247342f039004174\"\u003e\u003ccode\u003e476b0e4\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): unbreak release workflow, publish to PyPI again (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/824713edc32b54efd66566907f97c1238502810e\"\u003e\u003ccode\u003e824713e\u003c/code\u003e\u003c/a\u003e ✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/528\"\u003e#528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/9879de9298db93ffba0a9f58d9de75e9e2a00fc1\"\u003e\u003ccode\u003e9879de9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/527\"\u003e#527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4cfab498b6916f89be46152efa4a72e9731be98f\"\u003e\u003ccode\u003e4cfab49\u003c/code\u003e\u003c/a\u003e Release 3.26.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/734c9f26e8107ad24886129fc68865f0b46cf71f\"\u003e\u003ccode\u003e734c9f2\u003c/code\u003e\u003c/a\u003e 🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/c9f9cb4c63b69d1bcfbcf98fe7c8dc439f51d473\"\u003e\u003ccode\u003ec9f9cb4\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/525\"\u003e#525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/ad728d72a3e492297208c16b7c0787f4bfb6ccd0\"\u003e\u003ccode\u003ead728d7\u003c/code\u003e\u003c/a\u003e Release 3.26.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f8a9849d63f256229d7c6481081c5df58f63e2ba\"\u003e\u003ccode\u003ef8a9849\u003c/code\u003e\u003c/a\u003e ✨ feat(soft): add PID inspection and lock breaking (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/fc53a83fa16c748b687e598f12540b876c642fce\"\u003e\u003ccode\u003efc53a83\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.25.2...3.28.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gotenberg-client` from 0.13.1 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/stumpylog/gotenberg-client/releases\"\u003egotenberg-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[BREAKING]: Drop support for Python 3.9\n\u003cul\u003e\n\u003cli\u003eThis modernizes typing annotations and allows adding \u003ccode\u003eslots\u003c/code\u003e to all dataclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA bug in the retry logic which would have raised almost immediately\u003c/li\u003e\n\u003cli\u003eMinor internal class names were spelled incorrectly\u003c/li\u003e\n\u003cli\u003ePDF/A-1b was missing as a PDF output option\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/stumpylog/gotenberg-client/blob/main/CHANGELOG.md\"\u003egotenberg-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.14.0] - 2023-03-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[BREAKING]: Drop support for Python 3.9\n\u003cul\u003e\n\u003cli\u003eThis modernizes typing annotations and allows adding \u003ccode\u003eslots\u003c/code\u003e to all dataclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA bug in the retry logic which would have raised almost immediately\u003c/li\u003e\n\u003cli\u003eMinor internal class names were spelled incorrectly\u003c/li\u003e\n\u003cli\u003ePDF/A-1b was missing as a PDF output option\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/stumpylog/gotenberg-client/commit/adf65d3f73b814720e65fd4fc6e721ae0778642c\"\u003e\u003ccode\u003eadf65d3\u003c/code\u003e\u003c/a\u003e Merge branch 'release/0.14.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/05ad02b067027343e7ac2bbfe0b712c078d18974\"\u003e\u003ccode\u003e05ad02b\u003c/code\u003e\u003c/a\u003e Bumps version to 0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d2b41f058e521c6059a483aa5e72b2e7ffd6b148\"\u003e\u003ccode\u003ed2b41f0\u003c/code\u003e\u003c/a\u003e Updates hooks and resolves zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/c27040d49f92783e4de1292b7bb239429af92e05\"\u003e\u003ccode\u003ec27040d\u003c/code\u003e\u003c/a\u003e Resolves the cached_property\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/e90c4bd3a96bc5700d693c6ce400c9ed2ff60867\"\u003e\u003ccode\u003ee90c4bd\u003c/code\u003e\u003c/a\u003e Adds slots=True to the dataclasses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d06b72da77320996cc8974ad776f4fb1381e7971\"\u003e\u003ccode\u003ed06b72d\u003c/code\u003e\u003c/a\u003e Dropping Python 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/3522ca08f5055681bba509ae903b4e3a246f0ad2\"\u003e\u003ccode\u003e3522ca0\u003c/code\u003e\u003c/a\u003e Bump the actions group with 2 updates (\u003ca href=\"https://redirect.github.com/stumpylog/gotenberg-client/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/3bdcaefa42849fe9bcbc3a2fb0b728f2b42b2bb4\"\u003e\u003ccode\u003e3bdcaef\u003c/code\u003e\u003c/a\u003e Fixes a typo in the universal access mixin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d560579a4829740d9bbaf6dc47fc485521377646\"\u003e\u003ccode\u003ed560579\u003c/code\u003e\u003c/a\u003e AI generated review for some tasks that might be nice\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/7833b99b4b03b7d6a6d37a3e1f42137afddc3b9e\"\u003e\u003ccode\u003e7833b99\u003c/code\u003e\u003c/a\u003e Transitions away from the Codecov test results action\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stumpylog/gotenberg-client/compare/0.13.1...0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imap-tools` from 1.11.1 to 1.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ikvk/imap_tools/releases\"\u003eimap-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/blob/master/docs/release_notes.rst\"\u003eimap-tools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.12.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/commit/c59a60723b7e6fec353590811ec6ad674110031c\"\u003e\u003ccode\u003ec59a607\u003c/code\u003e\u003c/a\u003e MailMessage.headers - LazyHeaders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/32ddf22fcac2fc80c7ed9ce0a6719d020c9ff57f\"\u003e\u003ccode\u003e32ddf22\u003c/code\u003e\u003c/a\u003e MailMessage.headers docs\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ikvk/imap_tools/compare/v1.11.1...v1.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-core` from 0.14.16 to 0.14.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.20\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-04-03]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.2.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-agentops [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 50 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21164\"\u003e#21164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-aim [0.4.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-argilla [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-arize-phoenix [0.7.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-honeyhive [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-langfuse [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-literalai [1.4.0]\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/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.20]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 46 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21153\"\u003e#21153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): use async query generation in \u003ccode\u003eQueryFusionRetriever._aretrieve\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21160\"\u003e#21160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 50 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21164\"\u003e#21164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: fix typos, grammar, and formatting inconsistencies (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21218\"\u003e#21218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: fix extra bracket in data_sources and typo in data_sinks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21251\"\u003e#21251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 47 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21254\"\u003e#21254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 53 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21255\"\u003e#21255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate llama-index-workflows dependency to \u0026gt;=2.14.0 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21277\"\u003e#21277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDelete old folders (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21286\"\u003e#21286\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-adapter [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-alephalpha [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-alibabacloud-aisearch [0.4.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-anyscale [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-autoembeddings [0.3.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-azure-inference [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/41a18d9874d2a87430235cd0a5f772711de064f8\"\u003e\u003ccode\u003e41a18d9\u003c/code\u003e\u003c/a\u003e Release 0.14.20 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21290\"\u003e#21290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/89015f6d6567e25089d89490ef17421c5edcf8b3\"\u003e\u003ccode\u003e89015f6\u003c/code\u003e\u003c/a\u003e chore(deps): bump aiohttp from 3.13.3 to 3.13.4 in /docs/api_reference in the...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/e851dd0c366bf410cf47c82c78c44caf9da4961f\"\u003e\u003ccode\u003ee851dd0\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 22 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21264\"\u003e#21264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/0ac3f16af8c4962b32351229bf7daa6961762ba6\"\u003e\u003ccode\u003e0ac3f16\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 20 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21265\"\u003e#21265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/0540649e2647e4a869cae207523a87c54a1aa6a5\"\u003e\u003ccode\u003e0540649\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 18 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21266\"\u003e#21266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/5713ddcec9b7b496357d3d1c4cd85c0b9c07cbfd\"\u003e\u003ccode\u003e5713ddc\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 16 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21268\"\u003e#21268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/606b931988e33c51fec5c357c90109c39c7ee74c\"\u003e\u003ccode\u003e606b931\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 15 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21269\"\u003e#21269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c72f4fb63d98da90587bd77c40443b1a06160fd3\"\u003e\u003ccode\u003ec72f4fb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 3 directories with 11 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21291\"\u003e#21291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/519142086c5a38bb9bd4b0372a7ce89f121cfad1\"\u003e\u003ccode\u003e5191420\u003c/code\u003e\u003c/a\u003e Delete old folders (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21286\"\u003e#21286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c107fc06b1dc5bb5efd9e1b6808a52568be092ed\"\u003e\u003ccode\u003ec107fc0\u003c/code\u003e\u003c/a\u003e fix: fix extra bracket in data_sources and typo in data_sinks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21251\"\u003e#21251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.16...v0.14.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-embeddings-huggingface` from 0.6.1 to 0.7.0\n\nUpdates `llama-index-embeddings-openai` from 0.5.2 to 0.6.0\n\nUpdates `llama-index-llms-ollama` from 0.9.1 to 0.10.1\n\nUpdates `llama-index-llms-openai` from 0.6.26 to 0.7.5\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.3 to 0.6.0\n\nUpdates `nltk` from 3.9.3 to 3.9.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nltk/nltk/blob/develop/ChangeLog\"\u003enltk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion 3.9.4 2026-03-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14\u003c/li\u003e\n\u003cli\u003eFix bug in Levenshtein distance when substitution_cost \u0026gt; 2\u003c/li\u003e\n\u003cli\u003eFix bug in Treebank detokeniser re quote ordering\u003c/li\u003e\n\u003cli\u003eFix bug in Jaro similarity for empty strings\u003c/li\u003e\n\u003cli\u003eSeveral security enhancements\u003c/li\u003e\n\u003cli\u003eFix GHSA-rf74-v2fm-23pw: unbounded recursion in JSONTaggedDecoder\u003c/li\u003e\n\u003cli\u003eImplement TextTiling vocabulary introduction method (Hearst 1997)\u003c/li\u003e\n\u003cli\u003eFix ALINE feature matrix errors and add comprehensive tests\u003c/li\u003e\n\u003cli\u003eSupport multiple VerbNet versions, fix longid/shortid regex for VerbNet ids\u003c/li\u003e\n\u003cli\u003eLet downloader fallback to md5 when sha256 is unavailable\u003c/li\u003e\n\u003cli\u003eSeveral other minor bugfixes and code cleanups\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.4:\nMin-Yen Kan, Eric Kafe, Emily Voss, bowiechen, Hrudhai01,\njancallewaert, Mr-Neutr0n, pollak.peter89, ylwango613,\u003c/p\u003e\n\u003cp\u003eVersion 3.9.3 2026-02-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2025-14009: secure ZIP extraction in nltk.downloader (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3468\"\u003e#3468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/arbitrary reads in nltk.data for protocol-less refs (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3467\"\u003e#3467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/abs paths in corpus readers and FS pointers (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3479\"\u003e#3479\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3480\"\u003e#3480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eValidate external StanfordSegmenter JARs using SHA256 (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3477\"\u003e#3477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd optional sandbox enforcement for filestring() (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3485\"\u003e#3485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMaintenance: downloader/zipped models, CI/tooling updates\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.3:\nChris Clauss, Eric Kafe, HyperPS, purificant, Shivansh-Game, Christopher Smith\u003c/p\u003e\n\u003cp\u003eVersion 3.9.2 2025-10-01\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate download checksums to use SHA256 in built index\u003c/li\u003e\n\u003cli\u003eFix percentage escape in new-style string formatting\u003c/li\u003e\n\u003cli\u003ereplace shortened URLs using goo.gl\u003c/li\u003e\n\u003cli\u003eMake Wordnet interoperable with various taggers and tagged corpora\u003c/li\u003e\n\u003cli\u003eFix saving PerceptronTagger\u003c/li\u003e\n\u003cli\u003eDocument how to reproduce old Wordnet studies\u003c/li\u003e\n\u003cli\u003eproperly initialize Portuguese corpus reader\u003c/li\u003e\n\u003cli\u003esupport for mixed rules conversion into Chomsky Normal Form\u003c/li\u003e\n\u003cli\u003eonly import tkinter if a GUI is needed\u003c/li\u003e\n\u003cli\u003eissue \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/2112\"\u003e#2112\u003c/a\u003e with Corenlp\u003c/li\u003e\n\u003cli\u003enew environment variable NLTK_DOWNLOADER_FORCE_INTERACTIVE_SHELL\u003c/li\u003e\n\u003cli\u003eLesk defaults to most frequent sense in case of ties\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.2:\nJose Cols, Peter de Blanc, GeneralPoxter, Eric Kafe, William LaCroix, Jason Liu,\nSamer Masterson, Mike014, purificant, Andrew Ernest Ritz, samertm, Ikram Ul Haq,\nChristopher Smith, Ryan Mannion\u003c/p\u003e\n\u003cp\u003eVersion 3.9.1 2024-08-19\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/nltk/nltk/commit/ad9c96ba00a16923ffe917eacf63f1707bfa2d08\"\u003e\u003ccode\u003ead9c96b\u003c/code\u003e\u003c/a\u003e Update copyright year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/7edcddfda566627b897397397cc4d10ae91cb86d\"\u003e\u003ccode\u003e7edcddf\u003c/code\u003e\u003c/a\u003e Updates for 3.9.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/67a2736f89b286b028db08bd247134f17a11fc6b\"\u003e\u003ccode\u003e67a2736\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3180\"\u003e#3180\u003c/a\u003e from yzhaoinuw/bug-on-edit_distance_align\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/2b17ac5358a1c8d4b97455766efde0b786e6cdb2\"\u003e\u003ccode\u003e2b17ac5\u003c/code\u003e\u003c/a\u003e Fix edit_distance_align backtrace for high substitution costs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/4b72976a6ff3d180ed4012f11843e611a8f89516\"\u003e\u003ccode\u003e4b72976\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3018\"\u003e#3018\u003c/a\u003e from JuanIMartinezB/bug/shortid-longid\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/8a5619f53a281149e5342b1a00fe05fe2fc6517f\"\u003e\u003ccode\u003e8a5619f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3222\"\u003e#3222\u003c/a\u003e from Syzygy2048/feature/texttiling-vocabulary-introd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/c6574d755e02b6163d9cd1d0b407076940e08864\"\u003e\u003ccode\u003ec6574d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3289\"\u003e#3289\u003c/a\u003e from ihitamandal/codeflash/optimize-windowdiff-2024-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/98ff5d9eaa1a81511873b9aef857944519c28dc4\"\u003e\u003ccode\u003e98ff5d9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3435\"\u003e#3435\u003c/a\u003e from Hrudhai01/fix-3260-detokenize-quotes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/aec4fce1b84ad725b8975f7365b23a4f626572a9\"\u003e\u003ccode\u003eaec4fce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3522\"\u003e#3522\u003c/a\u003e from ekaf/pathsec\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/eec4ee3591cb9cb8b8c2989f08012608c841d532\"\u003e\u003ccode\u003eeec4ee3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3526\"\u003e#3526\u003c/a\u003e from nltk/update-contributing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nltk/nltk/compare/3.9.3...3.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ocrmypdf` from 17.3.0 to 17.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/releases\"\u003eocrmypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev17.4.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed RTL text extraction order in the fpdf2 renderer. Arabic lam-alef\nligatures and other multi-character CMap entries were garbled by the bidi\nalgorithm during text extraction. {issue}\u003ccode\u003e1655\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ework_folder\u003c/code\u003e not being set in \u003ccode\u003ePdfContext\u003c/code\u003e options when using\nthe Python API. Thanks \u003ca href=\"https://github.com/bluebox-steven\"\u003e\u003ccode\u003e@​bluebox-steven\u003c/code\u003e\u003c/a\u003e. {issue}\u003ccode\u003e1613\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdated Ghostscript JPEG corruption warning to include the detected version\nnumber, confirming the bug persists in Ghostscript 10.7.0.\u003c/li\u003e\n\u003cli\u003eInternal refactoring.\u003c/li\u003e\n\u003cli\u003eCI dependency updates.\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/ocrmypdf/OCRmyPDF/commit/89c76b51455b7e7e4158558b4ca7a8eaf31063ef\"\u003e\u003ccode\u003e89c76b5\u003c/code\u003e\u003c/a\u003e v17.4.1 release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/commit/6f2b8408c1c490798775fd9f9cfd9d402f6c0017\"\u003e\u003ccode\u003e6f2b840\u003c/code\u003e\u003c/a\u003e v17.4.0 release notes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/compare/v17.3.0...v17.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openai` from 2.26.0 to 2.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.31.0\u003c/h2\u003e\n\u003ch2\u003e2.31.0 (2026-04-08)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.30.0...v2.31.0\"\u003ev2.30.0...v2.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add phase field to conversations message (\u003ca href=\"https://github.com/openai/openai-python/commit/3e5834efb39b24e019a29dc54d890c67d18cbb54\"\u003e3e5834e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add web_search_call.results to ResponseIncludable type (\u003ca href=\"https://github.com/openai/openai-python/commit/ffd8741dd38609a5af0159ceb800d8ddba7925f8\"\u003effd8741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add support for short-lived tokens (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/1608\"\u003e#1608\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/22fe7228d4990c197cd721b3ad7931ad05cca5dd\"\u003e22fe722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e support sending raw data over websockets (\u003ca href=\"https://github.com/openai/openai-python/commit/f1bc52ef641dfca6fdf2a5b00ce3b09bff2552f5\"\u003ef1bc52e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e implement indices array format for query and form serialization (\u003ca href=\"https://github.com/openai/openai-python/commit/49194cfa711328216ff131d6f65c9298822a7c51\"\u003e49194cf\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e preserve hardcoded query params when merging with user params (\u003ca href=\"https://github.com/openai/openai-python/commit/92e109c3d9569a942e1919e75977dc13fa015f9a\"\u003e92e109c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e remove web_search_call.results from ResponseIncludable (\u003ca href=\"https://github.com/openai/openai-python/commit/d3cc40165cd86015833d15167cc7712b4102f932\"\u003ed3cc401\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.20.1 (\u003ca href=\"https://github.com/openai/openai-python/commit/d60e2eea7f6916540cd4ba901dceb07051119da4\"\u003ed60e2ee\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.20.2 (\u003ca href=\"https://github.com/openai/openai-python/commit/6508d474332d4e82d9615c0a9a77379f9b5e4412\"\u003e6508d47\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update file parameter descriptions in vector_stores files and file_batches (\u003ca href=\"https://github.com/openai/openai-python/commit/a9e7ebd505b9ae90514339aa63c6f1984a08cf6b\"\u003ea9e7ebd\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.30.0\u003c/h2\u003e\n\u003ch2\u003e2.30.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.29.0...v2.30.0\"\u003ev2.29.0...v2.30.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add keys field to Click/DoubleClick/Drag/Move/Scroll computer actions (\u003ca href=\"https://github.com/openai/openai-python/commit/ee1bbeddbb38dab817557412dc106354409bb950\"\u003eee1bbed\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e align SDK response types with expanded item schemas (\u003ca href=\"https://github.com/openai/openai-python/commit/f3f258a9d4d19db3fb0c6c35e25ad3cedbe71254\"\u003ef3f258a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esanitize endpoint path params (\u003ca href=\"https://github.com/openai/openai-python/commit/89f66988fde790c0c83ff8b876d1e1b10d616367\"\u003e89f6698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e make type required in ResponseInputMessageItem (\u003ca href=\"https://github.com/openai/openai-python/commit/cfdb1676ea0550840330a58f1a31a40a41a0a53f\"\u003ecfdb167\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e skip lint on metadata-only changes (\u003ca href=\"https://github.com/openai/openai-python/commit/faa93e19a1d5c30c7dd672a08dbbdbb3c0374714\"\u003efaa93e1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.31.0 (2026-04-08)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.30.0...v2.31.0\"\u003ev2.30.0...v2.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add phase field to conversations message (\u003ca href=\"https://github.com/openai/openai-python/commit/3e5834efb39b24e019a29dc54d890c67d18cbb54\"\u003e3e5834e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add web_search_call.results to ResponseIncludable type (\u003ca href=\"https://github.com/openai/openai-python/commit/ffd8741dd38609a5af0159ceb800d8ddba7925f8\"\u003effd8741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add support for short-lived tokens (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/1608\"\u003e#1608\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/22fe7228d4990c197cd721b3ad7931ad05cca5dd\"\u003e22fe722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e support sending raw data over websockets (\u003ca href=\"https://github.com/openai/openai-python/commit/f1bc52ef641dfca6fdf2a5b00ce3b09bff2552f5\"\u003ef1bc52e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e implement indices array format for query and form serialization (\u003ca href=\"h...\n\n_Description has been truncated_","html_url":"https://github.com/edsanpemc/paperless-ngx/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsanpemc%2Fpaperless-ngx/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/packages"},{"uuid":"4258128585","node_id":"PR_kwDOLxo-qc7SIRE5","number":36,"state":"closed","title":"Update pytest-env requirement from \u003c2.0.0,\u003e=1.1.3 to \u003e=1.6.0,\u003c2.0.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-20T04:52:49.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-13T21:58:43.000Z","updated_at":"2026-04-20T04:52:51.000Z","time_to_close":543246,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"pytest-env","old_version":"\u003c2.0.0,\u003e=1.1.3","new_version":"\u003e=1.6.0,\u003c2.0.0","repository_url":"https://github.com/pytest-dev/pytest-env"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [pytest-env](https://github.com/pytest-dev/pytest-env) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.1.3...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/OpenSpeleo/pytool_mnemo_lib/pull/36","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenSpeleo%2Fpytool_mnemo_lib/issues/36","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/36/packages"},{"uuid":"4228694549","node_id":"PR_kwDOCEwExM7Q-6r3","number":21486,"state":"open","title":"chore(deps): bump the uv-dependencies group with 19 updates","user":"dependabot[bot]","labels":["development"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-09T01:08:02.000Z","updated_at":"2026-04-09T01:12:55.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"uv-dependencies","update_count":19,"packages":[{"name":"click","old_version":"8.3.1","new_version":"8.3.2","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"46.0.6","new_version":"46.0.7","repository_url":"https://github.com/pyca/cryptography"},{"name":"readchar","old_version":"4.2.1","new_version":"4.2.2","repository_url":"https://github.com/magmax/python-readchar"},{"name":"cyclopts","old_version":"4.10.1","new_version":"4.10.2","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"pydantic-extra-types","old_version":"2.11.1","new_version":"2.11.2","repository_url":"https://github.com/pydantic/pydantic-extra-types"},{"name":"uvicorn","old_version":"0.42.0","new_version":"0.44.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"whenever","old_version":"0.9.5","new_version":"0.10.0","repository_url":"https://github.com/ariebovenberg/whenever"},{"name":"uv","old_version":"0.11.3","new_version":"0.11.5","repository_url":"https://github.com/astral-sh/uv"},{"name":"prefect-kubernetes","old_version":"0.7.6","new_version":"0.7.7","repository_url":"https://github.com/PrefectHQ/prefect"},{"name":"prefect-redis","old_version":"0.2.9","new_version":"0.2.10","repository_url":"https://github.com/PrefectHQ/prefect"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.0.0","new_version":"0.23.3","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-env","old_version":"1.2.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"setuptools","old_version":"80.10.2","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"respx","old_version":"0.22.0","new_version":"0.23.1","repository_url":"https://github.com/lundberg/respx"},{"name":"ruff","old_version":"0.15.8","new_version":"0.15.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"6.2.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-dateparser","old_version":"1.4.0.20260328","new_version":"1.4.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-dependencies group with 19 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.6` | `46.0.7` |\n| [readchar](https://github.com/magmax/python-readchar) | `4.2.1` | `4.2.2` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.10.1` | `4.10.2` |\n| [pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | `2.11.1` | `2.11.2` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.42.0` | `0.44.0` |\n| [whenever](https://github.com/ariebovenberg/whenever) | `0.9.5` | `0.10.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.11.3` | `0.11.5` |\n| [prefect-kubernetes](https://github.com/PrefectHQ/prefect) | `0.7.6` | `0.7.7` |\n| [prefect-redis](https://github.com/PrefectHQ/prefect) | `0.2.9` | `0.2.10` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.3` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.0.0` | `0.23.3` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.2.0` | `1.6.0` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.10.2` | `82.0.1` |\n| [respx](https://github.com/lundberg/respx) | `0.22.0` | `0.23.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.8` | `0.15.9` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `6.2.0.20260408` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260408` |\n| [types-dateparser](https://github.com/python/typeshed) | `1.4.0.20260328` | `1.4.0.20260408` |\n\nUpdates `click` from 8.3.1 to 8.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3084\"\u003e#3084\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3152\"\u003e#3152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3199\"\u003e#3199\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3202\"\u003e#3202\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3209\"\u003e#3209\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3212\"\u003e#3212\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2991\"\u003e#2991\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2993\"\u003e#2993\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3110\"\u003e#3110\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3140\"\u003e#3140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3121\"\u003e#3121\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3201\"\u003e#3201\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3213\"\u003e#3213\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3225\"\u003e#3225\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n:issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e2991\u003c/code\u003e :issue:\u003ccode\u003e2993\u003c/code\u003e :issue:\u003ccode\u003e3110\u003c/code\u003e :pr:\u003ccode\u003e3139\u003c/code\u003e :pr:\u003ccode\u003e3140\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. :pr:\u003ccode\u003e3139\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. :issue:\u003ccode\u003e3121\u003c/code\u003e :pr:\u003ccode\u003e3201\u003c/code\u003e :pr:\u003ccode\u003e3213\u003c/code\u003e :pr:\u003ccode\u003e3225\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/052c006033729bbb422cbdad0c4fee988ecb5aa5\"\u003e\u003ccode\u003e052c006\u003c/code\u003e\u003c/a\u003e Change update release date.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/502b7ce7b131473ef00a3586e60bb000f33b4c43\"\u003e\u003ccode\u003e502b7ce\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' of \u003ca href=\"https://github.com/pallets/click\"\u003ehttps://github.com/pallets/click\u003c/a\u003e into release-8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a0a37e411820861d48e21b131fdd840abaf746e0\"\u003e\u003ccode\u003ea0a37e4\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3301\"\u003e#3301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/57be6fc2b40eb40279d022e6aabc983ee0dfb7a9\"\u003e\u003ccode\u003e57be6fc\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/781d6a88bdd30229e72a84cd6753b0235f339679\"\u003e\u003ccode\u003e781d6a8\u003c/code\u003e\u003c/a\u003e Update publish workflows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3266\"\u003e#3266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ff795b66ba945239c779b528171f5fe4536cf844\"\u003e\u003ccode\u003eff795b6\u003c/code\u003e\u003c/a\u003e Update precommit pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/dd87ef4f9fa7d6f13e14885e9a6842a21ededebc\"\u003e\u003ccode\u003edd87ef4\u003c/code\u003e\u003c/a\u003e Update github action pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/93d3f9d22e90035bc2b51c2183c15bd4a021376f\"\u003e\u003ccode\u003e93d3f9d\u003c/code\u003e\u003c/a\u003e Release version 8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3299ba1a8a5de34b24a7226a683a837d8a0857e7\"\u003e\u003ccode\u003e3299ba1\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3264\"\u003e#3264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b7f62c4d002e5b5bca3ebef6b995b7338740fe6f\"\u003e\u003ccode\u003eb7f62c4\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.1...8.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 46.0.6 to 46.0.7\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e46.0.7 - 2026-04-07\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **SECURITY ISSUE**: Fixed an issue where non-contiguous buffers could be\n  passed to APIs that accept Python buffers, which could lead to buffer\n  overflow. **CVE-2026-39892**\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.6.\n\u003cp\u003e.. _v46-0-6:\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/622d672e429a7cff836a23c5903683dbec1901f5\"\u003e\u003ccode\u003e622d672\u003c/code\u003e\u003c/a\u003e 46.0.7 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14602\"\u003e#14602\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.6...46.0.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `readchar` from 4.2.1 to 4.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/magmax/python-readchar/releases\"\u003ereadchar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix pytest 9 compatibility by \u003ca href=\"https://github.com/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd android as supported platform by \u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ehttps://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/05faadbfd883e80fe8e3ff1f8da97471a3b85262\"\u003e\u003ccode\u003e05faadb\u003c/code\u003e\u003c/a\u003e release v4.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/a9f2384ae26520a9456673b73c05944aae8fd2ca\"\u003e\u003ccode\u003ea9f2384\u003c/code\u003e\u003c/a\u003e Add android as supported platform (\u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/130\"\u003e#130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/753cb421b5a2cbe3601b1923992ac8b4985839a1\"\u003e\u003ccode\u003e753cb42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/129\"\u003e#129\u003c/a\u003e from mweinelt/pytest9-compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/5165992002f211fe85175bcbb4f9a60d5e90fdac\"\u003e\u003ccode\u003e5165992\u003c/code\u003e\u003c/a\u003e Fix pytest 9 compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/2204f05e47b7e5c6209a49dfde0ad64938e439a5\"\u003e\u003ccode\u003e2204f05\u003c/code\u003e\u003c/a\u003e increment version after release\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cyclopts` from 4.10.1 to 4.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/BrianPugh/cyclopts/releases\"\u003ecyclopts's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.10.2\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConvenience Types:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eNormFloat\u003c/code\u003e - A float in the range \u003ccode\u003e[0, 1]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSignedNormFloat\u003c/code\u003e - A float in the range \u003ccode\u003e[-1, 1]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePercentInt\u003c/code\u003e - An int in the range \u003ccode\u003e[0, 100]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBy \u003ca href=\"https://github.com/BrianPugh\"\u003e\u003ccode\u003e@​BrianPugh\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BrianPugh/cyclopts/pull/778\"\u003eBrianPugh/cyclopts#778\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of Union'd iterables by \u003ca href=\"https://github.com/BrianPugh\"\u003e\u003ccode\u003e@​BrianPugh\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BrianPugh/cyclopts/pull/781\"\u003eBrianPugh/cyclopts#781\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/BrianPugh/cyclopts/compare/v4.10.1...v4.10.2\"\u003ehttps://github.com/BrianPugh/cyclopts/compare/v4.10.1...v4.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BrianPugh/cyclopts/commit/d003ce3b5f1c14c5d650d49439462ec07d1614b0\"\u003e\u003ccode\u003ed003ce3\u003c/code\u003e\u003c/a\u003e Fix handling of Union'd iterables\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BrianPugh/cyclopts/commit/222b85fb9617967fe16263b9dedde803fdcfc4bd\"\u003e\u003ccode\u003e222b85f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BrianPugh/cyclopts/issues/778\"\u003e#778\u003c/a\u003e from BrianPugh/more-convenience-types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BrianPugh/cyclopts/commit/276930bfb20403e9c42dfd40fb6310786af1080a\"\u003e\u003ccode\u003e276930b\u003c/code\u003e\u003c/a\u003e rename PercentageInt to PercentInt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BrianPugh/cyclopts/commit/b9428597a3548b1a340f9355e630faa7c8e2d471\"\u003e\u003ccode\u003eb942859\u003c/code\u003e\u003c/a\u003e NormFloat, SignedNormFloat, PercentageInt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BrianPugh/cyclopts/commit/2cbfbb2af31ac240e01d24177155d6fd925037d2\"\u003e\u003ccode\u003e2cbfbb2\u003c/code\u003e\u003c/a\u003e Add a cookbook example showing random tips.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/BrianPugh/cyclopts/compare/v4.10.1...v4.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-extra-types` from 2.11.1 to 2.11.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/releases\"\u003epydantic-extra-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.11.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: accept common timezone abbreviations like EDT in TimeZoneName validator by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/376\"\u003epydantic/pydantic-extra-types#376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct ISO 8601 serialization for negative pendulum Duration values by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/377\"\u003epydantic/pydantic-extra-types#377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/378\"\u003epydantic/pydantic-extra-types#378\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(python): add missing Pendulum Interval wrapper support by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/379\"\u003epydantic/pydantic-extra-types#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(isin): add ISIN type with checksum validation by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/380\"\u003epydantic/pydantic-extra-types#380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(json_schema): add JsonSchema type validated by jsonschema by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/381\"\u003epydantic/pydantic-extra-types#381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔖 Release version 2.11.2 by \u003ca href=\"https://github.com/yezz123\"\u003e\u003ccode\u003e@​yezz123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/382\"\u003epydantic/pydantic-extra-types#382\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/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/376\"\u003epydantic/pydantic-extra-types#376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/379\"\u003epydantic/pydantic-extra-types#379\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-extra-types/compare/v2.11.1...v2.11.2\"\u003ehttps://github.com/pydantic/pydantic-extra-types/compare/v2.11.1...v2.11.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/blob/main/HISTORY.md\"\u003epydantic-extra-types's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.11.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: accept common timezone abbreviations like EDT in TimeZoneName validator by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/376\"\u003epydantic/pydantic-extra-types#376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct ISO 8601 serialization for negative pendulum Duration values by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/377\"\u003epydantic/pydantic-extra-types#377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/378\"\u003epydantic/pydantic-extra-types#378\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(python): add missing Pendulum Interval wrapper support by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/379\"\u003epydantic/pydantic-extra-types#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(isin): add ISIN type with checksum validation by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/380\"\u003epydantic/pydantic-extra-types#380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(json_schema): add JsonSchema type validated by jsonschema by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/381\"\u003epydantic/pydantic-extra-types#381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔖 Release version 2.11.2  by \u003ca href=\"https://github.com/yezz123\"\u003e\u003ccode\u003e@​yezz123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/382\"\u003epydantic/pydantic-extra-types#382\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/pydantic/pydantic-extra-types/commit/eb519c6bd5c2ffaca88e22755fae846081834e2d\"\u003e\u003ccode\u003eeb519c6\u003c/code\u003e\u003c/a\u003e 🔖 Release version 2.11.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/b499ce2408154eb135157f60aea566dd740ba335\"\u003e\u003ccode\u003eb499ce2\u003c/code\u003e\u003c/a\u003e feat(json_schema): add JsonSchema type validated by jsonschema (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/11b606d429b09c69ffd6ad50035056c799165dc4\"\u003e\u003ccode\u003e11b606d\u003c/code\u003e\u003c/a\u003e feat(isin): add ISIN type with checksum validation (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/e92351734218ceaa9c164b35673019f898771df4\"\u003e\u003ccode\u003ee923517\u003c/code\u003e\u003c/a\u003e fix(python): add missing Pendulum Interval wrapper support (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/379\"\u003e#379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/07ff36e6c38d71ff039dd45bbb019c894de9b4de\"\u003e\u003ccode\u003e07ff36e\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/7b75619af608d5936b058eeba7b01addd1e5ff79\"\u003e\u003ccode\u003e7b75619\u003c/code\u003e\u003c/a\u003e fix: correct ISO 8601 serialization for negative pendulum Duration values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/6ea238fb97113d1ce1e64fa6b30a9fa9c6e1995b\"\u003e\u003ccode\u003e6ea238f\u003c/code\u003e\u003c/a\u003e fix: accept common timezone abbreviations like EDT in TimeZoneName validator ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/compare/v2.11.1...v2.11.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.42.0 to 0.44.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.43.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.44.0 (April 6, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2888\"\u003e#2888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.43.0 (April 3, 2026)\u003c/h2\u003e\n\u003cp\u003eYou can quit Uvicorn now. We heard you, \u003ca href=\"https://github.com/pamelafox\"\u003e\u003ccode\u003e@​pamelafox\u003c/code\u003e\u003c/a\u003e - all 47 of your Ctrl+C's (thanks for flagging it, and thanks to \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e for the fix 🙏). \u003ca href=\"https://x.com/pamelafox/status/2039097686155227623\"\u003eSee the tweet\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/edb54c43c0321c0b41eee1473f3f4cf145e8927f\"\u003e\u003ccode\u003eedb54c4\u003c/code\u003e\u003c/a\u003e Version 0.44.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2890\"\u003e#2890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/029be08867fe899cde6fd31a3ba75fffca7bd9ae\"\u003e\u003ccode\u003e029be08\u003c/code\u003e\u003c/a\u003e Implement websocket keepalive pings for websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2888\"\u003e#2888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8d397c73191b49c6d5280098d7c09dbe474e00bf\"\u003e\u003ccode\u003e8d397c7\u003c/code\u003e\u003c/a\u003e Version 0.43.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/587042d68ff6c813ec0d8cfafaa820ebe7229d23\"\u003e\u003ccode\u003e587042d\u003c/code\u003e\u003c/a\u003e 🐛 Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for s...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/c9a75fb67b2e969253a41ef4ad447e013eee879e\"\u003e\u003ccode\u003ec9a75fb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2878\"\u003e#2878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/84fd578224e36766efb056585cb6cc5171270089\"\u003e\u003ccode\u003e84fd578\u003c/code\u003e\u003c/a\u003e chore(deps): bump pygments from 2.19.2 to 2.20.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2877\"\u003e#2877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd52d34b55d898180a65cfc01a6a88aac54c65c3\"\u003e\u003ccode\u003ecd52d34\u003c/code\u003e\u003c/a\u003e Use native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5211880320b2e99a532eb121808039404da234ab\"\u003e\u003ccode\u003e5211880\u003c/code\u003e\u003c/a\u003e Drop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1cb8e747e2817ee46a4c0d44139e46b3b1f8fab6\"\u003e\u003ccode\u003e1cb8e74\u003c/code\u003e\u003c/a\u003e Add websocket 500 fallback header test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/28efbb24bd590f1f943cbc2bf84f197268a8c6d8\"\u003e\u003ccode\u003e28efbb2\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump cryptography from 46.0.5 to 46.0.6 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2873\"\u003e#2873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.44.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `whenever` from 0.9.5 to 0.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ariebovenberg/whenever/releases\"\u003ewhenever's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.10.0\u003c/h2\u003e\n\u003cp\u003eA big release with several breaking changes and improvements. Highlights are the new delta API, customizable string formatting and parsing, and \u003ccode\u003esince()\u003c/code\u003e/\u003ccode\u003euntil()\u003c/code\u003e methods for calculating differences between datetimes. See the full list below.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eDateTimeDelta\u003c/code\u003e and \u003ccode\u003eDateDelta\u003c/code\u003e have been replaced by \u003ccode\u003eItemizedDelta\u003c/code\u003e and \u003ccode\u003eItemizedDateDelta\u003c/code\u003e, respectively. The helper functions for creating calendar deltas (\u003ccode\u003eyears()\u003c/code\u003e, \u003ccode\u003emonths()\u003c/code\u003e, \u003ccode\u003eweeks()\u003c/code\u003e, \u003ccode\u003edays()\u003c/code\u003e) have also been deprecated.\u003c/p\u003e\n\u003cp\u003eThe new deltas are fully un-normalized, meaning \u0026quot;90 minutes\u0026quot; and \u0026quot;1 hour and 30 minutes\u0026quot; are distinct values. They implement the \u003ccode\u003eMapping\u003c/code\u003e interface and support a rich set of operations including \u003ccode\u003eadd()\u003c/code\u003e, \u003ccode\u003esubtract()\u003c/code\u003e, \u003ccode\u003etotal()\u003c/code\u003e, \u003ccode\u003ein_units()\u003c/code\u003e, \u003ccode\u003ereplace()\u003c/code\u003e, and \u003ccode\u003esign()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: the \u0026quot;partially\u0026quot; normalized approach was confusing to users. A fully un-normalized approach also better fits the new API for calculating deltas between datetimes. This approach is also more consistent with other libraries, and allows for more control over formatting and parsing of deltas.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003eDateDelta(...)\u003c/code\u003e with \u003ccode\u003eItemizedDateDelta(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eDateTimeDelta(...)\u003c/code\u003e with \u003ccode\u003eItemizedDelta(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eyears()\u003c/code\u003e, \u003ccode\u003emonths()\u003c/code\u003e, \u003ccode\u003eweeks()\u003c/code\u003e, \u003ccode\u003edays()\u003c/code\u003e helper functions with \u003ccode\u003eItemizedDateDelta(years=...)\u003c/code\u003e, etc. Or, if passing to a datetime method, use keyword arguments directly (e.g. \u003ccode\u003edt.add(years=1, months=2)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e.in_months_days()\u003c/code\u003e and \u003ccode\u003e.in_months_days_secs_nanos()\u003c/code\u003e with \u003ccode\u003e.in_units(['months', 'days'])\u003c/code\u003e and \u003ccode\u003e.in_units(['months', 'days', 'seconds', 'nanoseconds'])\u003c/code\u003e, respectively.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eDate\u003c/code\u003e \u003ccode\u003e+\u003c/code\u003e/\u003ccode\u003e-\u003c/code\u003e operators with \u003ccode\u003eDateDelta\u003c/code\u003e are deprecated; use \u003ccode\u003eadd()\u003c/code\u003e/\u003ccode\u003esubtract()\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eDate\u003c/code\u003e \u003ccode\u003e-\u003c/code\u003e operator between two dates is deprecated; use \u003ccode\u003esince()\u003c/code\u003e or \u003ccode\u003esubtract()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003eignore_dst\u003c/code\u003e parameter (which was used to enable DST-unsafe operations) has been replaced by a warnings mechanism that allows users to suppress or escalate DST-related warnings using per-method keyword arguments or Python's standard warning filters.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: The \u003ccode\u003eignore_dst\u003c/code\u003e parameter was a source of confusion, and made the \u003ccode\u003eOffsetDateTime\u003c/code\u003e APIs less compatible.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003eignore_dst=True\u003c/code\u003e with the appropriate keyword argument:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eOffsetDateTime\u003c/code\u003e methods: \u003ccode\u003estale_offset_ok=True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePlainDateTime\u003c/code\u003e methods: \u003ccode\u003enaive_arithmetic_ok=True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTimeDelta\u003c/code\u003e methods: \u003ccode\u003edays_assumed_24h_ok=True\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAlternatively, use Python's \u003ccode\u003ewarnings.filterwarnings()\u003c/code\u003e to suppress \u003ccode\u003eStaleOffsetWarning\u003c/code\u003e, \u003ccode\u003eNaiveArithmeticWarning\u003c/code\u003e, or \u003ccode\u003eDaysAssumed24HoursWarning\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eignore_dst\u003c/code\u003e is still accepted (with a deprecation warning) and will be removed in a future release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBehavior of an edge case is changed: disambiguation of non-existent times as a result of calendar arithmetic (or \u003ccode\u003ereplace()\u003c/code\u003e) no longer tries to reuse the previous offset. This change also fixes a rare bug in case a timezone transition skips an entire day (like the Samoa timezone did in 2011) (\u003ca href=\"https://redirect.github.com/ariebovenberg/whenever/issues/252\"\u003e#252\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: Unlike the case of repeated times, reusing the previous offset for non-existent times doesn't have the advantage of preventing unexpected jumps in time. The new behavior is consistent with other libraries.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.9 support\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: Python 3.9 is EOL since October 2025. Python 3.9 only accounts for less than 0.1% of downloads.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved \u003ccode\u003eformat_common_iso()\u003c/code\u003e and \u003ccode\u003eparse_common_iso()\u003c/code\u003e methods. Use \u003ccode\u003eformat_iso()\u003c/code\u003e and \u003ccode\u003eparse_iso()\u003c/code\u003e instead. These have been deprecated since 0.9.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003eround()\u003c/code\u003e methods are stricter about keyword-only and positional-only arguments.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecated\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTimeDelta.in_hours()\u003c/code\u003e, \u003ccode\u003e.in_minutes()\u003c/code\u003e, \u003ccode\u003e.in_seconds()\u003c/code\u003e, \u003ccode\u003e.in_milliseconds()\u003c/code\u003e, \u003ccode\u003e.in_microseconds()\u003c/code\u003e, \u003ccode\u003e.in_nanoseconds()\u003c/code\u003e, \u003ccode\u003e.in_days_of_24h()\u003c/code\u003e, and \u003ccode\u003e.in_hrs_mins_secs_nanos()\u003c/code\u003e. Use \u003ccode\u003etotal()\u003c/code\u003e or \u003ccode\u003ein_units()\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDate.days_since()\u003c/code\u003e and \u003ccode\u003eDate.days_until()\u003c/code\u003e. Use \u003ccode\u003esince()\u003c/code\u003e and \u003ccode\u003euntil()\u003c/code\u003e with \u003ccode\u003etotal='days'\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epy_date()\u003c/code\u003e, \u003ccode\u003epy_time()\u003c/code\u003e, \u003ccode\u003epy_datetime()\u003c/code\u003e, and \u003ccode\u003epy_timedelta()\u003c/code\u003e. Use the new \u003ccode\u003eto_stdlib()\u003c/code\u003e method instead, which provides a consistent name across all types.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efrom_py_date()\u003c/code\u003e, \u003ccode\u003efrom_py_time()\u003c/code\u003e, \u003ccode\u003efrom_py_datetime()\u003c/code\u003e, and \u003ccode\u003efrom_py_timedelta()\u003c/code\u003e. Use the constructor directly instead (e.g. \u003ccode\u003eDate(datetime.date(...))\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eparse_strptime()\u003c/code\u003e methods on \u003ccode\u003eOffsetDateTime\u003c/code\u003e and \u003ccode\u003ePlainDateTime\u003c/code\u003e. Use the new \u003ccode\u003eparse()\u003c/code\u003e method instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ariebovenberg/whenever/blob/main/CHANGELOG.md\"\u003ewhenever's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.10.0 (2026-04-05)\u003c/h2\u003e\n\u003cp\u003eA big release with several breaking changes and improvements. Highlights\nare the new delta API, customizable string formatting and parsing,\nand \u003ccode\u003esince()\u003c/code\u003e/\u003ccode\u003euntil()\u003c/code\u003e methods for calculating differences between datetimes.\nSee the full list below.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eDateTimeDelta\u003c/code\u003e and \u003ccode\u003eDateDelta\u003c/code\u003e have been replaced by\n\u003ccode\u003eItemizedDelta\u003c/code\u003e and \u003ccode\u003eItemizedDateDelta\u003c/code\u003e, respectively.\nThe helper functions for creating calendar deltas\n(\u003ccode\u003eyears()\u003c/code\u003e, \u003ccode\u003emonths()\u003c/code\u003e, \u003ccode\u003eweeks()\u003c/code\u003e, \u003ccode\u003edays()\u003c/code\u003e) have also been deprecated.\u003c/p\u003e\n\u003cp\u003eThe new deltas are fully un-normalized,\nmeaning \u0026quot;90 minutes\u0026quot; and \u0026quot;1 hour and 30 minutes\u0026quot; are distinct values.\nThey implement the \u003ccode\u003eMapping\u003c/code\u003e interface and support a rich set of operations\nincluding \u003ccode\u003eadd()\u003c/code\u003e, \u003ccode\u003esubtract()\u003c/code\u003e, \u003ccode\u003etotal()\u003c/code\u003e, \u003ccode\u003ein_units()\u003c/code\u003e, \u003ccode\u003ereplace()\u003c/code\u003e,\nand \u003ccode\u003esign()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: the \u0026quot;partially\u0026quot; normalized approach was confusing to users.\nA fully un-normalized approach also better fits the new API for calculating deltas\nbetween datetimes. This approach is also more consistent with other\nlibraries, and allows for more control over formatting and parsing of deltas.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003eDateDelta(...)\u003c/code\u003e with \u003ccode\u003eItemizedDateDelta(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eDateTimeDelta(...)\u003c/code\u003e with \u003ccode\u003eItemizedDelta(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eyears()\u003c/code\u003e, \u003ccode\u003emonths()\u003c/code\u003e, \u003ccode\u003eweeks()\u003c/code\u003e, \u003ccode\u003edays()\u003c/code\u003e helper functions\nwith \u003ccode\u003eItemizedDateDelta(years=...)\u003c/code\u003e, etc. Or, if passing to a\ndatetime method, use keyword arguments directly (e.g. \u003ccode\u003edt.add(years=1, months=2)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e.in_months_days()\u003c/code\u003e and \u003ccode\u003e.in_months_days_secs_nanos()\u003c/code\u003e\nwith \u003ccode\u003e.in_units(['months', 'days'])\u003c/code\u003e and \u003ccode\u003e.in_units(['months', 'days', 'seconds', 'nanoseconds'])\u003c/code\u003e, respectively.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eDate\u003c/code\u003e \u003ccode\u003e+\u003c/code\u003e/\u003ccode\u003e-\u003c/code\u003e operators with \u003ccode\u003eDateDelta\u003c/code\u003e are deprecated;\nuse \u003ccode\u003eadd()\u003c/code\u003e/\u003ccode\u003esubtract()\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eDate\u003c/code\u003e \u003ccode\u003e-\u003c/code\u003e operator between two dates is deprecated;\nuse \u003ccode\u003esince()\u003c/code\u003e or \u003ccode\u003esubtract()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003eignore_dst\u003c/code\u003e parameter (which was used to enable DST-unsafe operations)\nhas been replaced by a warnings mechanism that allows users to\nsuppress or escalate DST-related warnings\nusing per-method keyword arguments or Python's standard warning filters.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: The \u003ccode\u003eignore_dst\u003c/code\u003e parameter was a source of confusion,\nand made the \u003ccode\u003eOffsetDateTime\u003c/code\u003e APIs less compatible.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003eignore_dst=True\u003c/code\u003e with the appropriate keyword argument:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eOffsetDateTime\u003c/code\u003e methods: \u003ccode\u003estale_offset_ok=True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePlainDateTime\u003c/code\u003e methods: \u003ccode\u003enaive_arithmetic_ok=True\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/71d6fd3ec5c35ee1b8e4cf6eb42d042c3d89a2f6\"\u003e\u003ccode\u003e71d6fd3\u003c/code\u003e\u003c/a\u003e prepare next release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/21807b57e593e00d3f63e73797527d16bc7bb9a0\"\u003e\u003ccode\u003e21807b5\u003c/code\u003e\u003c/a\u003e docs improvements, fix nth_weekday limitation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/102f54cd63a24fb173c781aee1793b3648897837\"\u003e\u003ccode\u003e102f54c\u003c/code\u003e\u003c/a\u003e support deltas in Instant.add/subtract, update arithmetic docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/bb0c433da2b0380ca66085098328b487008a176e\"\u003e\u003ccode\u003ebb0c433\u003c/code\u003e\u003c/a\u003e clean up test/docs gaps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/88584e5f5fbfb3cc03e9d0468577e3c9086afaef\"\u003e\u003ccode\u003e88584e5\u003c/code\u003e\u003c/a\u003e extend leap second support to custom format parsing and docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/93d37e12d822655548f5a83effe4548bea3e2eea\"\u003e\u003ccode\u003e93d37e1\u003c/code\u003e\u003c/a\u003e fix: resolve CI failures after rebase\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/37531baf3ab8b7ac8e33d57fa5d12050453ebc4c\"\u003e\u003ccode\u003e37531ba\u003c/code\u003e\u003c/a\u003e fix(time): handle leap seconds in time parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/dd81af3bbec54525b57c7bb49c7df9a705cc6cd9\"\u003e\u003ccode\u003edd81af3\u003c/code\u003e\u003c/a\u003e fix: partial CR changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/cf6fe9d7160a5f814346ea72043ff328337cf77f\"\u003e\u003ccode\u003ecf6fe9d\u003c/code\u003e\u003c/a\u003e feat(test): getting new leap second functionality to 100% test coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/939a7fe4ced89e670b1cdd9ac763d900e36b588f\"\u003e\u003ccode\u003e939a7fe\u003c/code\u003e\u003c/a\u003e fix: fixing bug derived from colon suffix check for leap second parsing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ariebovenberg/whenever/compare/0.9.5...0.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uv` from 0.11.3 to 0.11.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/uv/releases\"\u003euv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.11.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-08.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd CPython 3.13.13, 3.14.4, and 3.15.0a8 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18908\"\u003e#18908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ebuild_system.requires\u003c/code\u003e error message (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18911\"\u003e#18911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove trailing path separators in path normalization (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18915\"\u003e#18915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error messages for unsupported or invalid TLS certificates (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18924\"\u003e#18924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude-newer\u003c/code\u003e to \u003ccode\u003e[[tool.uv.index]]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18839\"\u003e#18839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003euv audit\u003c/code\u003e: add context/warnings for ignored vulnerabilities (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18905\"\u003e#18905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNormalize persisted fork markers before lock equality checks (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18612\"\u003e#18612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear junction properly when uninstalling Python versions on Windows (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18815\"\u003e#18815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReport error cleanly instead of panicking on TLS certificate error (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18904\"\u003e#18904\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove the legacy \u003ccode\u003ePIP_COMPATIBILITY.md\u003c/code\u003e redirect file (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18928\"\u003e#18928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003euv init example-bare --bare\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18822\"\u003e#18822\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18925\"\u003e#18925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall uv 0.11.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/uv/releases/download/0.11.5/uv-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/uv/releases/download/0.11.5/uv-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload uv 0.11.5\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- 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/uv/blob/main/CHANGELOG.md\"\u003euv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.11.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-08.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd CPython 3.13.13, 3.14.4, and 3.15.0a8 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18908\"\u003e#18908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ebuild_system.requires\u003c/code\u003e error message (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18911\"\u003e#18911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove trailing path separators in path normalization (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18915\"\u003e#18915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error messages for unsupported or invalid TLS certificates (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18924\"\u003e#18924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude-newer\u003c/code\u003e to \u003ccode\u003e[[tool.uv.index]]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18839\"\u003e#18839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003euv audit\u003c/code\u003e: add context/warnings for ignored vulnerabilities (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18905\"\u003e#18905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNormalize persisted fork markers before lock equality checks (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18612\"\u003e#18612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear junction properly when uninstalling Python versions on Windows (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18815\"\u003e#18815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReport error cleanly instead of panicking on TLS certificate error (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18904\"\u003e#18904\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove the legacy \u003ccode\u003ePIP_COMPATIBILITY.md\u003c/code\u003e redirect file (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18928\"\u003e#18928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003euv init example-bare --bare\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18822\"\u003e#18822\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18925\"\u003e#18925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.11.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-07.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003e--upgrade-group\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18266\"\u003e#18266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMerge repeated archive URL hashes by version ID (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18841\"\u003e#18841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequire all direct URL hash algorithms to match (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18842\"\u003e#18842\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid panics in environment finding via cycle detection (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18828\"\u003e#18828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforce direct URL hashes for \u003ccode\u003epyproject.toml\u003c/code\u003e dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18786\"\u003e#18786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eError on \u003ccode\u003e--locked\u003c/code\u003e and \u003ccode\u003e--frozen\u003c/code\u003e when script lockfile is missing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18832\"\u003e#18832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003euv export\u003c/code\u003e extra resolution for workspace member and conflicting extras (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18888\"\u003e#18888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude conflicts defined in virtual workspace root (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18886\"\u003e#18886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecompute relative \u003ccode\u003eexclude-newer\u003c/code\u003e values during \u003ccode\u003euv tree --outdated\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18899\"\u003e#18899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003e--exclude-newer\u003c/code\u003e in \u003ccode\u003euv tool list --outdated\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18861\"\u003e#18861\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/uv/commit/95eaa68c8df627eb915bc355831fd7d169d91fe3\"\u003e\u003ccode\u003e95eaa68\u003c/code\u003e\u003c/a\u003e Bump version to 0.11.5 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18930\"\u003e#18930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/f6d67d57c1a9f17f7ab233654b55e061eb4bfd10\"\u003e\u003ccode\u003ef6d67d5\u003c/code\u003e\u003c/a\u003e Improve certificate loading error messages (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18924\"\u003e#18924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/39b83c30e0cdaed833e88564878376f9361987d2\"\u003e\u003ccode\u003e39b83c3\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexclude-newer\u003c/code\u003e to \u003ccode\u003e[[tool.uv.index]]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18839\"\u003e#18839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/7924ba5b1419345dc5b9a9a16e6bcba2b59a41a6\"\u003e\u003ccode\u003e7924ba5\u003c/code\u003e\u003c/a\u003e uv audit: add context/warnings for ignored vulnerabilities (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18905\"\u003e#18905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/a352ce01eab5f19bbd5929f2a5f346187552ee7c\"\u003e\u003ccode\u003ea352ce0\u003c/code\u003e\u003c/a\u003e Remove the legacy PIP_COMPATIBILITY.md redirect file (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18928\"\u003e#18928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/33b633891181f768568bfc3196039d368417fe98\"\u003e\u003ccode\u003e33b6338\u003c/code\u003e\u003c/a\u003e Normalize persisted fork markers before lock equality checks (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18612\"\u003e#18612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/6a203d9c1da7a4d44fcde984467830c73cc1c3b2\"\u003e\u003ccode\u003e6a203d9\u003c/code\u003e\u003c/a\u003e Clear junction properly when uninstalling Python versions on Windows (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18815\"\u003e#18815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/6af38bb1bea1a71218e3e1d667818d59f20884aa\"\u003e\u003ccode\u003e6af38bb\u003c/code\u003e\u003c/a\u003e Update bare suffix in subsequent\u003ccode\u003e--bare\u003c/code\u003e init documentation as well (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18925\"\u003e#18925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/5aca743f0ebc309b0a34f154dfafd9e76ba9f304\"\u003e\u003ccode\u003e5aca743\u003c/code\u003e\u003c/a\u003e uv init example-bare --bare (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18822\"\u003e#18822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/6a3331fe106e5979503180ef717f238876cd2d84\"\u003e\u003ccode\u003e6a3331f\u003c/code\u003e\u003c/a\u003e Create a \u0026quot;deployment\u0026quot; for the release-gate job (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18920\"\u003e#18920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/uv/compare/0.11.3...0.11.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prefect-kubernetes` from 0.7.6 to 0.7.7\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/b9b03fc4ec00d332d62434df6b067604f44f8812\"\u003e\u003ccode\u003eb9b03fc\u003c/code\u003e\u003c/a\u003e fix: set worker attribution env vars in the worker process itself (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21365\"\u003e#21365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/e207113fe2460b5d9d29df8a1f6dcc14074e2035\"\u003e\u003ccode\u003ee207113\u003c/code\u003e\u003c/a\u003e feat(prefect-redis): add url field to RedisMessagingSettings (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21210\"\u003e#21210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/fcbac206040d74c5c5473525207b144f98cbf80e\"\u003e\u003ccode\u003efcbac20\u003c/code\u003e\u003c/a\u003e docs: Add release notes for \u003ccode\u003eprefect-aws==0.7.7\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21355\"\u003e#21355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/8c7310ae671aef92f47d02910359b02b26bbfdf6\"\u003e\u003ccode\u003e8c7310a\u003c/code\u003e\u003c/a\u003e Add exponential backoff retries for ECS task definition registration (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21354\"\u003e#21354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/ab39bf0e11ffe0ca0cf11cb44add19a9efb13eb8\"\u003e\u003ccode\u003eab39bf0\u003c/code\u003e\u003c/a\u003e feat(prefect-aws): Log ECS task ARN after task creation (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21342\"\u003e#21342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/82713863e2577237c7bf6a721873b8f414e4800a\"\u003e\u003ccode\u003e8271386\u003c/code\u003e\u003c/a\u003e Docs: remove unused catalog files (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21323\"\u003e#21323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/f76299fd680a8462a340cd56aef1f7b2e88d3ea4\"\u003e\u003ccode\u003ef76299f\u003c/code\u003e\u003c/a\u003e Add opt-in BuildKit/buildx support via python-on-whales (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21286\"\u003e#21286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/4b67d3fe05baeb421deccd78eee82b13bbe616f2\"\u003e\u003ccode\u003e4b67d3f\u003c/code\u003e\u003c/a\u003e Fix Docker worker \u003ccode\u003e_pull_image\u003c/code\u003e silently swallowing pull errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21310\"\u003e#21310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/faae6a54c5e28c19aa80428d5fd7f0eef95ece66\"\u003e\u003ccode\u003efaae6a5\u003c/code\u003e\u003c/a\u003e Remove internal Runner usage from bundle execution and CLI paths (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21252\"\u003e#21252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/53b3c44f672f9a246086a28b1368b938ca1679e4\"\u003e\u003ccode\u003e53b3c44\u003c/code\u003e\u003c/a\u003e Preserve casing of Kubernetes label keys (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21259\"\u003e#21259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/prefect/compare/prefect-kubernetes-0.7.6...prefect-kubernetes-0.7.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prefect-redis` from 0.2.9 to 0.2.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/b9b03fc4ec00d332d62434df6b067604f44f8812\"\u003e\u003ccode\u003eb9b03fc\u003c/code\u003e\u003c/a\u003e fix: set worker attribution env vars in the worker process itself (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21365\"\u003e#21365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/e207113fe2460b5d9d29df8a1f6dcc14074e2035\"\u003e\u003ccode\u003ee207113\u003c/code\u003e\u003c/a\u003e feat(prefect-redis): add url field to RedisMessagingSettings (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21210\"\u003e#21210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/fcbac206040d74c5c5473525207b144f98cbf80e\"\u003e\u003ccode\u003efcbac20\u003c/code\u003e\u003c/a\u003e docs: Add release notes for \u003ccode\u003eprefect-aws==0.7.7\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21355\"\u003e#21355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/8c7310ae671aef92f47d02910359b02b26bbfdf6\"\u003e\u003ccode\u003e8c7310a\u003c/code\u003e\u003c/a\u003e Add exponential backoff retries for ECS task definition registration (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21354\"\u003e#21354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/ab39bf0e11ffe0ca0cf11cb44add19a9efb13eb8\"\u003e\u003ccode\u003eab39bf0\u003c/code\u003e\u003c/a\u003e feat(prefect-aws): Log ECS task ARN after task creation (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21342\"\u003e#21342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/82713863e2577237c7bf6a721873b8f414e4800a\"\u003e\u003ccode\u003e8271386\u003c/code\u003e\u003c/a\u003e Docs: remove unused catalog files (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21323\"\u003e#21323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/f76299fd680a8462a340cd56aef1f7b2e88d3ea4\"\u003e\u003ccode\u003ef76299f\u003c/code\u003e\u003c/a\u003e Add opt-in BuildKit/buildx support via python-on-whales (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21286\"\u003e#21286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/4b67d3fe05baeb421deccd78eee82b13bbe616f2\"\u003e\u003ccode\u003e4b67d3f\u003c/code\u003e\u003c/a\u003e Fix Docker worker \u003ccode\u003e_pull_image\u003c/code\u003e silently swallowing pull errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21310\"\u003e#21310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/faae6a54c5e28c19aa80428d5fd7f0eef95ece66\"\u003e\u003ccode\u003efaae6a5\u003c/code\u003e\u003c/a\u003e Remove internal Runner usage from bundle execution and CLI paths (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21252\"\u003e#21252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/53b3c44f672f9a246086a28b1368b938ca1679e4\"\u003e\u003ccode\u003e53b3c44\u003c/code\u003e\u003c/a\u003e Preserve casing of Kubernetes label keys (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21259\"\u003e#21259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/prefect/compare/prefect-redis-0.2.9...prefect-redis-0.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-asyncio` from 1.0.0 to 0.23.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/260b79185b198bad96a8fb2abc607a91ad8a5490\"\u003e\u003ccode\u003e260b791\u003c/code\u003e\u003c/a\u003e [docs] Prepare release of v0.23.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/6a253e20fb174b6750075a6cfdd9409e4c6221f5\"\u003e\u003ccode\u003e6a253e2\u003c/code\u003e\u003c/a\u003e [docs] Shorten changelog by combining multiple issues.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/e2cbb906c5124df131abe39c447c5486aae913be\"\u003e\u003ccode\u003ee2cbb90\u003c/code\u003e\u003c/a\u003e [docs] Mention correct issue in changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/0c522bff1525e77ff75691ee7530c71fe63e2775\"\u003e\u003ccode\u003e0c522bf\u003c/code\u003e\u003c/a\u003e [fix] Fixes a bug that caused an internal pytest error when using ImportWarni...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/31c7e6f9acda156a7aabf23d18e88c23f5f897a4\"\u003e\u003ccode\u003e31c7e6f\u003c/code\u003e\u003c/a\u003e Build(deps): Bump coverage from 7.3.3 to 7.3.4 in /dependencies/default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/38d5c7eed0d5193752043631aabde287d0627127\"\u003e\u003ccode\u003e38d5c7e\u003c/code\u003e\u003c/a\u003e Build(deps): Bump sphinx-rtd-theme in /dependencies/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/650ec5875dcefc4eb4c1b2b0ba792aa643cd0823\"\u003e\u003ccode\u003e650ec58\u003c/code\u003e\u003c/a\u003e Build(deps): Bump babel from 2.13.1 to 2.14.0 in /dependencies/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/0166a7e55fd5ac31afdaffd7dd54e77003f6cc30\"\u003e\u003ccode\u003e0166a7e\u003c/code\u003e\u003c/a\u003e Build(deps): Bump typing-extensions in /dependencies/default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/3a15f3039c2b0101b73af651e8b9c667b1a51434\"\u003e\u003ccode\u003e3a15f30\u003c/code\u003e\u003c/a\u003e Build(deps): Bump coverage from 7.3.2 to 7.3.3 in /dependencies/default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/28e91f00cd59d8aca364e6041f898cde8239b4e6\"\u003e\u003ccode\u003e28e91f0\u003c/code\u003e\u003c/a\u003e Build(deps): Bump hypothesis in /dependencies/default\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/compare/v1.0.0...v0.23.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.2.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for...\n\n_Description has been truncated_","html_url":"https://github.com/PrefectHQ/prefect/pull/21486","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrefectHQ%2Fprefect/issues/21486","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21486/packages"},{"uuid":"4225371183","node_id":"PR_kwDOG1Zs187Q1yDs","number":12540,"state":"open","title":"Chore(deps): Bump the utilities-minor group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["non-trivial","backend","dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-08T14:40:51.000Z","updated_at":"2026-05-09T06:00:50.214Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-minor","update_count":19,"packages":[{"name":"dateparser","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"drf-spectacular-sidecar","old_version":"2026.3.1","new_version":"2026.4.1","repository_url":"https://github.com/tfranzel/drf-spectacular-sidecar"},{"name":"llama-index-embeddings-huggingface","old_version":"0.6.1","new_version":"0.7.0"},{"name":"llama-index-embeddings-openai","old_version":"0.5.2","new_version":"0.6.0"},{"name":"llama-index-llms-ollama","old_version":"0.9.1","new_version":"0.10.1"},{"name":"llama-index-llms-openai","old_version":"0.6.26","new_version":"0.7.5"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.3","new_version":"0.6.0"},{"name":"openai","old_version":"2.26.0","new_version":"2.30.0","repository_url":"https://github.com/openai/openai-python"},{"name":"regex","old_version":"2026.2.28","new_version":"2026.3.32","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"sentence-transformers","old_version":"5.2.3","new_version":"5.3.0","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"torch","old_version":"2.10.0","new_version":"2.11.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"faker","old_version":"40.8.0","new_version":"40.12.0","repository_url":"https://github.com/joke2k/faker"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"celery-types","old_version":"0.24.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.55.0","new_version":"0.59.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"types-dateparser","old_version":"1.3.0.20260206","new_version":"1.4.0.20260328","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-minor group with 18 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.3.0` | `1.4.0` |\n| [drf-spectacular-sidecar](https://github.com/tfranzel/drf-spectacular-sidecar) | `2026.3.1` | `2026.4.1` |\n| llama-index-embeddings-huggingface | `0.6.1` | `0.7.0` |\n| llama-index-embeddings-openai | `0.5.2` | `0.6.0` |\n| llama-index-llms-ollama | `0.9.1` | `0.10.1` |\n| llama-index-llms-openai | `0.6.26` | `0.7.5` |\n| llama-index-vector-stores-faiss | `0.5.3` | `0.6.0` |\n| [openai](https://github.com/openai/openai-python) | `2.26.0` | `2.30.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.3.32` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.3` | `5.3.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.10.0` | `2.11.0` |\n| [faker](https://github.com/joke2k/faker) | `40.8.0` | `40.12.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.24.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.55.0` | `0.59.0` |\n| [types-dateparser](https://github.com/python/typeshed) | `1.3.0.20260206` | `1.4.0.20260328` |\n\n\nUpdates `dateparser` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2026-03-26)\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/commit/60b8a75b1a7e84d875e491e6c730a844646ae91b\"\u003e\u003ccode\u003e60b8a75\u003c/code\u003e\u003c/a\u003e Bump version: 1.3.0 → 1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/d405657bbefd10ec8c1cb3df71ce295ca473f910\"\u003e\u003ccode\u003ed405657\u003c/code\u003e\u003c/a\u003e 1.4.0 release notes and fixes (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/7a3113e3b495dc95e6e238da696433e259f11827\"\u003e\u003ccode\u003e7a3113e\u003c/code\u003e\u003c/a\u003e Add the en-US locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/62710c066b2cb44e508d07532df069b78d52bbf0\"\u003e\u003ccode\u003e62710c0\u003c/code\u003e\u003c/a\u003e Add a security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/341d3080f377c058b35ab39353940ba0f9349724\"\u003e\u003ccode\u003e341d308\u003c/code\u003e\u003c/a\u003e Fix deployment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/5add61cccf258788f9cca748dee3d5094ff65651\"\u003e\u003ccode\u003e5add61c\u003c/code\u003e\u003c/a\u003e Use official publish GitHub action in CI (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e22e62e336cc59b1ac38ea947c1b9b471d420846\"\u003e\u003ccode\u003ee22e62e\u003c/code\u003e\u003c/a\u003e Fix word-number phrases parsing (e.g., 'two days later') (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/8cdcf800ff16a0745b4782359db0c8085961219d\"\u003e\u003ccode\u003e8cdcf80\u003c/code\u003e\u003c/a\u003e Make logo more translucent (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1312\"\u003e#1312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e0939ecdd7ca04a24ca9d9a325224fe7fef7921c\"\u003e\u003ccode\u003ee0939ec\u003c/code\u003e\u003c/a\u003e Replace 'setup.py install' (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/cd5f226454e0ed3fe93164e7eff55b00f57e57c7\"\u003e\u003ccode\u003ecd5f226\u003c/code\u003e\u003c/a\u003e Honor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying year-bias...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular-sidecar` from 2026.3.1 to 2026.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/b714a7ffda691c8a0b06c80e091ce1e5e4f92666\"\u003e\u003ccode\u003eb714a7f\u003c/code\u003e\u003c/a\u003e version bump 2026.4.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/compare/2026.3.1...2026.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-embeddings-huggingface` from 0.6.1 to 0.7.0\n\nUpdates `llama-index-embeddings-openai` from 0.5.2 to 0.6.0\n\nUpdates `llama-index-llms-ollama` from 0.9.1 to 0.10.1\n\nUpdates `llama-index-llms-openai` from 0.6.26 to 0.7.5\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.3 to 0.6.0\n\nUpdates `openai` from 2.26.0 to 2.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.30.0\u003c/h2\u003e\n\u003ch2\u003e2.30.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.29.0...v2.30.0\"\u003ev2.29.0...v2.30.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add keys field to Click/DoubleClick/Drag/Move/Scroll computer actions (\u003ca href=\"https://github.com/openai/openai-python/commit/ee1bbeddbb38dab817557412dc106354409bb950\"\u003eee1bbed\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e align SDK response types with expanded item schemas (\u003ca href=\"https://github.com/openai/openai-python/commit/f3f258a9d4d19db3fb0c6c35e25ad3cedbe71254\"\u003ef3f258a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esanitize endpoint path params (\u003ca href=\"https://github.com/openai/openai-python/commit/89f66988fde790c0c83ff8b876d1e1b10d616367\"\u003e89f6698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e make type required in ResponseInputMessageItem (\u003ca href=\"https://github.com/openai/openai-python/commit/cfdb1676ea0550840330a58f1a31a40a41a0a53f\"\u003ecfdb167\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e skip lint on metadata-only changes (\u003ca href=\"https://github.com/openai/openai-python/commit/faa93e19a1d5c30c7dd672a08dbbdbb3c0374714\"\u003efaa93e1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update gitignore (\u003ca href=\"https://github.com/openai/openai-python/commit/c468477f1546579618865a726e35a685cffeacd9\"\u003ec468477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.4 (\u003ca href=\"https://github.com/openai/openai-python/commit/f350af86c13ade0237778010d264c55fda443354\"\u003ef350af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.5 (\u003ca href=\"https://github.com/openai/openai-python/commit/5c0340128fc1a416e2dfdc6ab4b05f1e954e8482\"\u003e5c03401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.6 (\u003ca href=\"https://github.com/openai/openai-python/commit/b6353b8411d31dcc95875d801ce9e90a21e0fd52\"\u003eb6353b8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.7 (\u003ca href=\"https://github.com/openai/openai-python/commit/1d654bea74ac9c3d43302587f98f33cfff502e48\"\u003e1d654be\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e switch from prism to steady (\u003ca href=\"https://github.com/openai/openai-python/commit/4a82035669b739d16a0e85d4ded778d51e061948\"\u003e4a82035\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.29.0\u003c/h2\u003e\n\u003ch2\u003e2.29.0 (2026-03-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.28.0...v2.29.0\"\u003ev2.28.0...v2.29.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e 5.4 nano and mini model slugs (\u003ca href=\"https://github.com/openai/openai-python/commit/3b456661f77ca3196aceb5ab3350664a63481114\"\u003e3b45666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add /v1/videos endpoint to batches create method (\u003ca href=\"https://github.com/openai/openai-python/commit/c0e7a161a996854021e9eb69ea2a60ca0d08047f\"\u003ec0e7a16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add defer_loading field to ToolFunction (\u003ca href=\"https://github.com/openai/openai-python/commit/3167595432bdda2f90721901d30ad316db49323e\"\u003e3167595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add in and nin operators to ComparisonFilter type (\u003ca href=\"https://github.com/openai/openai-python/commit/664f02b051af84e1ca3fa313981ec72fdea269b3\"\u003e664f02b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e bump minimum typing-extensions version (\u003ca href=\"https://github.com/openai/openai-python/commit/a2fb2ca55142c6658a18be7bd1392a01f5a83f35\"\u003ea2fb2ca\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epydantic:\u003c/strong\u003e do not pass \u003ccode\u003eby_alias\u003c/code\u003e unless set (\u003ca href=\"https://github.com/openai/openai-python/commit/8ebe8fbcb011c6a005a715cae50c6400a8596ee0\"\u003e8ebe8fb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.30.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.29.0...v2.30.0\"\u003ev2.29.0...v2.30.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add keys field to Click/DoubleClick/Drag/Move/Scroll computer actions (\u003ca href=\"https://github.com/openai/openai-python/commit/ee1bbeddbb38dab817557412dc106354409bb950\"\u003eee1bbed\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e align SDK response types with expanded item schemas (\u003ca href=\"https://github.com/openai/openai-python/commit/f3f258a9d4d19db3fb0c6c35e25ad3cedbe71254\"\u003ef3f258a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esanitize endpoint path params (\u003ca href=\"https://github.com/openai/openai-python/commit/89f66988fde790c0c83ff8b876d1e1b10d616367\"\u003e89f6698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e make type required in ResponseInputMessageItem (\u003ca href=\"https://github.com/openai/openai-python/commit/cfdb1676ea0550840330a58f1a31a40a41a0a53f\"\u003ecfdb167\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e skip lint on metadata-only changes (\u003ca href=\"https://github.com/openai/openai-python/commit/faa93e19a1d5c30c7dd672a08dbbdbb3c0374714\"\u003efaa93e1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update gitignore (\u003ca href=\"https://github.com/openai/openai-python/commit/c468477f1546579618865a726e35a685cffeacd9\"\u003ec468477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.4 (\u003ca href=\"https://github.com/openai/openai-python/commit/f350af86c13ade0237778010d264c55fda443354\"\u003ef350af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.5 (\u003ca href=\"https://github.com/openai/openai-python/commit/5c0340128fc1a416e2dfdc6ab4b05f1e954e8482\"\u003e5c03401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.6 (\u003ca href=\"https://github.com/openai/openai-python/commit/b6353b8411d31dcc95875d801ce9e90a21e0fd52\"\u003eb6353b8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.7 (\u003ca href=\"https://github.com/openai/openai-python/commit/1d654bea74ac9c3d43302587f98f33cfff502e48\"\u003e1d654be\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e switch from prism to steady (\u003ca href=\"https://github.com/openai/openai-python/commit/4a82035669b739d16a0e85d4ded778d51e061948\"\u003e4a82035\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.29.0 (2026-03-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.28.0...v2.29.0\"\u003ev2.28.0...v2.29.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e 5.4 nano and mini model slugs (\u003ca href=\"https://github.com/openai/openai-python/commit/3b456661f77ca3196aceb5ab3350664a63481114\"\u003e3b45666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add /v1/videos endpoint to batches create method (\u003ca href=\"https://github.com/openai/openai-python/commit/c0e7a161a996854021e9eb69ea2a60ca0d08047f\"\u003ec0e7a16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add defer_loading field to ToolFunction (\u003ca href=\"https://github.com/openai/openai-python/commit/3167595432bdda2f90721901d30ad316db49323e\"\u003e3167595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add in and nin operators to ComparisonFilter type (\u003ca href=\"https://github.com/openai/openai-python/commit/664f02b051af84e1ca3fa313981ec72fdea269b3\"\u003e664f02b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e bump minimum typing-extensions version (\u003ca href=\"https://github.com/openai/openai-python/commit/a2fb2ca55142c6658a18be7bd1392a01f5a83f35\"\u003ea2fb2ca\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epydantic:\u003c/strong\u003e do not pass \u003ccode\u003eby_alias\u003c/code\u003e unless set (\u003ca href=\"https://github.com/openai/openai-python/commit/8ebe8fbcb011c6a005a715cae50c6400a8596ee0\"\u003e8ebe8fb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\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/openai/openai-python/commit/5ae2cc10e4140d36aa236fa7c0bc5ce5ff190a01\"\u003e\u003ccode\u003e5ae2cc1\u003c/code\u003e\u003c/a\u003e release: 2.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/6e772ae791759b25de83313614e0fb26eba895b7\"\u003e\u003ccode\u003e6e772ae\u003c/code\u003e\u003c/a\u003e fix(api): align SDK response types with expanded item schemas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/cd72fba37866bfdddd4a84420afe2ff397279582\"\u003e\u003ccode\u003ecd72fba\u003c/code\u003e\u003c/a\u003e feat(api): add keys field to Click/DoubleClick/Drag/Move/Scroll computer actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/4f43fe371037415ace13981a277917366b6fc24e\"\u003e\u003ccode\u003e4f43fe3\u003c/code\u003e\u003c/a\u003e chore(tests): bump steady to v0.19.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/23bc02703bbb9497eadd5d56497d5d6954372a62\"\u003e\u003ccode\u003e23bc027\u003c/code\u003e\u003c/a\u003e chore(ci): skip lint on metadata-only changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/e3c59bf1ac8533a1be831a6d166f9f7abeabf8e0\"\u003e\u003ccode\u003ee3c59bf\u003c/code\u003e\u003c/a\u003e chore(tests): bump steady to v0.19.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/56ad9ca089394e535d7df52fe48d544e54086ddc\"\u003e\u003ccode\u003e56ad9ca\u003c/code\u003e\u003c/a\u003e fix(types): make type required in ResponseInputMessageItem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/78c764bdf483a0c48789bfdefe6299830d5abde0\"\u003e\u003ccode\u003e78c764b\u003c/code\u003e\u003c/a\u003e chore(internal): update gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/634b74edd4aaa07a74f9ee30241410d61624264f\"\u003e\u003ccode\u003e634b74e\u003c/code\u003e\u003c/a\u003e chore(tests): bump steady to v0.19.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c8c9508899b2119cc69e006403d09cbad7f616e4\"\u003e\u003ccode\u003ec8c9508\u003c/code\u003e\u003c/a\u003e chore(tests): bump steady to v0.19.4\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.26.0...v2.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `regex` from 2026.2.28 to 2026.3.32\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt\"\u003eregex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion: 2026.3.32\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed segfault.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.31\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug again.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eVarious fixes, including ones to improve free-threading support.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReplaced atomic operations with mutex on pattern object for free-threaded Python.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.26\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePR [#598](https://github.com/mrabarnett/mrab-regex/issues/598): Fix race condition in storage caching with atomic operations.\n\u003cp\u003eReplaced use of PyUnicode_GET_LENGTH with PyUnicode_GetLength.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.2.19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eAdded \\z as alias of \\Z, like in re module.\n\u003cp\u003eAdded prefixmatch as alias of match, like in re module.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.1.15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eRe-uploaded.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.1.14\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eGit issue 596: Specifying {e\u0026lt;=0} causes ca 210× slow-down.\n\u003cp\u003eAdded RISC-V wheels.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2025.11.3\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eGit issue 594: Support relative PARNO in recursive subpatterns.\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/5d51c75da03116e08bb6fb537fae6d8c804cc92c\"\u003e\u003ccode\u003e5d51c75\u003c/code\u003e\u003c/a\u003e Fixed segfault.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2aff2db5542ec5b58705be6ddb7b69a99d3e38a8\"\u003e\u003ccode\u003e2aff2db\u003c/code\u003e\u003c/a\u003e Fixed bug again.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/16af8aed2b3211e90588d2ac96f7c588ed477b2c\"\u003e\u003ccode\u003e16af8ae\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2356563bbfd51b3986320a866c35a50b89833949\"\u003e\u003ccode\u003e2356563\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/f579e8ff60e2993a11cf4fd96748e4b7866c9fed\"\u003e\u003ccode\u003ef579e8f\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/55315a0497722898bed8286a596a64db698f498e\"\u003e\u003ccode\u003e55315a0\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/923d78e39b8ff92db67606be3bfbc2e595b6475a\"\u003e\u003ccode\u003e923d78e\u003c/code\u003e\u003c/a\u003e Various fixes, including ones to improve free-threading support.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.2.28...2026.3.32\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentence-transformers` from 5.2.3 to 5.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/sentence-transformers/releases\"\u003esentence-transformers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.3.0 - Improved Contrastive Learning, New Losses, and Transformers v5 Compatibility\u003c/h2\u003e\n\u003cp\u003eThis minor version brings several improvements to contrastive learning: \u003ccode\u003eMultipleNegativesRankingLoss\u003c/code\u003e now supports alternative InfoNCE formulations (symmetric, GTE-style) and optional hardness weighting for harder negatives. Two new losses are introduced, \u003ccode\u003eGlobalOrthogonalRegularizationLoss\u003c/code\u003e for embedding space regularization and \u003ccode\u003eCachedSpladeLoss\u003c/code\u003e for memory-efficient SPLADE training. The release also adds a faster hashed batch sampler, fixes \u003ccode\u003eGroupByLabelBatchSampler\u003c/code\u003e for triplet losses, and ensures full compatibility with the latest Transformers v5 versions.\u003c/p\u003e\n\u003cp\u003eInstall this version with\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003e# Training + Inference\r\npip install sentence-transformers[train]==5.3.0\r\n\u003ch1\u003eInference only, use one of:\u003c/h1\u003e\n\u003cp\u003epip install sentence-transformers==5.3.0\npip install sentence-transformers[onnx-gpu]==5.3.0\npip install sentence-transformers[onnx]==5.3.0\npip install sentence-transformers[openvino]==5.3.0\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch2\u003eUpdated MultipleNegativesRankingLoss (a.k.a. InfoNCE)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eMultipleNegativesRankingLoss\u003c/code\u003e received two major upgrades: support for alternative InfoNCE formulations from the literature, and optional hardness weighting to up-weight harder negatives.\u003c/p\u003e\n\u003ch3\u003eSupport other InfoNCE variants (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3607\"\u003e#3607\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eMultipleNegativesRankingLoss\u003c/code\u003e now supports several well-known contrastive loss variants from the literature through new \u003ccode\u003edirections\u003c/code\u003e and \u003ccode\u003epartition_mode\u003c/code\u003e parameters. Previously, this loss only supported the standard forward direction (query → doc). You can now configure which similarity interactions are included in the loss:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e\u0026quot;query_to_doc\u0026quot;\u003c/code\u003e (default): For each query, its matched document should score higher than all other documents.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e\u0026quot;doc_to_query\u0026quot;\u003c/code\u003e: The symmetric reverse — for each document, its matched query should score higher than all other queries.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e\u0026quot;query_to_query\u0026quot;\u003c/code\u003e: For each query, all other queries should score lower than its matched document.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e\u0026quot;doc_to_doc\u0026quot;\u003c/code\u003e: For each document, all other documents should score lower than its matched query.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ccode\u003epartition_mode\u003c/code\u003e controls how scores are normalized: \u003ccode\u003e\u0026quot;joint\u0026quot;\u003c/code\u003e computes a single softmax over all directions, while \u003ccode\u003e\u0026quot;per_direction\u0026quot;\u003c/code\u003e computes a separate softmax per direction and averages the losses.\u003c/p\u003e\n\u003cp\u003eThese combine to reproduce several loss formulations from the literature:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStandard InfoNCE\u003c/strong\u003e (default, unchanged behavior):\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eloss = MultipleNegativesRankingLoss(model)\r\n# equivalent to directions=(\u0026quot;query_to_doc\u0026quot;,), partition_mode=\u0026quot;joint\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eSymmetric InfoNCE\u003c/strong\u003e (\u003ca href=\"https://arxiv.org/abs/2310.19923\"\u003eGünther et al. 2024\u003c/a\u003e) — adds the reverse direction so both queries and documents are trained to find their match:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eloss = MultipleNegativesRankingLoss(\r\n    model,\r\n    directions=(\u0026quot;query_to_doc\u0026quot;, \u0026quot;doc_to_query\u0026quot;),\r\n    partition_mode=\u0026quot;per_direction\u0026quot;,\r\n)\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eGTE improved contrastive loss\u003c/strong\u003e (\u003ca href=\"https://arxiv.org/abs/2308.03281\"\u003eLi et al. 2023\u003c/a\u003e) — adds same-type negatives (query \u0026lt;-\u0026gt; query, doc \u0026lt;-\u0026gt; doc) for a stronger training signal, especially useful with pairs-only data:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eloss = MultipleNegativesRankingLoss(\r\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/ce48ecc77f8c7ed97c8fcc3cd99fde6071206680\"\u003e\u003ccode\u003ece48ecc\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into v5.3-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/cec08f89aabaa11a1675529fb7b11618c8255622\"\u003e\u003ccode\u003ecec08f8\u003c/code\u003e\u003c/a\u003e Fix citation for EmbeddingGemma paper (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3687\"\u003e#3687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/c29b3a69f7eca78d613fc2e465989ee880216c8d\"\u003e\u003ccode\u003ec29b3a6\u003c/code\u003e\u003c/a\u003e Release v5.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/55c13de47ea9475b1416a34af36716cc477bd95f\"\u003e\u003ccode\u003e55c13de\u003c/code\u003e\u003c/a\u003e Prep docs main page for v5.3.0 (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3686\"\u003e#3686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/72e75f7868700a768f6c57fb16e76b18df250f72\"\u003e\u003ccode\u003e72e75f7\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003etests\u003c/code\u003e] Add slow reproduction tests for most common models (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/237e44151758a9b4eb86b1ecd73152884073549a\"\u003e\u003ccode\u003e237e441\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003efix\u003c/code\u003e] Fix model card generation with set_transform with new column names (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/7f180b4b7146af66e2b043cdaa89bf87babe28bc\"\u003e\u003ccode\u003e7f180b4\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003efeat\u003c/code\u003e] Add hardness-weighted contrastive learning to losses (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/58900864d51cde2f918885587709b2466938422c\"\u003e\u003ccode\u003e5890086\u003c/code\u003e\u003c/a\u003e Disallow query_to_query/doc_to_doc with partition_mode=\u0026quot;per_direction\u0026quot; due to...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/6518c36671294b2125506f0d382d04102f739c91\"\u003e\u003ccode\u003e6518c36\u003c/code\u003e\u003c/a\u003e CE trainer: Removed IterableDataset from train and eval dataset type hints (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/1e0e84cbfb5483ffe1a5ff7db459c67a61487f3f\"\u003e\u003ccode\u003e1e0e84c\u003c/code\u003e\u003c/a\u003e Add tips for adjusting batch size to improve processing speed (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3672\"\u003e#3672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/sentence-transformers/compare/v5.2.3...v5.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `torch` from 2.10.0 to 2.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytorch/pytorch/releases\"\u003etorch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePyTorch 2.11.0 Release Notes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#highlights\"\u003eHighlights\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#backwards-incompatible-changes\"\u003eBackwards Incompatible Changes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#deprecations\"\u003eDeprecations\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#new-features\"\u003eNew Features\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#improvements\"\u003eImprovements\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#bug-fixes\"\u003eBug fixes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#performance\"\u003ePerformance\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#documentation\"\u003eDocumentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#developers\"\u003eDevelopers\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#security\"\u003eSecurity\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eHighlights\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eFor more details about these highlighted features, you can look at the \u003ca href=\"https://pytorch.org/blog/pytorch-2-11-release-blog/\"\u003erelease blogpost\u003c/a\u003e. Below are the full release notes for this release.\u003c/p\u003e\n\u003ch1\u003eBackwards Incompatible Changes\u003c/h1\u003e\n\u003ch2\u003eRelease Engineering\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/pytorch/pytorch/commit/70d99e998b4955e0049d13a98d77ae1b14db1f45\"\u003e\u003ccode\u003e70d99e9\u003c/code\u003e\u003c/a\u003e [release only] Increase timeout for rocm libtorch and manywheel builds (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/178006\"\u003e#178006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/3e05c5a9ca8aacd0d137541876f8bf4cfca7e940\"\u003e\u003ccode\u003e3e05c5a\u003c/code\u003e\u003c/a\u003e [MPS] Properly handle conjugated tensors in bmm (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/178010\"\u003e#178010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/db741c72097871e384b22ee6fff1d6083adf23cc\"\u003e\u003ccode\u003edb741c7\u003c/code\u003e\u003c/a\u003e [MPS] fix compiling of SDPA producing nan results (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/178009\"\u003e#178009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/483b55d84c74b92b3c2c67be4b9b7c7359ec2bbc\"\u003e\u003ccode\u003e483b55d\u003c/code\u003e\u003c/a\u003e Update pytorch_sphinx_theme2 version to 0.4.6 (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/177616\"\u003e#177616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/7f2cdeb75b76bf07bb73776444bbb94456adbfa0\"\u003e\u003ccode\u003e7f2cdeb\u003c/code\u003e\u003c/a\u003e [windows][smoke test] Add an option to install cuda if required cuda/cudnn on...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/76fd07897dd9126df160e9723d97511b79888087\"\u003e\u003ccode\u003e76fd078\u003c/code\u003e\u003c/a\u003e [release-only] Fix libtorch builds. Fix lint (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/177299\"\u003e#177299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/fa384de31efe6548e694758d47ff295f2c2edb57\"\u003e\u003ccode\u003efa384de\u003c/code\u003e\u003c/a\u003e [Inductor][MPS] Fix half-precision type mismatches in Metal shader codegen (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/036b25f5a29dc58cbc62e7b976efb860ff128c3f\"\u003e\u003ccode\u003e036b25f\u003c/code\u003e\u003c/a\u003e Let stable::from_blob accept a lambda as deleter (cherry-pick) (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/176440\"\u003e#176440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/41f8e3e0381395e1669ca4bc6e36a7872d25cdcd\"\u003e\u003ccode\u003e41f8e3e\u003c/code\u003e\u003c/a\u003e [CI] Stop using G3 runners (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/177161\"\u003e#177161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/e2fa2953033020ad7e0f823ec534044fac15a3c7\"\u003e\u003ccode\u003ee2fa295\u003c/code\u003e\u003c/a\u003e [CD] Unpin cuda-bindings dependencies (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/177159\"\u003e#177159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytorch/pytorch/compare/v2.10.0...v2.11.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.8.0 to 40.12.0\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.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md\"\u003eCHANGELOG.md\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/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.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\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.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\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.10.0...v40.11.0\"\u003ev40.11.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider. Thanks \u003ca href=\"https://github.com/raphael-s\"\u003e\u003ccode\u003e@​raphael-s\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.9.0...v40.10.0\"\u003ev40.10.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/rodrigobnogueira\"\u003e\u003ccode\u003e@​rodrigobnogueira\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.8.1...v40.9.0\"\u003ev40.9.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider. Thanks \u003ca href=\"https://github.com/filipemattar\"\u003e\u003ccode\u003e@​filipemattar\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.8.0...v40.8.1\"\u003ev40.8.1 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mutable default providers. Thanks \u003ca href=\"https://github.com/Dhi13man\"\u003e\u003ccode\u003e@​Dhi13man\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/joke2k/faker/commit/fb98b618de62795b0b2300d7a6cf2d149d9044e0\"\u003e\u003ccode\u003efb98b61\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.1 → 40.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/00b920fd333450874c107f962052f521407c061c\"\u003e\u003ccode\u003e00b920f\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bd75873b6825855d6f3bbc2f4804b17fc6b1c1cc\"\u003e\u003ccode\u003ebd75873\u003c/code\u003e\u003c/a\u003e Restore parameters stripped out by the AI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f4bb94a922bcce17b61d9035eecb6260c66bf694\"\u003e\u003ccode\u003ef4bb94a\u003c/code\u003e\u003c/a\u003e exclude the \u003ccode\u003escripts\u003c/code\u003e directory from the MANIFEST.in file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ebfd067f7c6d113e8f23cf27a1dfcd043d41ed30\"\u003e\u003ccode\u003eebfd067\u003c/code\u003e\u003c/a\u003e Sort test cases alphabetically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5d09c06ef54394a81c517a301216cb27ab7e20b\"\u003e\u003ccode\u003ea5d09c0\u003c/code\u003e\u003c/a\u003e Add address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/db42f6477ea15d754889a9e030b3c3d29872d947\"\u003e\u003ccode\u003edb42f64\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.0 → 40.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5b9f98629cb842dfe352879aaf0628bc10a643d\"\u003e\u003ccode\u003ea5b9f98\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/01cb8d0f90fac0799f90e1295e8d4ab67c4fc070\"\u003e\u003ccode\u003e01cb8d0\u003c/code\u003e\u003c/a\u003e fix: rebind deepcopy proxies to copied Faker instances (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2340\"\u003e#2340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/53314fc7d3fba03fed38bb1053a395fdfb50e35f\"\u003e\u003ccode\u003e53314fc\u003c/code\u003e\u003c/a\u003e Bump version: 40.10.0 → 40.11.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.8.0...v40.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.24.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 1.20.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 1.20\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.20.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\u003ePlanned Changes to Defaults and Flags in Mypy 2.0\u003c/h3\u003e\n\u003cp\u003eAs a reminder, we are planning to enable \u003ccode\u003e--local-partial-types\u003c/code\u003e by default in mypy 2.0, which\nwill likely be the next feature release. This will often require at least minor code changes. This\noption is implicitly enabled by mypy daemon, so this makes the behavior of daemon and non-daemon\nmodes consistent.\u003c/p\u003e\n\u003cp\u003eNote that this release improves the compatibility of \u003ccode\u003e--local-partial-types\u003c/code\u003e significantly to\nmake the switch easier (see below for more).\u003c/p\u003e\n\u003cp\u003eThis can also be configured in a mypy configuration file (use \u003ccode\u003eFalse\u003c/code\u003e to disable):\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003elocal_partial_types = True\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-local-partial-types\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe will also enable \u003ccode\u003e--strict-bytes\u003c/code\u003e by default in mypy 2.0. This usually requires at most\nminor code changes to adopt. For more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-strict-bytes\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFinally, \u003ccode\u003e--allow-redefinition-new\u003c/code\u003e will be renamed to \u003ccode\u003e--allow-redefinition\u003c/code\u003e. If you want\nto continue using the older \u003ccode\u003e--allow-redefinition\u003c/code\u003e semantics which are less flexible (e.g.\nlimited support for conditional redefinitions), you can switch to \u003ccode\u003e--allow-redefinition-old\u003c/code\u003e,\nwhich is currently supported as an alias to the legacy \u003ccode\u003e--allow-redefinition\u003c/code\u003e behavior.\nTo use \u003ccode\u003e--allow-redefinition\u003c/code\u003e in the upcoming mypy 2.0, you can't use \u003ccode\u003e--no-local-partial-types\u003c/code\u003e.\nFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-allow-redefinition-new\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBetter Type Narrowing\u003c/h3\u003e\n\u003cp\u003eMypy's implementation of narrowing has been substantially reworked. Mypy will now narrow more\naggressively, more consistently, and more correctly. In particular, you are likely to notice new\nnarrowing behavior in equality expressions (\u003ccode\u003e==\u003c/code\u003e), containment expressions (\u003ccode\u003ein\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/python/mypy/commit/770d3ca4997032dc3a1c4f0b468e9f58e8f38505\"\u003e\u003ccode\u003e770d3ca\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4738ffafc56a0d175cba06e893ffa62e756fc7e0\"\u003e\u003ccode\u003e4738ffa\u003c/code\u003e\u003c/a\u003e Changelog updates for 1.20 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21109\"\u003e#21109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b4f07a717c3a239a9c77808c5550fff5f2638c96\"\u003e\u003ccode\u003eb4f07a7\u003c/code\u003e\u003c/a\u003e Use 'native-parser' instead of 'native-parse' for optional dependency (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21115\"\u003e#21115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7bec7b7f791790b1c925cdcc573ced564fbbf065\"\u003e\u003ccode\u003e7bec7b7\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt and librt.base64 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21114\"\u003e#21114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c4825969450385cf3eb91a4fc02f273b369bc301\"\u003e\u003ccode\u003ec482596\u003c/code\u003e\u003c/a\u003e --allow-redefinition-new is no longer experimental (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21110\"\u003e#21110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c916ca3fa79d9324dcbe130b18e24e2b5e2d1eb5\"\u003e\u003ccode\u003ec916ca3\u003c/code\u003e\u003c/a\u003e sdist: include \u003ccode\u003emisc/{diff-cache,apply-cache-diff}.py\u003c/code\u003e for `mypy/test/test_di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b137e4ed41d6178f6dbd0e609db56b8c1ad5384a\"\u003e\u003ccode\u003eb137e4e\u003c/code\u003e\u003c/a\u003e [mypyc] Speed up native-to-native imports within the same group (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21101\"\u003e#21101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/978b711c21adadf5dae4db80127ddf270d79af5f\"\u003e\u003ccode\u003e978b711\u003c/code\u003e\u003c/a\u003e [mypyc] Fix range loop variable off-by-one after loop exit (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/67ada30918d1a32e1935e9ac468113e0aa002b79\"\u003e\u003ccode\u003e67ada30\u003c/code\u003e\u003c/a\u003e [stubtest] Check runtime availability of private types not marked `@type_chec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/bdef6ef8734af07cab1bf0acadc1d8ab9add93c3\"\u003e\u003ccode\u003ebdef6ef\u003c/code\u003e\u003c/a\u003e librt cache tests: build respecting MYPY_TEST_PREFIX (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21097\"\u003e#21097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v1.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.55.0 to 0.59.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.59.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : Beta\u003c/strong\u003e\u003cbr /\u003e\n\u003cem\u003e\u003cstrong\u003eRelease date:\u003c/strong\u003e March 30, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.59.0 bundles \u003cstrong\u003e153 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003eArea\u003c/th\u003e\n\u003cth align=\"left\"\u003eWhat’s new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- You can now use \u003ccode\u003ewhile...else\u003c/code\u003e statements with returns in the \u003ccode\u003eelse\u003c/code\u003e clause without triggering a false positive \u003ccode\u003emissing-explicit-return\u003c/code\u003e error.  \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pyrefly now correctly handles type inference for nested empty dictionaries when constructing TypedDict instances, avoiding \u003ccode\u003eimplicit-any\u003c/code\u003e errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Error messages now highlight related code with inline labels; for example, an unsupported * operation will show the types of both operands directly in the source snippet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- LSP hover information for classes now displays constructor signature and docstring. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Support additional LSP functionality for notebooks, including find-references and rename.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- Faster typechecking in large pythonc codebases, up to 2x faster on recent benchmarks on real world projects \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Reduced CPU usage through smarter caching of module resolution results \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Improved performance of the LSP server by reducing redundant workspace diagnostic publishes.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed 16 bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2026\"\u003e#2026\u003c/a\u003e: Fixed an issue where recursive bounded generics were incorrectly reported as \u003ccode\u003eobject\u003c/code\u003e, ensuring accurate type checking.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2812\"\u003e#2812\u003c/a\u003e: Resolved a false positive \u003ccode\u003einvalid-type-var\u003c/code\u003e error when persisting the \u003ccode\u003eget\u003c/code\u003e method of a fully-annotated \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2804\"\u003e#2804\u003c/a\u003e: Fixed an \u003ccode\u003eimplicit-any\u003c/code\u003e false positive that occurred with TypedDict items, improving code readability.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2868\"\u003e#2868\u003c/a\u003e: Pyrefly now correctly recognizes \u003ccode\u003ewhile...else\u003c/code\u003e statements with returns in the \u003ccode\u003eelse\u003c/code\u003e clause as exhaustive.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2814\"\u003e#2814\u003c/a\u003e: Enhanced hover information for \u003ccode\u003edatetime.datetime\u003c/code\u003e imports to display constructor signatures and docstrings.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2896\"\u003e#2896\u003c/a\u003e: Fixed a \u003ccode\u003ebad-argument-type\u003c/code\u003e error that occurred when using double-underscore arguments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2893\"\u003e#2893\u003c/a\u003e: Pyrefly now correctly handles dict Literal key types as subtypes of str key types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2865\"\u003e#2865\u003c/a\u003e: Resolved an issue where tuple subclasses with overridden \u003ccode\u003e__getitem__\u003c/code\u003e were not recognized.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2871\"\u003e#2871\u003c/a\u003e: Fixed a false positive error when using \u003ccode\u003eisinstance\u003c/code\u003e with \u003ccode\u003etype | X\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAnd more! \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2444\"\u003e#2444\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/1270\"\u003e#1270\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2900\"\u003e#2900\u003c/a\u003e,  \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2862\"\u003e#2862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2853\"\u003e#2853\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"shell\"\u003e\u003ccode\u003epip install --upgrade pyrefly==0.59.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eHow to safely upgrade your codebase\u003c/h3\u003e\n\u003cp\u003eUpgrading the version of Pyrefly you're using or a third-party library you depend on can reveal new type errors in your code. Fixing them all at once is often unrealistic. We've written scripts to help you temporarily silence them. After upgrading, follow these steps:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ccode\u003epyrefly check --suppress-errors\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003erun your code formatter of choice\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epyrefly check --remove-unused-ignores\u003c/code\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f634064b2d32e19cc534348f4c373daba759e863\"\u003e\u003ccode\u003ef634064\u003c/code\u003e\u003c/a\u003e Update pyrefly version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/98d0c5051766e060e34448cfb8f4e3e432ce450e\"\u003e\u003ccode\u003e98d0c50\u003c/code\u003e\u003c/a\u003e Fix annotated legacy TypeVar/ParamSpec/TypeVarTuple not working as type annot...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/28fcfa726b76711bdbe02d9de167c48eb3a6c90a\"\u003e\u003ccode\u003e28fcfa7\u003c/code\u003e\u003c/a\u003e fix Upward Find for venv \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/759\"\u003e#759\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2791\"\u003e#2791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/61598ef45e2818b1435610218b7559f7a03872b1\"\u003e\u003ccode\u003e61598ef\u003c/code\u003e\u003c/a\u003e Clamp LSP positions to line length per spec to fix completion after trailing dot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/4e1e19bd7f664d0a621cb31df1458259f89a9ad5\"\u003e\u003ccode\u003e4e1e19b\u003c/code\u003e\u003c/a\u003e Reject Self return annotation when \u003ccode\u003eself\u003c/code\u003e param is some other Type Var\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a0a6b6ea4965351b7b58afd2af6cce9c61471738\"\u003e\u003ccode\u003ea0a6b6e\u003c/code\u003e\u003c/a\u003e Add GitHub Action for automated release creation and Discord notification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2a362511d3882f8ac51d451900faead5c0bcc2a9\"\u003e\u003ccode\u003e2a36251\u003c/code\u003e\u003c/a\u003e Automate release notes process\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b039f06ffee30ff6e524cdb284bb9c7a8adb82af\"\u003e\u003ccode\u003eb039f06\u003c/code\u003e\u003c/a\u003e Reclassify unresolved imports as Implicit Any instead of Explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3d82c1cc1dc9eb0c88d7ae1f357ab596c84adcac\"\u003e\u003ccode\u003e3d82c1c\u003c/code\u003e\u003c/a\u003e Add failing test for annotated variable type erasure with Any (github \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/47f51ae73d9638e58caeb3859294663b251e93ec\"\u003e\u003ccode\u003e47f51ae\u003c/code\u003e\u003c/a\u003e Track tensor fancy indexing in multi-axis subscripts\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.55.0...0.59.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-channels` from 4.3.0.20250822 to 4.3.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-dateparser` from 1.3.0.20260206 to 1.4.0.20260328\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","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12540","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12540","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12540/packages"},{"uuid":"4210638429","node_id":"PR_kwDOGIc7h87QJ-2b","number":1116,"state":"open","title":"chore(deps-dev): bump pytest-env from 1.2.0 to 1.6.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-06T08:53:32.000Z","updated_at":"2026-05-25T00:55:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"pytest-env","old_version":"1.2.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pytest-env](https://github.com/pytest-dev/pytest-env) from 1.2.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 build(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/192\"\u003epytest-dev/pytest-env#192\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.2.0...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/jenstroeger/python-package-template/pull/1116","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenstroeger%2Fpython-package-template/issues/1116","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1116/packages"},{"uuid":"4190641159","node_id":"PR_kwDON6-Iwc7PaYvc","number":383,"state":"open","title":"chore(deps): bump the pip group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-02T00:23:09.000Z","updated_at":"2026-04-17T05:08:48.143Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip","update_count":13,"packages":[{"name":"fastapi","old_version":"0.128.0","new_version":"0.135.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.42.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.46","new_version":"2.0.48","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"requests","old_version":"2.33.0","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"alembic","old_version":"1.18.3","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"boto3","old_version":"1.42.41","new_version":"1.42.81","repository_url":"https://github.com/boto/boto3"},{"name":"markdown","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"faker","old_version":"40.1.2","new_version":"40.12.0","repository_url":"https://github.com/joke2k/faker"},{"name":"pytest-env","old_version":"1.2.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"bump-my-version","old_version":"1.2.6","new_version":"1.3.0","repository_url":"https://github.com/callowayproject/bump-my-version"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 13 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.135.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.42.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.46` | `2.0.48` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.1` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.33.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.3` | `1.18.4` |\n| [boto3](https://github.com/boto/boto3) | `1.42.41` | `1.42.81` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.1` | `3.10.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [faker](https://github.com/joke2k/faker) | `40.1.2` | `40.12.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.2.0` | `1.6.0` |\n| [bump-my-version](https://github.com/callowayproject/bump-my-version) | `1.2.6` | `1.3.0` |\n\n\nUpdates `fastapi` from 0.128.0 to 0.135.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.135.3\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003e@app.vibe()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15280\"\u003e#15280\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/advanced/vibe/\"\u003eVibe Coding\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✏️ Fix typo for \u003ccode\u003eclient_secret\u003c/code\u003e in OAuth2 form docstrings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14946\"\u003e#14946\u003c/a\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15279\"\u003e#15279\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump orjson from 3.11.7 to 3.11.8. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15276\"\u003e#15276\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ruff from 0.15.0 to 0.15.8. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15277\"\u003e#15277\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15274\"\u003e#15274\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump fastmcp from 2.14.5 to 3.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15267\"\u003e#15267\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15270\"\u003e#15270\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump requests from 2.32.5 to 2.33.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15228\"\u003e#15228\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Add ty check to \u003ccode\u003elint.sh\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15136\"\u003e#15136\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.2\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Increase lower bound to \u003ccode\u003epydantic \u0026gt;=2.9.0.\u003c/code\u003e and fix the test suite. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15139\"\u003e#15139\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Add missing last release notes dates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15202\"\u003e#15202\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update docs for contributors and team members regarding translation PRs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15200\"\u003e#15200\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Fix code blocks in reference docs overflowing table width. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15094\"\u003e#15094\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix duplicated words in docstrings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15116\"\u003e#15116\u003c/a\u003e by \u003ca href=\"https://github.com/AhsanSheraz\"\u003e\u003ccode\u003e@​AhsanSheraz\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add docs for \u003ccode\u003epyproject.toml\u003c/code\u003e with \u003ccode\u003eentrypoint\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15075\"\u003e#15075\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update links in docs to no longer use the classes external-link and internal-link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15061\"\u003e#15061\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add JS and CSS handling for automatic \u003ccode\u003etarget=_blank\u003c/code\u003e for links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15063\"\u003e#15063\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Update styles for internal and external links in new tab. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15058\"\u003e#15058\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝  Add documentation for the FastAPI VS Code extension. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15008\"\u003e#15008\u003c/a\u003e by \u003ca href=\"https://github.com/savannahostrowski\"\u003e\u003ccode\u003e@​savannahostrowski\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix doctrings for \u003ccode\u003emax_digits\u003c/code\u003e and \u003ccode\u003edecimal_places\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14944\"\u003e#14944\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add dates to release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15001\"\u003e#15001\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15177\"\u003e#15177\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15178\"\u003e#15178\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15176\"\u003e#15176\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15175\"\u003e#15175\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15171\"\u003e#15171\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15170\"\u003e#15170\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15172\"\u003e#15172\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15168\"\u003e#15168\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1f442c454f2f74c7419f83c203e6333955399528\"\u003e\u003ccode\u003e1f442c4\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.135.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8f5d1577b471f389f6cdea878d40a1497fda7746\"\u003e\u003ccode\u003e8f5d157\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/428452a710338334ae11043a48b06d52d9b3edba\"\u003e\u003ccode\u003e428452a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/70580da818722cce68b7a88928d67bd0f64f42c5\"\u003e\u003ccode\u003e70580da\u003c/code\u003e\u003c/a\u003e ✨ Add support for \u003ccode\u003e@app.vibe()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15280\"\u003e#15280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6ee87478d821171139264cd9cd17cbd2232934ce\"\u003e\u003ccode\u003e6ee8747\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3e72c09a2abfe9e1b55eede6a297cb1847126e49\"\u003e\u003ccode\u003e3e72c09\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15279\"\u003e#15279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/96df35f7a4337d612811483d8ade74f91cce2d61\"\u003e\u003ccode\u003e96df35f\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6c8112555bd86f21cfee8500140dca094ad26e20\"\u003e\u003ccode\u003e6c81125\u003c/code\u003e\u003c/a\u003e ⬆ Bump orjson from 3.11.7 to 3.11.8 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15276\"\u003e#15276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/428f82c93616b52aee2fcee03484a855135c07e5\"\u003e\u003ccode\u003e428f82c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5599c59b9e7112109f04b63a58034fb95833f514\"\u003e\u003ccode\u003e5599c59\u003c/code\u003e\u003c/a\u003e ⬆ Bump ruff from 0.15.0 to 0.15.8 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15277\"\u003e#15277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.0...0.135.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.40.0 to 0.42.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.42.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEscape brackets and backslash in httptools \u003ccode\u003eHEADER_RE\u003c/code\u003e regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix multiple issues in websockets sans-io implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2825\"\u003eKludex/uvicorn#2825\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.41.0...0.42.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.41.0...0.42.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.41.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--limit-max-requests-jitter\u003c/code\u003e to stagger worker restarts (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd socket path to \u003ccode\u003escope[\u0026quot;server\u0026quot;]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2561\"\u003e#2561\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eLifespanOn.error_occured\u003c/code\u003e to \u003ccode\u003eerror_occurred\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2776\"\u003e#2776\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore permission denied errors in watchfiles reloader (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2817\"\u003e#2817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure lifespan shutdown runs when \u003ccode\u003eshould_exit\u003c/code\u003e is set during startup (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2812\"\u003e#2812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce the log level of 'request limit exceeded' messages (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2788\"\u003e#2788\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/t-kawasumi\"\u003e\u003ccode\u003e@​t-kawasumi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2776\"\u003eKludex/uvicorn#2776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fardyn\"\u003e\u003ccode\u003e@​fardyn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2800\"\u003eKludex/uvicorn#2800\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewie\"\u003e\u003ccode\u003e@​ewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2807\"\u003eKludex/uvicorn#2807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shevron\"\u003e\u003ccode\u003e@​shevron\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2788\"\u003eKludex/uvicorn#2788\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jonashaag\"\u003e\u003ccode\u003e@​jonashaag\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2707\"\u003eKludex/uvicorn#2707\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.40.0...0.41.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.40.0...0.41.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.42.0 (March 16, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape brackets and backslash in httptools \u003ccode\u003eHEADER_RE\u003c/code\u003e regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix multiple issues in websockets sans-io implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.41.0 (February 16, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--limit-max-requests-jitter\u003c/code\u003e to stagger worker restarts (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd socket path to \u003ccode\u003escope[\u0026quot;server\u0026quot;]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2561\"\u003e#2561\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eLifespanOn.error_occured\u003c/code\u003e to \u003ccode\u003eerror_occurred\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2776\"\u003e#2776\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore permission denied errors in watchfiles reloader (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2817\"\u003e#2817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure lifespan shutdown runs when \u003ccode\u003eshould_exit\u003c/code\u003e is set during startup (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2812\"\u003e#2812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce the log level of 'request limit exceeded' messages (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2788\"\u003e#2788\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/02bed6f8c38e74f684bb0e572977a9bfdc1f6fea\"\u003e\u003ccode\u003e02bed6f\u003c/code\u003e\u003c/a\u003e Version 0.42.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2852\"\u003e#2852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d8f25013161d8206e129e39bf48432d3a85e1744\"\u003e\u003ccode\u003ed8f2501\u003c/code\u003e\u003c/a\u003e chore: pre-create Config objects in benchmarks to measure protocol hot paths ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9dbb7836bb0fdb446d083ecd8dc5a2a95bb96b98\"\u003e\u003ccode\u003e9dbb783\u003c/code\u003e\u003c/a\u003e Add WebSocket protocol benchmarks for wsproto and websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2849\"\u003e#2849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b3c69da8c1a36e1834e614abe38243671e156077\"\u003e\u003ccode\u003eb3c69da\u003c/code\u003e\u003c/a\u003e Use bytearray for request body accumulation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3f3ebee20f46504a3f7279dd72f9c24ce9070b11\"\u003e\u003ccode\u003e3f3ebee\u003c/code\u003e\u003c/a\u003e Disable \u003ccode\u003epytest-xdist\u003c/code\u003e for CodSpeed benchmark runs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d072de754f825bee4710363dd49d41efd5285dcc\"\u003e\u003ccode\u003ed072de7\u003c/code\u003e\u003c/a\u003e Add fragmented body benchmark for chunked body accumulation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2846\"\u003e#2846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/e300c2c75d71bea6f8d1799ca6f182f1e5583aaa\"\u003e\u003ccode\u003ee300c2c\u003c/code\u003e\u003c/a\u003e Add CodSpeed benchmark suite for HTTP protocol hot paths (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1fa697651bacf10d72f74de104ead814ce6fcdc0\"\u003e\u003ccode\u003e1fa6976\u003c/code\u003e\u003c/a\u003e Escape brackets and backslash in httptools HEADER_RE regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/59ec1de7a4f07afbd139812f033f3af8b784de74\"\u003e\u003ccode\u003e59ec1de\u003c/code\u003e\u003c/a\u003e Fix multiple issues in websockets sansio implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/2fc0efcdd958abd3adbe6ea19682408d6b2e1b18\"\u003e\u003ccode\u003e2fc0efc\u003c/code\u003e\u003c/a\u003e Clarify Windows asyncio event loop selection in docs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2843\"\u003e#2843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.40.0...0.42.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.46 to 2.0.48\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.48\u003c/h1\u003e\n\u003cp\u003eReleased: March 2, 2026\u003c/p\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Fixed a critical issue in \u003ccode\u003eEngine\u003c/code\u003e where connections created in\nconjunction with the \u003ccode\u003eDialectEvents.do_connect()\u003c/code\u003e event listeners\nwould receive shared, mutable collections for the connection arguments,\nleading to a variety of potential issues including unlimited growth of the\nargument list as well as elements within the parameter dictionary being\nshared among concurrent connection calls.  In particular this could impact\ndo_connect routines making use of complex mutable authentication\nstructures.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13144\"\u003e#13144\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.0.47\u003c/h1\u003e\n\u003cp\u003eReleased: February 24, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue when using ORM mappings with Python 3.14's \u003ca href=\"https://peps.python.org/pep-0649\"\u003ePEP 649\u003c/a\u003e feature\nthat no longer requires \u0026quot;future annotations\u0026quot;, where the ORM's introspection\nof the \u003ccode\u003e__init__\u003c/code\u003e method of mapped classes would fail if non-present\nidentifiers in annotations were present.  The vendored \u003ccode\u003egetfullargspec()\u003c/code\u003e\nmethod has been amended to use \u003ccode\u003eFormat.FORWARDREF\u003c/code\u003e under Python 3.14 to\nprevent resolution of names that aren't present.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13104\"\u003e#13104\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e The connection object returned by \u003ccode\u003e_engine.Engine.raw_connection()\u003c/code\u003e\nnow supports the context manager protocol, automatically returning the\nconnection to the pool when exiting the context.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13116\"\u003e#13116\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[postgresql] [bug]\u003c/strong\u003e Fixed an issue in the PostgreSQL dialect where foreign key constraint\nreflection would incorrectly swap or fail to capture \u003ccode\u003eonupdate\u003c/code\u003e and\n\u003ccode\u003eondelete\u003c/code\u003e values when these clauses appeared in a different order than\nexpected in the constraint definition. This issue primarily affected\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.12.0 to 2.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: Deterministic alias selection when using validate_by_name by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/707\"\u003epydantic/pydantic-settings#707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd deep merge functionality to config file sources by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/698\"\u003epydantic/pydantic-settings#698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for AWS Secrets Manager VersionId parameter by \u003ca href=\"https://github.com/jcyamacho\"\u003e\u003ccode\u003e@​jcyamacho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/708\"\u003epydantic/pydantic-settings#708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix: Return \u003ccode\u003eNone\u003c/code\u003e for inaccessible GCP Secret Manager secrets by \u003ca href=\"https://github.com/zaphod72\"\u003e\u003ccode\u003e@​zaphod72\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/712\"\u003epydantic/pydantic-settings#712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBugfix for cli_kebab_case=\u0026quot;all\u0026quot; and CliImplicitFlag[bool] by \u003ca href=\"https://github.com/Digity101\"\u003e\u003ccode\u003e@​Digity101\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/702\"\u003epydantic/pydantic-settings#702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpack type alisases when looking for \u003ccode\u003eNoDecode\u003c/code\u003e by \u003ca href=\"https://github.com/tselepakis\"\u003e\u003ccode\u003e@​tselepakis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/695\"\u003epydantic/pydantic-settings#695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCliToggleFlag and CliDualFlag by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/717\"\u003epydantic/pydantic-settings#717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix for CLI duplicate enum field values. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/722\"\u003epydantic/pydantic-settings#722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efixed load nested config from env by \u003ca href=\"https://github.com/Sube-py\"\u003e\u003ccode\u003e@​Sube-py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/723\"\u003epydantic/pydantic-settings#723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-Path files support (for example Traversable) and open files using Path.open method by \u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/724\"\u003epydantic/pydantic-settings#724\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd one more traversable test by \u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/725\"\u003epydantic/pydantic-settings#725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI fix fox external list args. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/727\"\u003epydantic/pydantic-settings#727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: handle case-insensitive retrieval in GoogleSecretManagerSettingsSource by \u003ca href=\"https://github.com/ezwiefel\"\u003e\u003ccode\u003e@​ezwiefel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/730\"\u003epydantic/pydantic-settings#730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI test fixes for help text formatting. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/735\"\u003epydantic/pydantic-settings#735\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid conflicts with the \u003ccode\u003eNAME\u003c/code\u003e environment variable in WSL by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/747\"\u003epydantic/pydantic-settings#747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: When restoring init kwargs, use deterministic order by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/746\"\u003epydantic/pydantic-settings#746\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd env_prefix_target by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/749\"\u003epydantic/pydantic-settings#749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003e(default: …)\u003c/code\u003e in the help message for \u003ccode\u003eCliToggleFlag\u003c/code\u003e by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/740\"\u003epydantic/pydantic-settings#740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for CLI serialize styles. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/755\"\u003epydantic/pydantic-settings#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for overriding default help on CLI internal parser. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/758\"\u003epydantic/pydantic-settings#758\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI format_help method support by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/759\"\u003epydantic/pydantic-settings#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(gcp): support SecretVersion annotation for per-field secret versioning by \u003ca href=\"https://github.com/ezwiefel\"\u003e\u003ccode\u003e@​ezwiefel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/763\"\u003epydantic/pydantic-settings#763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003esnake_case_conversion\u003c/code\u003e with \u003ccode\u003eenv_prefix\u003c/code\u003e for Azure Key Vault source by \u003ca href=\"https://github.com/cstarkers\"\u003e\u003ccode\u003e@​cstarkers\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/762\"\u003epydantic/pydantic-settings#762\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Only override preferred_key when no value was found by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/767\"\u003epydantic/pydantic-settings#767\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate deps by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/768\"\u003epydantic/pydantic-settings#768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI coerce numeric types. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/769\"\u003epydantic/pydantic-settings#769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI Union Discriminator Choices in Help by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/764\"\u003epydantic/pydantic-settings#764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd nested path support for yaml_config_section (fixes \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/772\"\u003e#772\u003c/a\u003e) by \u003ca href=\"https://github.com/hugo-romero-mm\"\u003e\u003ccode\u003e@​hugo-romero-mm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/773\"\u003epydantic/pydantic-settings#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.13.0 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/777\"\u003epydantic/pydantic-settings#777\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/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/698\"\u003epydantic/pydantic-settings#698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jcyamacho\"\u003e\u003ccode\u003e@​jcyamacho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/708\"\u003epydantic/pydantic-settings#708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zaphod72\"\u003e\u003ccode\u003e@​zaphod72\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/712\"\u003epydantic/pydantic-settings#712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Digity101\"\u003e\u003ccode\u003e@​Digity101\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/702\"\u003epydantic/pydantic-settings#702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sube-py\"\u003e\u003ccode\u003e@​Sube-py\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/723\"\u003epydantic/pydantic-settings#723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/724\"\u003epydantic/pydantic-settings#724\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/747\"\u003epydantic/pydantic-settings#747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cstarkers\"\u003e\u003ccode\u003e@​cstarkers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/762\"\u003epydantic/pydantic-settings#762\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugo-romero-mm\"\u003e\u003ccode\u003e@​hugo-romero-mm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/773\"\u003epydantic/pydantic-settings#773\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.0\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e87d12df0f42f7f72a3eb6d830cfbfb1d68b4496\"\u003e\u003ccode\u003ee87d12d\u003c/code\u003e\u003c/a\u003e v2.13.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/790\"\u003e#790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/acf8c14f5ec314799f5bd0d3f6a1591c4ed2ec97\"\u003e\u003ccode\u003eacf8c14\u003c/code\u003e\u003c/a\u003e Fix JSON decoding for parameterized PEP 695 type aliases (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/780\"\u003e#780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/58b236a36473e01bfe42e5f75d39d46721e0593d\"\u003e\u003ccode\u003e58b236a\u003c/code\u003e\u003c/a\u003e Fix AttributeError with nested env vars for dict fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/785\"\u003e#785\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/786\"\u003e#786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4933f06402ed55e32bcdcefd6c8f59ffe1fefd24\"\u003e\u003ccode\u003e4933f06\u003c/code\u003e\u003c/a\u003e Fix CLI parsing error for set field types since 2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/787\"\u003e#787\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/788\"\u003e#788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/bd0ebe6215cf215d716e33d833cc2589a1d00a17\"\u003e\u003ccode\u003ebd0ebe6\u003c/code\u003e\u003c/a\u003e Fix RecursionError with self-referential models in CliApp (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/783\"\u003e#783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eb7840e9f59a7969b23afdbcc4e5081e037736d8\"\u003e\u003ccode\u003eeb7840e\u003c/code\u003e\u003c/a\u003e Fix regression for bool fields since 2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/784\"\u003e#784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/198e71cf0cd570501535de7ae93a70953150f073\"\u003e\u003ccode\u003e198e71c\u003c/code\u003e\u003c/a\u003e Prepare release 2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/777\"\u003e#777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/de71e84057b63b251ec84883b5e2ae886f82084f\"\u003e\u003ccode\u003ede71e84\u003c/code\u003e\u003c/a\u003e Add nested path support for yaml_config_section (fixes \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/772\"\u003e#772\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0f8f951b89b137bd563ce74dac016ba2c4cdc7a2\"\u003e\u003ccode\u003e0f8f951\u003c/code\u003e\u003c/a\u003e CLI Union Discriminator Choices in Help (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/764\"\u003e#764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/ce9804c4620d38f0c3b3c1e3ebe10d934fd4ba2e\"\u003e\u003ccode\u003ece9804c\u003c/code\u003e\u003c/a\u003e CLI coerce numeric types. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/769\"\u003e#769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.0 to 2.33.1\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.33.1\u003c/h2\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\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/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7277\"\u003epsf/requests#7277\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#2331-2026-03-30\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2331-2026-03-30\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\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/111d2b77790bf49943c0dfa09b365371c24aec7e\"\u003e\u003ccode\u003e111d2b7\u003c/code\u003e\u003c/a\u003e v2.33.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/f0198e6dfc431a2293dc16e1b1e8fcddc910a7f3\"\u003e\u003ccode\u003ef0198e6\u003c/code\u003e\u003c/a\u003e Fix malformed value parsing for Content-Type (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc7dd0fc4d56e808bcdd85ac2d797b3107c89259\"\u003e\u003ccode\u003ebc7dd0f\u003c/code\u003e\u003c/a\u003e Fix cosmetic header validity parsing regex (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4443b1a847b190010c2972a658924b98b5db6360\"\u003e\u003ccode\u003e4443b1a\u003c/code\u003e\u003c/a\u003e Fix unintended test extra (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7306\"\u003e#7306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/389eea58dfb2f2ee096421a812e3af29c0298951\"\u003e\u003ccode\u003e389eea5\u003c/code\u003e\u003c/a\u003e Cleanup extracted file after extract_zipped_path test (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7407309c8a8a73aa2f4337184025d440bbedab7a\"\u003e\u003ccode\u003e7407309\u003c/code\u003e\u003c/a\u003e Packaging: DRY out extras definition (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7277\"\u003e#7277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.0...v2.33.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\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/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.18.3 to 1.18.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.18.4\u003c/h1\u003e\n\u003cp\u003eReleased: February 10, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Reverted the behavior of \u003ccode\u003eOperations.add_column()\u003c/code\u003e that would\nautomatically render the \u0026quot;PRIMARY KEY\u0026quot; keyword inline when a\n\u003ccode\u003eColumn\u003c/code\u003e with \u003ccode\u003eprimary_key=True\u003c/code\u003e is added. The automatic\nbehavior, added in version 1.18.2, is now opt-in via the new\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter. This\nchange restores the ability to render a PostgreSQL SERIAL column, which is\nrequired to be \u003ccode\u003eprimary_key=True\u003c/code\u003e, while not impacting the ability to\nrender a separate primary key constraint. This also provides consistency\nwith the \u003ccode\u003eOperations.add_column.inline_references\u003c/code\u003e parameter and\ngives users explicit control over SQL generation.\u003c/p\u003e\n\u003cp\u003eTo render PRIMARY KEY inline, use the\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter set to\n\u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003eop.add_column(\n\u0026quot;my_table\u0026quot;,\nColumn(\u0026quot;id\u0026quot;, Integer, primary_key=True),\ninline_primary_key=True\n)References: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1232\"\u003e#1232\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.42.41 to 1.42.81\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/a70b9fd264bc254bcf168c37e2371285b96239d9\"\u003e\u003ccode\u003ea70b9fd\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.81'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e65b71f091a7f343569690deae3d8ed2f43cce79\"\u003e\u003ccode\u003ee65b71f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.81\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/087a4f3fb3604b9ae283ea0e1e5ceb191cb25fdb\"\u003e\u003ccode\u003e087a4f3\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0553641c190c026a98b0b4d281e349437a555c38\"\u003e\u003ccode\u003e0553641\u003c/code\u003e\u003c/a\u003e Add the GitHub CI script for pull request build (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4748\"\u003e#4748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d66479d40f800c50151b5588ab8ca4ed5089f919\"\u003e\u003ccode\u003ed66479d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.80'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d4e6d42c7631652419daf8a1f3174869d294938c\"\u003e\u003ccode\u003ed4e6d42\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.80' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e930bfca66b1e1dad26b6c0cf387da899e576f1f\"\u003e\u003ccode\u003ee930bfc\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.80\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2596b719bb280b17481bb9d2e6eb0741177577df\"\u003e\u003ccode\u003e2596b71\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/617e6fb2eddc9ceeede55935e33fceed47a6ccb7\"\u003e\u003ccode\u003e617e6fb\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 4.34.1 to 4.35.1 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9c5880d12fa855229dcb041f87c59586593535ad\"\u003e\u003ccode\u003e9c5880d\u003c/code\u003e\u003c/a\u003e Bump pygments from 2.18.0 to 2.20.0 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4747\"\u003e#4747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.42.41...1.42.81\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.10.1 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\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/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.10.1...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.1.2 to 40.12.0\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.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.7.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.6.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.5.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.5.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.5.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.5.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.4.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.4.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.3.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.3.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.2.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.2.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.1.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.1.3/CHANGELOG.md\"\u003eCHANGELOG.md\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/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.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\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.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\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.10.0...v40.11.0\"\u003ev40.11.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider. Thanks \u003ca href=\"https://github.com/raphael-s\"\u003e\u003ccode\u003e@​raphael-s\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.9.0...v40.10.0\"\u003ev40.10.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/rodrigobnogueira\"\u003e\u003ccode\u003e@​rodrigobnogueira\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.8.1...v40.9.0\"\u003ev40.9.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider. Thanks \u003ca href=\"https://github.com/filipemattar\"\u003e\u003ccode\u003e@​filipemattar\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.8.0...v40.8.1\"\u003ev40.8.1 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mutable default providers. Thanks \u003ca href=\"https://github.com/Dhi13man\"\u003e\u003ccode\u003e@​Dhi13man\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.7.0...v40.8.0\"\u003ev40.8.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd free email domains to \u003ccode\u003ehu_HU\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/majorzoltan80\"\u003e\u003ccode\u003e@​majorzoltan80\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.6.0...v40.7.0\"\u003ev40.7.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove Polish address grammar: categorize street types and prefixes. Thanks \u003ca href=\"https://github.com/Francooo2221\"\u003e\u003ccode\u003e@​Francooo2221\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.5.1...v40.6.0\"\u003ev40.6.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd country names to \u003ccode\u003ehe_IL\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/Moo64c\"\u003e\u003ccode\u003e@​Moo64c\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.5.0...v40.5.1\"\u003ev40.5.1 - 2026-02-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e_get_local_timezone()\u003c/code\u003e missing \u003ccode\u003ereturn\u003c/code\u003e statement. Thanks \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\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.4.0...v40.5.0\"\u003ev40.5.0 - 2026-02-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing formats and remove duplicates in \u003ccode\u003euser_name_formats\u003c/code\u003e. Thanks \u003ca href=\"https://github.com/WannaFight\"\u003e\u003ccode\u003e@​WannaFight\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.3.0...v40.4.0\"\u003ev40.4.0 - 2026-02-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd passport and \u003ccode\u003ecie\u003c/code\u003e for \u003ccode\u003eit_IT\u003c/code\u003e. Thanks \u003ca href=\"https://github.com/ElektroDuck\"\u003e\u003ccode\u003e@​ElektroDuck\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.2.0...v40.3.0\"\u003ev40.3.0 - 2026-02-06\u003c/a\u003e\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/joke2k/faker/commit/fb98b618de62795b0b2300d7a6cf2d149d9044e0\"\u003e\u003ccode\u003efb98b61\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.1 → 40.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/00b920fd333450874c107f962052f521407c061c\"\u003e\u003ccode\u003e00b920f\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bd75873b6825855d6f3bbc2f4804b17fc6b1c1cc\"\u003e\u003ccode\u003ebd75873\u003c/code\u003e\u003c/a\u003e Restore parameters stripped out by the AI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f4bb94a922bcce17b61d9035eecb6260c66bf694\"\u003e\u003ccode\u003ef4bb94a\u003c/code\u003e\u003c/a\u003e exclude the \u003ccode\u003escripts\u003c/code\u003e directory from the MANIFEST.in file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ebfd067f7c6d113e8f23cf27a1dfcd043d41ed30\"\u003e\u003ccode\u003eebfd067\u003c/code\u003e\u003c/a\u003e Sort test cases alphabetically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5d09c06ef54394a81c517a301216cb27ab7e20b\"\u003e\u003ccode\u003ea5d09c0\u003c/code\u003e\u003c/a\u003e Add address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/db42f6477ea15d754889a9e030b3c3d29872d947\"\u003e\u003ccode\u003edb42f64\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.0 → 40.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5b9f98629cb842dfe352879aaf0628bc10a643d\"\u003e\u003ccode\u003ea5b9f98\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/01cb8d0f90fac0799f90e1295e8d4ab67c4fc070\"\u003e\u003ccode\u003e01cb8d0\u003c/code\u003e\u003c/a\u003e fix: rebind deepcopy proxies to copied Faker instances (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2340\"\u003e#2340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/53314fc7d3fba03fed38bb1053a395fdfb50e35f\"\u003e\u003ccode\u003e53314fc\u003c/code\u003e\u003c/a\u003e Bump version: 40.10.0 → 40.11.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.1.2...v40.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.2.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https:...\n\n_Description has been truncated_","html_url":"https://github.com/amazeeio/amazee.ai/pull/383","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/amazeeio%2Famazee.ai/issues/383","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/383/packages"},{"uuid":"4174843425","node_id":"PR_kwDOQFtGkc7Oyl9u","number":353,"state":"open","title":"build(deps-dev): bump the development group across 7 directories with 6 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-31T00:27:09.000Z","updated_at":"2026-03-31T00:38:18.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev): bump","group_name":"development","update_count":6,"packages":[{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"plotly","old_version":"6.5.2","new_version":"6.6.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.7","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-confluent-kafka","old_version":"1.4.0","new_version":"1.4.1","repository_url":"https://github.com/benbenbang/types-confluent-kafka"},{"name":"matpowercaseframes","old_version":"2.0.1","new_version":"2.0.3","repository_url":"https://github.com/UGM-EPSLab/matpowercaseframes"}],"path":null,"ecosystem":"pip"},"body":"Bumps the development group with 4 updates in the / directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [ruff](https://github.com/astral-sh/ruff), [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka) and [mike](https://github.com/jimporter/mike).\nBumps the development group with 4 updates in the /packages/contingency_analysis_pkg directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [plotly](https://github.com/plotly/plotly.py), [ruff](https://github.com/astral-sh/ruff) and [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka).\nBumps the development group with 4 updates in the /packages/dc_solver_pkg directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [plotly](https://github.com/plotly/plotly.py), [ruff](https://github.com/astral-sh/ruff) and [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka).\nBumps the development group with 5 updates in the /packages/grid_helpers_pkg directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.5.2` | `6.6.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.4` | `0.15.7` |\n| [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka) | `1.4.0` | `1.4.1` |\n| [matpowercaseframes](https://github.com/UGM-EPSLab/matpowercaseframes) | `2.0.1` | `2.0.3` |\n\nBumps the development group with 3 updates in the /packages/importer_pkg directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [ruff](https://github.com/astral-sh/ruff) and [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka).\nBumps the development group with 4 updates in the /packages/interfaces_pkg directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [plotly](https://github.com/plotly/plotly.py), [ruff](https://github.com/astral-sh/ruff) and [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka).\nBumps the development group with 4 updates in the /packages/topology_optimizer_pkg directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [plotly](https://github.com/plotly/plotly.py), [ruff](https://github.com/astral-sh/ruff) and [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka).\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.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.4 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.7/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.15.7/ruff-installer.ps1 | iex\u0026quot;\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/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-confluent-kafka` from 1.4.0 to 1.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/releases\"\u003etypes-confluent-kafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eTypes Confluent Kafka 1.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003e1.4.1\u003c/a\u003e (2026-03-09)\u003c/h2\u003e\n\u003ch3\u003e:beetle: Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecorrect typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e) (\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e0465ade\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/benbenbang/types-confluent-kafka/commit/9f926e8cd545f9388f1339f891f9078f049f8298\"\u003e\u003ccode\u003e9f926e8\u003c/code\u003e\u003c/a\u003e release(versioning): update version to 1.4.1 (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/3e2e41c1f2d740ba56fa4cc2ceb1c3c6982186aa\"\u003e\u003ccode\u003e3e2e41c\u003c/code\u003e\u003c/a\u003e docs(readme): add deprecation notice for official type hints support (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e\u003ccode\u003e0465ade\u003c/code\u003e\u003c/a\u003e fix: correct typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mike` from 2.1.3 to 2.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/releases\"\u003emike's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.4\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse built-in \u003ccode\u003eimportlib\u003c/code\u003e in Python 3.10 and greater\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/blob/master/CHANGES.md\"\u003emike's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.4 (2026-03-07)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse built-in \u003ccode\u003eimportlib\u003c/code\u003e in Python 3.10 and greater\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/fd2c5dc94acb3fce6b6acad643bae821ce59f323\"\u003e\u003ccode\u003efd2c5dc\u003c/code\u003e\u003c/a\u003e Update version to 2.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/6bad2056410c2d4e3fc58f96112d1b620db3b25b\"\u003e\u003ccode\u003e6bad205\u003c/code\u003e\u003c/a\u003e Update copyright year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/9e5f8769f29b0b2fd638770590beba2876e0c42d\"\u003e\u003ccode\u003e9e5f876\u003c/code\u003e\u003c/a\u003e Remove deprecated license classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/80c47ab27eda456bbee0c883723a57b7a183e478\"\u003e\u003ccode\u003e80c47ab\u003c/code\u003e\u003c/a\u003e Be more consistent with newlines in CHANGES.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/11d4160eea7d356042524628533fbc9bb534d1d3\"\u003e\u003ccode\u003e11d4160\u003c/code\u003e\u003c/a\u003e Use built-in \u003ccode\u003eimportlib\u003c/code\u003e in Python 3.10 and greater\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/bdda184d22b9207288ca32a3650d19e033658ff7\"\u003e\u003ccode\u003ebdda184\u003c/code\u003e\u003c/a\u003e Improve selection of unit test suites on command line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/d8a9b491355a648cb9417e7256dde42743042882\"\u003e\u003ccode\u003ed8a9b49\u003c/code\u003e\u003c/a\u003e Add CI for Python 3.14 and remove  old workarounds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/97deaed465a424646d163147941b358f9201e9d0\"\u003e\u003ccode\u003e97deaed\u003c/code\u003e\u003c/a\u003e Update copyright\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/64298e2a867d6db3a49a0d0c6126cea4e3946f7d\"\u003e\u003ccode\u003e64298e2\u003c/code\u003e\u003c/a\u003e Update Python version for linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/e6f523a879c4ee80dad2ae38ead6f1ac3b967055\"\u003e\u003ccode\u003ee6f523a\u003c/code\u003e\u003c/a\u003e Test Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jimporter/mike/compare/v2.1.3...v2.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.5.2 to 6.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.6.0\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove unneeded \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e attribute from \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e tag [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5454\"\u003e#5454\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/hannob\"\u003e\u003ccode\u003e@​hannob\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eRemove global warning format side effect [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5481\"\u003e#5481\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix spurious engine deprecation warning in write_image [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5517\"\u003e#5517\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/mosh3eb\"\u003e\u003ccode\u003e@​mosh3eb\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.1 to version 3.4.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.4.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5527\"\u003e#5527\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for clicking legend titles to toggle visibility of all traces in legend [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7698\"\u003e#7698\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for shapes to reference multiple axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7666\"\u003e#7666\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for dashed marker lines in scatter plots [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7673\"\u003e#7673\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eIncrease axis autorange when bar charts have outside text labels, to avoid labels being clipped [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7675\"\u003e#7675\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.5.2...v6.6.0\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.5.2...v6.6.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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.6.0] - 2026-03-02\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove unneeded \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e attribute from \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e tag [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5454\"\u003e#5454\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/hannob\"\u003e\u003ccode\u003e@​hannob\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eRemove global warning format side effect [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5481\"\u003e#5481\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix spurious engine deprecation warning in write_image [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5517\"\u003e#5517\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/mosh3eb\"\u003e\u003ccode\u003e@​mosh3eb\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.1 to version 3.4.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.4.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5527\"\u003e#5527\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for clicking legend titles to toggle visibility of all traces in legend [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7698\"\u003e#7698\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for shapes to reference multiple axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7666\"\u003e#7666\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for dashed marker lines in scatter plots [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7673\"\u003e#7673\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eIncrease axis autorange when bar charts have outside text labels, to avoid labels being clipped [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7675\"\u003e#7675\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/plotly/plotly.py/commit/837d27ec070275f4a18c321defcb24c4ecf5b20f\"\u003e\u003ccode\u003e837d27e\u003c/code\u003e\u003c/a\u003e changes for v6.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/e0278b3dee031cd634806a49b65a7dd7bba61dfe\"\u003e\u003ccode\u003ee0278b3\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/bb783da8cfd54a06794642490a25e1dfc504bc4b\"\u003e\u003ccode\u003ebb783da\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5516\"\u003e#5516\u003c/a\u003e from plotly/new-charts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/5aabff0817817cce330260b7f0e759f7fab75f36\"\u003e\u003ccode\u003e5aabff0\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into new-charts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/03fd2ed4dedcf9135e87bf01fee206bc7cac9142\"\u003e\u003ccode\u003e03fd2ed\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5527\"\u003e#5527\u003c/a\u003e from plotly/update-plotlyjs-3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/aee4c33edf5554694cc9b7371e188bda02c90c24\"\u003e\u003ccode\u003eaee4c33\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/46a8aa297ca7158103fc9d4f43feee44fa3ef297\"\u003e\u003ccode\u003e46a8aa2\u003c/code\u003e\u003c/a\u003e update js artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/7dc360cd1f42e997ebef09d2eeb30a6029edc2fa\"\u003e\u003ccode\u003e7dc360c\u003c/code\u003e\u003c/a\u003e update package-lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/cf1b9ae1d9ee673ef849118647487b6fb7e80890\"\u003e\u003ccode\u003ecf1b9ae\u003c/code\u003e\u003c/a\u003e upgrade plotly.js to v3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a4832a87756bdf6994934d83160ccc0121f5fb1b\"\u003e\u003ccode\u003ea4832a8\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into new-charts\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.5.2...v6.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.4 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.7/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.15.7/ruff-installer.ps1 | iex\u0026quot;\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/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-confluent-kafka` from 1.4.0 to 1.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/releases\"\u003etypes-confluent-kafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eTypes Confluent Kafka 1.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003e1.4.1\u003c/a\u003e (2026-03-09)\u003c/h2\u003e\n\u003ch3\u003e:beetle: Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecorrect typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e) (\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e0465ade\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/benbenbang/types-confluent-kafka/commit/9f926e8cd545f9388f1339f891f9078f049f8298\"\u003e\u003ccode\u003e9f926e8\u003c/code\u003e\u003c/a\u003e release(versioning): update version to 1.4.1 (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/3e2e41c1f2d740ba56fa4cc2ceb1c3c6982186aa\"\u003e\u003ccode\u003e3e2e41c\u003c/code\u003e\u003c/a\u003e docs(readme): add deprecation notice for official type hints support (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e\u003ccode\u003e0465ade\u003c/code\u003e\u003c/a\u003e fix: correct typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.5.2 to 6.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.6.0\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove unneeded \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e attribute from \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e tag [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5454\"\u003e#5454\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/hannob\"\u003e\u003ccode\u003e@​hannob\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eRemove global warning format side effect [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5481\"\u003e#5481\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix spurious engine deprecation warning in write_image [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5517\"\u003e#5517\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/mosh3eb\"\u003e\u003ccode\u003e@​mosh3eb\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.1 to version 3.4.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.4.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5527\"\u003e#5527\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for clicking legend titles to toggle visibility of all traces in legend [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7698\"\u003e#7698\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for shapes to reference multiple axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7666\"\u003e#7666\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for dashed marker lines in scatter plots [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7673\"\u003e#7673\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eIncrease axis autorange when bar charts have outside text labels, to avoid labels being clipped [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7675\"\u003e#7675\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.5.2...v6.6.0\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.5.2...v6.6.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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.6.0] - 2026-03-02\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove unneeded \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e attribute from \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e tag [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5454\"\u003e#5454\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/hannob\"\u003e\u003ccode\u003e@​hannob\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eRemove global warning format side effect [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5481\"\u003e#5481\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix spurious engine deprecation warning in write_image [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5517\"\u003e#5517\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/mosh3eb\"\u003e\u003ccode\u003e@​mosh3eb\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.1 to version 3.4.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.4.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5527\"\u003e#5527\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for clicking legend titles to toggle visibility of all traces in legend [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7698\"\u003e#7698\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for shapes to reference multiple axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7666\"\u003e#7666\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for dashed marker lines in scatter plots [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7673\"\u003e#7673\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eIncrease axis autorange when bar charts have outside text labels, to avoid labels being clipped [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7675\"\u003e#7675\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/plotly/plotly.py/commit/837d27ec070275f4a18c321defcb24c4ecf5b20f\"\u003e\u003ccode\u003e837d27e\u003c/code\u003e\u003c/a\u003e changes for v6.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/e0278b3dee031cd634806a49b65a7dd7bba61dfe\"\u003e\u003ccode\u003ee0278b3\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/bb783da8cfd54a06794642490a25e1dfc504bc4b\"\u003e\u003ccode\u003ebb783da\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5516\"\u003e#5516\u003c/a\u003e from plotly/new-charts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/5aabff0817817cce330260b7f0e759f7fab75f36\"\u003e\u003ccode\u003e5aabff0\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into new-charts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/03fd2ed4dedcf9135e87bf01fee206bc7cac9142\"\u003e\u003ccode\u003e03fd2ed\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5527\"\u003e#5527\u003c/a\u003e from plotly/update-plotlyjs-3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/aee4c33edf5554694cc9b7371e188bda02c90c24\"\u003e\u003ccode\u003eaee4c33\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/46a8aa297ca7158103fc9d4f43feee44fa3ef297\"\u003e\u003ccode\u003e46a8aa2\u003c/code\u003e\u003c/a\u003e update js artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/7dc360cd1f42e997ebef09d2eeb30a6029edc2fa\"\u003e\u003ccode\u003e7dc360c\u003c/code\u003e\u003c/a\u003e update package-lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/cf1b9ae1d9ee673ef849118647487b6fb7e80890\"\u003e\u003ccode\u003ecf1b9ae\u003c/code\u003e\u003c/a\u003e upgrade plotly.js to v3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a4832a87756bdf6994934d83160ccc0121f5fb1b\"\u003e\u003ccode\u003ea4832a8\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into new-charts\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.5.2...v6.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.4 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.7/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.15.7/ruff-installer.ps1 | iex\u0026quot;\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/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-confluent-kafka` from 1.4.0 to 1.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/releases\"\u003etypes-confluent-kafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eTypes Confluent Kafka 1.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003e1.4.1\u003c/a\u003e (2026-03-09)\u003c/h2\u003e\n\u003ch3\u003e:beetle: Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecorrect typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e) (\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e0465ade\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/benbenbang/types-confluent-kafka/commit/9f926e8cd545f9388f1339f891f9078f049f8298\"\u003e\u003ccode\u003e9f926e8\u003c/code\u003e\u003c/a\u003e release(versioning): update version to 1.4.1 (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/3e2e41c1f2d740ba56fa4cc2ceb1c3c6982186aa\"\u003e\u003ccode\u003e3e2e41c\u003c/code\u003e\u003c/a\u003e docs(readme): add deprecation notice for official type hints support (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e\u003ccode\u003e0465ade\u003c/code\u003e\u003c/a\u003e fix: correct typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/eliagroup/ToOp/pull/353","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/eliagroup%2FToOp/issues/353","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/353/packages"},{"uuid":"4170598230","node_id":"PR_kwDOPQRi3M7OnYzH","number":14,"state":"closed","title":"chore(deps)(deps): bump the python-minor-patch group across 1 directory with 15 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-06T12:26:10.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-30T13:06:13.000Z","updated_at":"2026-04-06T12:26:12.000Z","time_to_close":602397,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): bump","group_name":"python-minor-patch","update_count":15,"packages":[{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.42.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"black","old_version":"26.3.0","new_version":"26.3.1","repository_url":"https://github.com/psf/black"},{"name":"deptry","old_version":"0.24.0","new_version":"0.25.1","repository_url":"https://github.com/osprey-oss/deptry"},{"name":"faker","old_version":"40.8.0","new_version":"40.11.1","repository_url":"https://github.com/joke2k/faker"},{"name":"hypothesis","old_version":"6.151.9","new_version":"6.151.10","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"mkdocs-literate-nav","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/oprypin/mkdocs-literate-nav"},{"name":"mkdocs-material","old_version":"9.7.5","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-redirects","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/ProperDocs/properdocs-redirects"},{"name":"mkdocs-section-index","old_version":"0.3.10","new_version":"0.3.11","repository_url":"https://github.com/oprypin/mkdocs-section-index"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.8","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260327","repository_url":"https://github.com/python/typeshed"},{"name":"vulture","old_version":"2.15","new_version":"2.16","repository_url":"https://github.com/jendrikseipp/vulture"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 14 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.41.5` | `2.42.0` |\n| [black](https://github.com/psf/black) | `26.3.0` | `26.3.1` |\n| [deptry](https://github.com/osprey-oss/deptry) | `0.24.0` | `0.25.1` |\n| [faker](https://github.com/joke2k/faker) | `40.8.0` | `40.11.1` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.9` | `6.151.10` |\n| [mkdocs-literate-nav](https://github.com/oprypin/mkdocs-literate-nav) | `0.6.2` | `0.6.3` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.5` | `9.7.6` |\n| [mkdocs-redirects](https://github.com/ProperDocs/properdocs-redirects) | `1.2.2` | `1.2.3` |\n| [mkdocs-section-index](https://github.com/oprypin/mkdocs-section-index) | `0.3.10` | `0.3.11` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.8` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260327` |\n| [vulture](https://github.com/jendrikseipp/vulture) | `2.15` | `2.16` |\n\n\nUpdates `pydantic-core` from 2.41.5 to 2.42.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic-core/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.0b2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.0b2 2026-02-24\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix backported V1 namespace by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12855\"\u003e#12855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow any type form to be used in \u003ccode\u003evalidate_as()\u003c/code\u003e by \u003ca href=\"https://github.com/bledden\"\u003e\u003ccode\u003e@​bledden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12846\"\u003e#12846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix walrus operator precedence in \u003ccode\u003eUrlConstraints.__get_pydantic_core_schema__()\u003c/code\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12826\"\u003e#12826\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/bledden\"\u003e\u003ccode\u003e@​bledden\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12846\"\u003e#12846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12827\"\u003e#12827\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0b1 2025-02-23\u003c/h2\u003e\n\u003cp\u003eThis is the first beta release of the 2.13 version, mainly providing bug fixes and performance improvements\nfor validation and serialization.\u003c/p\u003e\n\u003cp\u003eNotable changes include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a new \u003ccode\u003epolymorphic_serialization\u003c/code\u003e option, solving issues with \u003ccode\u003eserialize_as_any\u003c/code\u003e introduced in 2.12.\u003c/li\u003e\n\u003cli\u003eLatest V1.10.26 release under the \u003ccode\u003epydantic.v1\u003c/code\u003e namespace. This version includes support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eThe \u003ca href=\"https://github.com/pydantic/pydantic-core/\"\u003e\u003ccode\u003epydantic-core\u003c/code\u003e\u003c/a\u003e repository was merged inside the main \u003ccode\u003epydantic\u003c/code\u003e one.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump Rust url dependency from 2.5.4 to 2.5.7 in \u003ccode\u003epydantic-core\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12508\"\u003e#12508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump Rust minimum version to 1.88, use edition 2024 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12551\"\u003e#12551\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12752\"\u003e#12752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump PyO3 to 0.28, jiter to 0.13 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12767\"\u003e#12767\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epolymorphic_serialization\u003c/code\u003e option by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12518\"\u003e#12518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Root models with \u003ccode\u003eLiteral\u003c/code\u003e root types as discriminator field types by \u003ca href=\"https://github.com/YassinNouh21\"\u003e\u003ccode\u003e@​YassinNouh21\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12680\"\u003e#12680\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate \u003ccode\u003epydantic-core\u003c/code\u003e CI by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12752\"\u003e#12752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImport \u003ccode\u003epydantic-core\u003c/code\u003e into pydantic by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12481\"\u003e#12481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 changes up to v1.10.26 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12663\"\u003e#12663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the \u003ccode\u003ecomplex()\u003c/code\u003e constructor unconditionally when validating \u003ccode\u003ecomplex\u003c/code\u003e Python data by \u003ca href=\"https://github.com/tanmaymunjal\"\u003e\u003ccode\u003e@​tanmaymunjal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12498\"\u003e#12498\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for three-tuple input for \u003ccode\u003eDecimal\u003c/code\u003e by \u003ca href=\"https://github.com/tanmaymunjal\"\u003e\u003ccode\u003e@​tanmaymunjal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12500\"\u003e#12500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlign \u003ccode\u003e@field_serializer\u003c/code\u003e logic with \u003ccode\u003e@field_validator\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12577\"\u003e#12577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003ePydanticUserError\u003c/code\u003e a \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e by \u003ca href=\"https://github.com/poliakovva\"\u003e\u003ccode\u003e@​poliakovva\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12579\"\u003e#12579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant serialization attempts in nested unions by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12604\"\u003e#12604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCopy \u003ccode\u003eroot\u003c/code\u003e value when making root model shallow copies by \u003ca href=\"https://github.com/YassinNouh21\"\u003e\u003ccode\u003e@​YassinNouh21\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12679\"\u003e#12679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure deterministic JSON schema defaults by sorting sets by \u003ca href=\"https://github.com/drshvik\"\u003e\u003ccode\u003e@​drshvik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12760\"\u003e#12760\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.0b2 (2026-02-24)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0b2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix backported V1 namespace by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12855\"\u003e#12855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow any type form to be used in \u003ccode\u003evalidate_as()\u003c/code\u003e by \u003ca href=\"https://github.com/bledden\"\u003e\u003ccode\u003e@​bledden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12846\"\u003e#12846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix walrus operator precedence in \u003ccode\u003eUrlConstraints.__get_pydantic_core_schema__()\u003c/code\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12826\"\u003e#12826\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bledden\"\u003e\u003ccode\u003e@​bledden\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12846\"\u003e#12846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12827\"\u003e#12827\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0b1 (2026-02-23)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0b1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the first beta release of the 2.13 version, mainly providing bug fixes and performance improvements\nfor validation and serialization.\u003c/p\u003e\n\u003cp\u003eNotable changes include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a new \u003ccode\u003epolymorphic_serialization\u003c/code\u003e option, solving issues with \u003ccode\u003eserialize_as_any\u003c/code\u003e introduced in 2.12.\u003c/li\u003e\n\u003cli\u003eLatest V1.10.26 release under the \u003ccode\u003epydantic.v1\u003c/code\u003e namespace. This version includes support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eThe \u003ca href=\"https://github.com/pydantic/pydantic-core/\"\u003e\u003ccode\u003epydantic-core\u003c/code\u003e\u003c/a\u003e repository was merged inside the main \u003ccode\u003epydantic\u003c/code\u003e one.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump Rust url dependency from 2.5.4 to 2.5.7 in \u003ccode\u003epydantic-core\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12508\"\u003e#12508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump Rust minimum version to 1.88, use edition 2024 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12551\"\u003e#12551\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12752\"\u003e#12752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump PyO3 to 0.28, jiter to 0.13 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12767\"\u003e#12767\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epolymorphic_serialization\u003c/code\u003e option by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12518\"\u003e#12518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Root models with \u003ccode\u003eLiteral\u003c/code\u003e root types as discriminator field types by \u003ca href=\"https://github.com/YassinNouh21\"\u003e\u003ccode\u003e@​YassinNouh21\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12680\"\u003e#12680\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate \u003ccode\u003epydantic-core\u003c/code\u003e CI by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12752\"\u003e#12752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImport \u003ccode\u003epydantic-core\u003c/code\u003e into pydantic by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12481\"\u003e#12481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 changes up to v1.10.26 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12663\"\u003e#12663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the \u003ccode\u003ecomplex()\u003c/code\u003e constructor unconditionally when validating \u003ccode\u003ecomplex\u003c/code\u003e Python data by \u003ca href=\"https://github.com/tanmaymunjal\"\u003e\u003ccode\u003e@​tanmaymunjal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12498\"\u003e#12498\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for three-tuple input for \u003ccode\u003eDecimal\u003c/code\u003e by \u003ca href=\"https://github.com/tanmaymunjal\"\u003e\u003ccode\u003e@​tanmaymunjal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12500\"\u003e#12500\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/4cd172ca710a2617280563292f55b1a18f743b26\"\u003e\u003ccode\u003e4cd172c\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.0b2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12857\"\u003e#12857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e65a3562ee1702d7e6c9bccc5e6b1786d0e2862f\"\u003e\u003ccode\u003ee65a356\u003c/code\u003e\u003c/a\u003e Split release jobs, only publish pydantic-core if necessary (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12856\"\u003e#12856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f41d300d484a043d3a26d1d95383cd490bd9fde0\"\u003e\u003ccode\u003ef41d300\u003c/code\u003e\u003c/a\u003e Fix backported V1 namespace (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12855\"\u003e#12855\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/56b6c0e788c5f7f9156e1812132e1ca92243d17b\"\u003e\u003ccode\u003e56b6c0e\u003c/code\u003e\u003c/a\u003e Fix grammar in contributing docs (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12849\"\u003e#12849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/aa4d8b3fbc5f449ce1c05ebec36b1d4b3b736b69\"\u003e\u003ccode\u003eaa4d8b3\u003c/code\u003e\u003c/a\u003e Improve documented differences between Pydantic models and dataclasses (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12786\"\u003e#12786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c763adeba844eb45c7bbad30adf631559dfddc0b\"\u003e\u003ccode\u003ec763ade\u003c/code\u003e\u003c/a\u003e Fix walrus operator precedence in `UrlConstraints._\u003cem\u003eget_pydantic_core_schema\u003c/em\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fce3d034312b47a16b45b51d229e5107ca6b3bbc\"\u003e\u003ccode\u003efce3d03\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003e__hash__\u003c/code\u003e in \u003ccode\u003eUuidVersion\u003c/code\u003e and \u003ccode\u003ePathType\u003c/code\u003e to hash values instead of type...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e943b41ed1700fdbe8b8804c0355c605805e73ae\"\u003e\u003ccode\u003ee943b41\u003c/code\u003e\u003c/a\u003e Allow any type form to be used in \u003ccode\u003evalidate_as()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12846\"\u003e#12846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f29bd714a4cb863d6da5101daa01250278405ee2\"\u003e\u003ccode\u003ef29bd71\u003c/code\u003e\u003c/a\u003e Fix CI release job (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12851\"\u003e#12851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/11ec1ee331f06c24cd2912a653d40e42787dadb7\"\u003e\u003ccode\u003e11ec1ee\u003c/code\u003e\u003c/a\u003e Fix CI release job (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12850\"\u003e#12850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.0b2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 26.3.0 to 26.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\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/black/commit/c6755bb741b6481d6b3d3bb563c83fa060db96c9\"\u003e\u003ccode\u003ec6755bb\u003c/code\u003e\u003c/a\u003e Prepare release 26.3.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5046\"\u003e#5046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69973fd6950985fbeb1090d96da717dc4d8380b0\"\u003e\u003ccode\u003e69973fd\u003c/code\u003e\u003c/a\u003e Harden blackd browser-facing request handling (\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4937fe6cf241139ddbfc16b0bdbb5b422798909d\"\u003e\u003ccode\u003e4937fe6\u003c/code\u003e\u003c/a\u003e Fix some shenanigans with the cache file and IPython (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2e641d174469c505d5ae905e75d4c769597e681f\"\u003e\u003ccode\u003e2e641d1\u003c/code\u003e\u003c/a\u003e docs: remove outdated Black Playground references (\u003ca href=\"https://redirect.github.com/psf/black/issues/5044\"\u003e#5044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c014b22a2d5e0632587b47b81151658bddfa0b88\"\u003e\u003ccode\u003ec014b22\u003c/code\u003e\u003c/a\u003e Remove unused internal code (\u003ca href=\"https://redirect.github.com/psf/black/issues/5041\"\u003e#5041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0dae20b2d009f2f03de8696d06b0c947d3abafc9\"\u003e\u003ccode\u003e0dae20b\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5036\"\u003e#5036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c5c1cbddd92cecb554ac2a77a24139dd76831030\"\u003e\u003ccode\u003ec5c1cbd\u003c/code\u003e\u003c/a\u003e Minor release patches (\u003ca href=\"https://redirect.github.com/psf/black/issues/5035\"\u003e#5035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7e5a828c37d71b6a6666e28eed444816def6a8f4\"\u003e\u003ccode\u003e7e5a828\u003c/code\u003e\u003c/a\u003e docs: clarify relationship between Black style and PEP 8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5025\"\u003e#5025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69705deb8776e7c5e585668da106d1abe2cb8d77\"\u003e\u003ccode\u003e69705de\u003c/code\u003e\u003c/a\u003e docs: add clearer pyproject configuration guidance (\u003ca href=\"https://redirect.github.com/psf/black/issues/5026\"\u003e#5026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/psf/black/compare/26.3.0...26.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `deptry` from 0.24.0 to 0.25.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/osprey-oss/deptry/releases\"\u003edeptry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.25.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease \u003ca href=\"https://github.com/osprey-oss/deptry/releases/tag/0.25.0\"\u003e0.25.0\u003c/a\u003e was yanked in PyPI because of a failure during the release. 0.25.1 is identical, but includes a fix in the release process.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/osprey-oss/deptry/compare/0.25.0...0.25.1\"\u003ehttps://github.com/osprey-oss/deptry/compare/0.25.0...0.25.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eRepository moved to Osprey OSS\u003c/h3\u003e\n\u003cp\u003edeptry has moved from \u003ca href=\"https://github.com/fpgmaas/deptry\"\u003efpgmaas/deptry\u003c/a\u003e to \u003ca href=\"https://github.com/osprey-oss/deptry\"\u003eosprey-oss/deptry\u003c/a\u003e under the new Osprey OSS organisation. This ensures the project is not tied to a single account and makes it easier to manage contributors and access as the project grows.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport inline \u003ccode\u003e# deptry: ignore\u003c/code\u003e comments to suppress violations (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1473\"\u003e#1473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport non-dev dependency groups with \u003ccode\u003e--non-dev-dependency-groups\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1440\"\u003e#1440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003etomli\u003c/code\u003e on Python \u0026lt; 3.15 for TOML 1.1 support (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1446\"\u003e#1446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--optional-dependencies-dev-groups\u003c/code\u003e and deprecate \u003ccode\u003e--pep621-dev-dependency-groups\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1391\"\u003e#1391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that \u003ccode\u003e--config\u003c/code\u003e does not suppress output (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1390\"\u003e#1390\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFull Changelog\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/fpgmaas/deptry/compare/0.24.0...0.25.0\"\u003ehttps://github.com/fpgmaas/deptry/compare/0.24.0...0.25.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/osprey-oss/deptry/blob/main/CHANGELOG.md\"\u003edeptry's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.25.1 - 2025-03-18\u003c/h2\u003e\n\u003cp\u003eRelease 0.25.0 was yanked in PyPI because of a failure during the release. 0.25.1 is identical, but includes a fix in the release process.\u003c/p\u003e\n\u003ch2\u003e0.25.0 - 2025-03-18\u003c/h2\u003e\n\u003ch3\u003eRepository moved to Osprey OSS\u003c/h3\u003e\n\u003cp\u003edeptry has moved from \u003ca href=\"https://github.com/fpgmaas/deptry\"\u003efpgmaas/deptry\u003c/a\u003e to \u003ca href=\"https://github.com/osprey-oss/deptry\"\u003eosprey-oss/deptry\u003c/a\u003e under the new Osprey OSS organisation. This ensures the project is not tied to a single account and makes it easier to manage contributors and access as the project grows.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport inline \u003ccode\u003e# deptry: ignore\u003c/code\u003e comments to suppress violations (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1473\"\u003e#1473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport non-dev dependency groups with \u003ccode\u003e--non-dev-dependency-groups\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1440\"\u003e#1440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003etomli\u003c/code\u003e on Python \u0026lt; 3.15 for TOML 1.1 support (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1446\"\u003e#1446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--optional-dependencies-dev-groups\u003c/code\u003e and deprecate \u003ccode\u003e--pep621-dev-dependency-groups\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1391\"\u003e#1391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that \u003ccode\u003e--config\u003c/code\u003e does not suppress output (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1390\"\u003e#1390\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFull Changelog\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/fpgmaas/deptry/compare/0.24.0...0.25.0\"\u003ehttps://github.com/fpgmaas/deptry/compare/0.24.0...0.25.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/osprey-oss/deptry/commit/0c39226d761685125c5ff71ca81282d6751c9540\"\u003e\u003ccode\u003e0c39226\u003c/code\u003e\u003c/a\u003e Remove pinned maturin version for building windows wheels in release (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1516\"\u003e#1516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/501a929da2e323fb3b49322380169ade0fd4709f\"\u003e\u003ccode\u003e501a929\u003c/code\u003e\u003c/a\u003e chore(packaging): use PEP 639 license format (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1514\"\u003e#1514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/2d89cf487520b0284a4f6f6a6077ce3bb7299bbd\"\u003e\u003ccode\u003e2d89cf4\u003c/code\u003e\u003c/a\u003e Releasenotes for release 0.25.0 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1510\"\u003e#1510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/ef64f9367f58aab61e752f8a48c07dd9fd137f7f\"\u003e\u003ccode\u003eef64f93\u003c/code\u003e\u003c/a\u003e Replace all references of fpgmaas/deptry with osprey-oss/deptry (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1513\"\u003e#1513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/fdec8c532f2172ec64bec4b779fcb56508e276ef\"\u003e\u003ccode\u003efdec8c5\u003c/code\u003e\u003c/a\u003e Add trusted publishing (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1512\"\u003e#1512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/2e27ae2242567f2958aa9a451f54d4b3ec31740b\"\u003e\u003ccode\u003e2e27ae2\u003c/code\u003e\u003c/a\u003e chore(deps): update uv-version to v0.10.10 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1503\"\u003e#1503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/9d1f7d1e6ed1d27c163dd1abc28eeda5beba50ca\"\u003e\u003ccode\u003e9d1f7d1\u003c/code\u003e\u003c/a\u003e chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.15.6 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1502\"\u003e#1502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/2a5a0a6b631f0ee1e4475b1e9212d0bafe3af68c\"\u003e\u003ccode\u003e2a5a0a6\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency mkdocs-material to v9.7.5 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1501\"\u003e#1501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/487f682138d7ac9370cb1b9edd0be26a1e8940d0\"\u003e\u003ccode\u003e487f682\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pnpm to v10.32.1 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1506\"\u003e#1506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/608ba46360298c30db7402179fe85349f78391f4\"\u003e\u003ccode\u003e608ba46\u003c/code\u003e\u003c/a\u003e fix(deps): update ruff rust to v0.15.6 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1504\"\u003e#1504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/osprey-oss/deptry/compare/0.24.0...0.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.8.0 to 40.11.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.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md\"\u003eCHANGELOG.md\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/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.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\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.10.0...v40.11.0\"\u003ev40.11.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider. Thanks \u003ca href=\"https://github.com/raphael-s\"\u003e\u003ccode\u003e@​raphael-s\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.9.0...v40.10.0\"\u003ev40.10.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/rodrigobnogueira\"\u003e\u003ccode\u003e@​rodrigobnogueira\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.8.1...v40.9.0\"\u003ev40.9.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider. Thanks \u003ca href=\"https://github.com/filipemattar\"\u003e\u003ccode\u003e@​filipemattar\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.8.0...v40.8.1\"\u003ev40.8.1 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mutable default providers. Thanks \u003ca href=\"https://github.com/Dhi13man\"\u003e\u003ccode\u003e@​Dhi13man\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/joke2k/faker/commit/db42f6477ea15d754889a9e030b3c3d29872d947\"\u003e\u003ccode\u003edb42f64\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.0 → 40.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5b9f98629cb842dfe352879aaf0628bc10a643d\"\u003e\u003ccode\u003ea5b9f98\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/01cb8d0f90fac0799f90e1295e8d4ab67c4fc070\"\u003e\u003ccode\u003e01cb8d0\u003c/code\u003e\u003c/a\u003e fix: rebind deepcopy proxies to copied Faker instances (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2340\"\u003e#2340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/53314fc7d3fba03fed38bb1053a395fdfb50e35f\"\u003e\u003ccode\u003e53314fc\u003c/code\u003e\u003c/a\u003e Bump version: 40.10.0 → 40.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4b47329802626fc808f48be8b2a79564429500c9\"\u003e\u003ccode\u003e4b47329\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4a3341a8bd266b6ff2620c23648615a3f000bbd0\"\u003e\u003ccode\u003e4a3341a\u003c/code\u003e\u003c/a\u003e Add major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2337\"\u003e#2337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c571a926438d868841ac62ad7bc49d65eb8f103c\"\u003e\u003ccode\u003ec571a92\u003c/code\u003e\u003c/a\u003e Bump version: 40.9.0 → 40.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ec660a43ed059178965fc1c24ae039dfbcf80628\"\u003e\u003ccode\u003eec660a4\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/db8b86b852ba85043fbe2c9c271c72e904b43580\"\u003e\u003ccode\u003edb8b86b\u003c/code\u003e\u003c/a\u003e Fix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2324\"\u003e#2324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/1ebfd5f7194f867b018c934b5097bf9d6ba38d76\"\u003e\u003ccode\u003e1ebfd5f\u003c/code\u003e\u003c/a\u003e Bump version: 40.8.1 → 40.9.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.8.0...v40.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.9 to 6.151.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.10\u003c/h2\u003e\n\u003cp\u003eWhen shrinking takes more than five minutes, Hypothesis now prints the\n\u0026quot;\u003ca href=\"https://github.com/seed\"\u003e\u003ccode\u003e@​seed\u003c/code\u003e\u003c/a\u003e\u0026quot; decorator alongside the slow-shrinking warning so you can\nreproduce the failure.\u003c/p\u003e\n\u003cp\u003eThanks to Ian Hunt-Isaak for this contribution!\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-10\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\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/HypothesisWorks/hypothesis/commit/dd619a862bc4e8765bb5f5ca6e9528c138537a51\"\u003e\u003ccode\u003edd619a8\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.151.10 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/47bf92e06da4557a58417835a02714f45297d297\"\u003e\u003ccode\u003e47bf92e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4685\"\u003e#4685\u003c/a\u003e from HypothesisWorks/create-pull-request/patch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/e87b8bacd8203590b43aa62412a3438044ecdaf2\"\u003e\u003ccode\u003ee87b8ba\u003c/code\u003e\u003c/a\u003e Update pinned dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d2a9a599fc0c484ec985b52ed67a7ddfc0d1bcfd\"\u003e\u003ccode\u003ed2a9a59\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4677\"\u003e#4677\u003c/a\u003e from ianhi/slow-shrink-seed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/1d6046a84348d600b21128c8d96072e9f155560e\"\u003e\u003ccode\u003e1d6046a\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/36c2cae62a6a94744452fc728381ac782fca9651\"\u003e\u003ccode\u003e36c2cae\u003c/code\u003e\u003c/a\u003e refactor and reword\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3d54cdc8e27c32b5e80afbd15986a5cf84128bd8\"\u003e\u003ccode\u003e3d54cdc\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into slow-shrink-seed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c1d70b89c5d586660e1b21fdf422a10fd14e9d6c\"\u003e\u003ccode\u003ec1d70b8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4679\"\u003e#4679\u003c/a\u003e from HypothesisWorks/create-pull-request/patch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/e1e0ba11b752451daaed0150cd74b47a2abe9c0c\"\u003e\u003ccode\u003ee1e0ba1\u003c/code\u003e\u003c/a\u003e Update pinned dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/9fe714de9b90f425c2dd70c5d2a367bab3988f3d\"\u003e\u003ccode\u003e9fe714d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4678\"\u003e#4678\u003c/a\u003e from HypothesisWorks/create-pull-request/patch\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.9...hypothesis-python-6.151.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-literate-nav` from 0.6.2 to 0.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/releases\"\u003emkdocs-literate-nav's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/pull/39\"\u003eoprypin/mkdocs-literate-nav#39\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\u003ehttps://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\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/oprypin/mkdocs-literate-nav/commit/b91268c263f61e38a7e27f77ccf38ec287e0c0b5\"\u003e\u003ccode\u003eb91268c\u003c/code\u003e\u003c/a\u003e v0.6.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/cee9ec49a1523036081378a39bda9fa014432526\"\u003e\u003ccode\u003ecee9ec4\u003c/code\u003e\u003c/a\u003e Exclude properdocs when testing minimal dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/ea523f5864f59fb7939f84cd4400df67280ad52c\"\u003e\u003ccode\u003eea523f5\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/issues/39\"\u003e#39\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/258b15a15a3e25cedc816d0a5a971acfdb86541e\"\u003e\u003ccode\u003e258b15a\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\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.5 to 9.7.6\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.6\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\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\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\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/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.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\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\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/6c52ed6289b171a153875491f059a94819ec3e10\"\u003e\u003ccode\u003e6c52ed6\u003c/code\u003e\u003c/a\u003e Prepare 9.7.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/51d9b76636431814df924bcda27485b16023978b\"\u003e\u003ccode\u003e51d9b76\u003c/code\u003e\u003c/a\u003e Automatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6f9a48b4048650341a654d9757da57fc1e3e323d\"\u003e\u003ccode\u003e6f9a48b\u003c/code\u003e\u003c/a\u003e Updated links\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.7.5...9.7.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-redirects` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ProperDocs/properdocs-redirects/releases\"\u003emkdocs-redirects's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/ProperDocs/mkdocs-redirects/pull/2\"\u003eProperDocs/mkdocs-redirects#2\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eDrop support for Python 3.9, officially support Python 3.14\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/compare/v1.2.2...v1.2.3\"\u003ehttps://github.com/ProperDocs/mkdocs-redirects/compare/v1.2.2...v1.2.3\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/ProperDocs/mkdocs-redirects/commit/77c7f934b26a6521c64b5ecfd29338b10e367527\"\u003e\u003ccode\u003e77c7f93\u003c/code\u003e\u003c/a\u003e Release 1.2.3 (\u003ca href=\"https://redirect.github.com/ProperDocs/properdocs-redirects/issues/4\"\u003e#4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/15082ac93787964061e3c764fcf57e656709f4e3\"\u003e\u003ccode\u003e15082ac\u003c/code\u003e\u003c/a\u003e Remove unused Makefile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/f38f50248af2647e43af66cbf327c636662503f9\"\u003e\u003ccode\u003ef38f502\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/ProperDocs/properdocs-redirects/issues/2\"\u003e#2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/92979c5f7b8418b8112fd3aca849eafbc1e61f51\"\u003e\u003ccode\u003e92979c5\u003c/code\u003e\u003c/a\u003e Update references - use the new origin repository for this package (\u003ca href=\"https://redirect.github.com/ProperDocs/properdocs-redirects/issues/3\"\u003e#3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/44e0bca6f89d1f2d2152e5b4db2136902d25088b\"\u003e\u003ccode\u003e44e0bca\u003c/code\u003e\u003c/a\u003e Bump the minimal required version of MkDocs (\u003ca href=\"https://redirect.github.com/ProperDocs/properdocs-redirects/issues/1\"\u003e#1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/a9dd8d411a5e69367e588e82987f85fa019a69ff\"\u003e\u003ccode\u003ea9dd8d4\u003c/code\u003e\u003c/a\u003e Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/100e7b482bce1bab562bd74088388f6383afd681\"\u003e\u003ccode\u003e100e7b4\u003c/code\u003e\u003c/a\u003e Template upgrade\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ProperDocs/properdocs-redirects/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-section-index` from 0.3.10 to 0.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/releases\"\u003emkdocs-section-index's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/pull/27\"\u003eoprypin/mkdocs-section-index#27\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ehttps://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\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/oprypin/mkdocs-section-index/commit/a8235f6f8eb5927b966a3aaea8afe5fa161ecece\"\u003e\u003ccode\u003ea8235f6\u003c/code\u003e\u003c/a\u003e v0.3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/ac66dfda53834d79ce8e0af6f340dddd7cde2bf9\"\u003e\u003ccode\u003eac66dfd\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/issues/27\"\u003e#27\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/32866cd83993ee3eefbac0fcc13911692796d8f6\"\u003e\u003ccode\u003e32866cd\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.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.5 to 0.15.8\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.8\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\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.8\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\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/c2a8815842f9dc5d24ec19385eae0f1a7188b0d9\"\u003e\u003ccode\u003ec2a8815\u003c/code\u003e\u003c/a\u003e Release 0.15.8 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24217\"\u003e#24217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d444d52e2b9cc8bc9a078c2bd4ff6ff993290209\"\u003e\u003ccode\u003ed444d52\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda expressions with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22633\"\u003e#22633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9622285ed0081fc688149f6efca87f127d9b18dd\"\u003e\u003ccode\u003e9622285\u003c/code\u003e\u003c/a\u003e [ty] Autocomplete arguments if in arguments node (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24167\"\u003e#24167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d81266252aaf0820346d55edbed79c4f25ba13d2\"\u003e\u003ccode\u003ed812662\u003c/code\u003e\u003c/a\u003e Use the \u003ccode\u003erelease\u003c/code\u003e environment in \u003ccode\u003epublish-docs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24214\"\u003e#24214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eda2355832f7a9c58aef6febd3e061dc9c87509a\"\u003e\u003ccode\u003eeda2355\u003c/code\u003e\u003c/a\u003e [ty] Show \u003ccode\u003eFinal\u003c/code\u003e source in final assignment diagnostic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24194\"\u003e#24194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/929eb5238c82bfadad4549ff526f02efc0163dd0\"\u003e\u003ccode\u003e929eb52\u003c/code\u003e\u003c/a\u003e [ty] Enforce Final attribute assignment rules for annotated and augmented wri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/34998be22ec3a77d398bbd55234ef8740f768329\"\u003e\u003ccode\u003e34998be\u003c/code\u003e\u003c/a\u003e [ty] Fix typo in comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24211\"\u003e#24211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/560aca0b2828ee2ff1b4bcc5c5ef1ef4ced229d2\"\u003e\u003ccode\u003e560aca0\u003c/code\u003e\u003c/a\u003e [ty] Minor simplifications to some benchmark code (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24209\"\u003e#24209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/683bae512d03d3727a7bcdbc5a0170dafa049583\"\u003e\u003ccode\u003e683bae5\u003c/code\u003e\u003c/a\u003e [ty] Track non-terminal-call constraints in global scope (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23245\"\u003e#23245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4704c2a4ff3dde2fd29324346720e9516b4fe387\"\u003e\u003ccode\u003e4704c2a\u003c/code\u003e\u003c/a\u003e [ty] Remove unnecessary intermediate collection in `StaticClassLiteral::field...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.5...0.15.8\"\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.32.4.20260107 to 2.33.0.20260327\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `vulture` from 2.15 to 2.16\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jendrikseipp/vulture/releases\"\u003evulture's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.16\u003c/h2\u003e\n\u003cp\u003e2.16 (2026-03-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix false positives for dead code after while loops (\u003ca href=\"https://redirect.github.com/jendrikseipp/vulture/issues/412\"\u003e#412\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/jendrikseipp/vulture/issues/413\"\u003e#413\u003c/a\u003e, Jendrik Seipp).\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ety\u003c/code\u003e instead of \u003ccode\u003epytype\u003c/code\u003e for testing type annotations (Jendrik Seipp).\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/jendrikseipp/vulture/blob/main/CHANGELOG.md\"\u003evulture's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.16 (2026-03-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix false positives for dead code after w...\n\n_Description has been truncated_\n\n\u003c!-- This is an auto-generated description by cubic. --\u003e\n---\n## Summary by cubic\nUpdate Python dependencies to latest minor/patch versions to pick up bug fixes and maintenance updates. Notably upgrades `pydantic-core` and moves `pydantic` to 2.13.0b2, and updates MkDocs plugins which add a new `properdocs` runtime for docs.\n\n- **Dependencies**\n  - Core: `pydantic-core` 2.42.0 and `pydantic` 2.13.0b2.\n  - Tooling: `black` 26.3.1, `ruff` 0.15.8, `pytest-cov` 7.1.0, `pytest-env` 1.6.0, `deptry` 0.25.1, `vulture` 2.16, `hypothesis` 6.151.10, `types-requests` 2.33.0.20260327.\n  - Docs: `mkdocs-material` 9.7.6, `mkdocs-literate-nav` 0.6.3, `mkdocs-redirects` 1.2.3, `mkdocs-section-index` 0.3.11; adds `properdocs` and caps `mkdocs` to \u003c=1.6.1.\n  - Test data: `faker` 40.11.1.\n\n\u003csup\u003eWritten for commit c3ba939bd55551d5a6b61d00582c1347546ae8fd. Summary will update on new commits.\u003c/sup\u003e\n\n\u003c!-- End of auto-generated description by cubic. --\u003e","html_url":"https://github.com/flext-sh/flext-dbt-oracle-wms/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/flext-sh%2Fflext-dbt-oracle-wms/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"},{"uuid":"4163124585","node_id":"PR_kwDOQ5AU387OWrVJ","number":108,"state":"closed","title":"Bump the uv-deps group across 1 directory with 6 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-05T07:14:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-29T07:13:58.000Z","updated_at":"2026-04-05T07:14:02.000Z","time_to_close":604803,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"uv-deps","update_count":6,"packages":[{"name":"celery","old_version":"5.6.2","new_version":"5.6.3"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"sentry-sdk","old_version":"2.54.0","new_version":"2.56.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.8","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-deps group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [celery[redis]](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.54.0` | `2.56.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.4` | `0.15.8` |\n\n\nUpdates `celery[redis]` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery[redis]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10151\"\u003ecelery/celery#10151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove on_after_finalize signal documentation by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10155\"\u003ecelery/celery#10155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-commutative example to clarify partial arg ordering in canvas docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10157\"\u003ecelery/celery#10157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant test_isa_mapping test (fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10077\"\u003e#10077\u003c/a\u003e) by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10103\"\u003ecelery/celery#10103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10162\"\u003ecelery/celery#10162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated args from redis get_connection call by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10036\"\u003ecelery/celery#10036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/celery/celery/issues/6912\"\u003e#6912\u003c/a\u003e rpc backend reconnection error by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10179\"\u003ecelery/celery#10179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) by \u003ca href=\"https://github.com/drichardson\"\u003e\u003ccode\u003e@​drichardson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10165\"\u003ecelery/celery#10165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit by \u003ca href=\"https://github.com/tsangwailam\"\u003e\u003ccode\u003e@​tsangwailam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10181\"\u003ecelery/celery#10181\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix O(K²) message bloat in a chain of chords by \u003ca href=\"https://github.com/Borzik\"\u003e\u003ccode\u003e@​Borzik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10171\"\u003ecelery/celery#10171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mock connection interfaces to prevent \u003ccode\u003eTypeError\u003c/code\u003e during exception handling by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10178\"\u003ecelery/celery#10178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks by \u003ca href=\"https://github.com/aurangzaib048\"\u003e\u003ccode\u003e@​aurangzaib048\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10159\"\u003ecelery/celery#10159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003ereconnect_on_error\u003c/code\u003e to \u003ccode\u003eBaseResultConsumer\u003c/code\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10189\"\u003ecelery/celery#10189\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epep 649 by \u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10187\"\u003ecelery/celery#10187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix#9722 friendly status errors for CLI by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10190\"\u003ecelery/celery#10190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify after_return behavior for retried tasks by \u003ca href=\"https://github.com/KianAnbarestani\"\u003e\u003ccode\u003e@​KianAnbarestani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10192\"\u003ecelery/celery#10192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd compression header to message protocol docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10156\"\u003ecelery/celery#10156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated word in bootsteps comment by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10153\"\u003ecelery/celery#10153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove outdated autoreloader section from extending docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10154\"\u003ecelery/celery#10154\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/blob/v5.6.3/Changelog.rst\"\u003ecelery[redis]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.3\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-03-26\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix Django worker recursion bug + defensive checks for pool_cls.__module__ ([#10048](https://github.com/celery/celery/issues/10048))\n- Docs: Update user_preload_options example to use click. ([#10056](https://github.com/celery/celery/issues/10056))\n- Fix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo ([#10060](https://github.com/celery/celery/issues/10060))\n- Fix broken images on PyPI page ([#10066](https://github.com/celery/celery/issues/10066))\n- Remove broken reference. ([#10071](https://github.com/celery/celery/issues/10071))\n- Removed --dist=loadscope from smoke tests ([#10073](https://github.com/celery/celery/issues/10073))\n- Docs: Clarify task_retry signal args may be None ([#10076](https://github.com/celery/celery/issues/10076))\n- Update example for Django ([#10081](https://github.com/celery/celery/issues/10081))\n- Make tests compatible with pymongo \u0026gt;= 4.16 ([#10074](https://github.com/celery/celery/issues/10074))\n- fix: source install of cassandra-driver ([#10105](https://github.com/celery/celery/issues/10105))\n- fix: register task cross-reference role in Sphinx extension ([#10100](https://github.com/celery/celery/issues/10100))\n- fix: avoid cycle detection in native delayed delivery ([#10095](https://github.com/celery/celery/issues/10095))\n- fix(asynpool): avoid AttributeError when proc lacks _sentinel_poll ([#10086](https://github.com/celery/celery/issues/10086))\n- fix dusk_astronomical horizon sign (+18 -\u0026gt; -18) ([#10121](https://github.com/celery/celery/issues/10121))\n- Fix/10106 onupdate col use lambda func ([#10108](https://github.com/celery/celery/issues/10108))\n- Fix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 ([#10083](https://github.com/celery/celery/issues/10083)) ([#10123](https://github.com/celery/celery/issues/10123))\n- Fix 10109 db backend connection health ([#10124](https://github.com/celery/celery/issues/10124))\n- Database Backend filter unsupport sql engine arguments with nullpool [#7355](https://github.com/celery/celery/issues/7355) ([#10134](https://github.com/celery/celery/issues/10134))\n- fix(beat): correct argument order in Service.__reduce__ ([#10137](https://github.com/celery/celery/issues/10137))\n- ci: declare explicit read-only token permissions in workflow jobs ([#10139](https://github.com/celery/celery/issues/10139))\n- chore: 'boto3to' to 'boto3 to' ([#10133](https://github.com/celery/celery/issues/10133))\n- Database Backend: Add missing index on date_done (Fixes [#10097](https://github.com/celery/celery/issues/10097)) ([#10098](https://github.com/celery/celery/issues/10098))\n- docs: fix typo in CONTRIBUTING.rst ([#10141](https://github.com/celery/celery/issues/10141))\n- Refer to Flower / Prometheus for monitoring ([#10140](https://github.com/celery/celery/issues/10140))\n- docs: remove duplicated words in broker and routing docs ([#10146](https://github.com/celery/celery/issues/10146))\n- docs: fix stale version reference and grammar in README ([#10145](https://github.com/celery/celery/issues/10145))\n- docs: fix wording in Celery 5.3 worker pool notes ([#10149](https://github.com/celery/celery/issues/10149))\n- docs: fix duplicated wording in 3.1 changelog entry ([#10152](https://github.com/celery/celery/issues/10152))\n- docs: fix changelog typo in context manager wording ([#10144](https://github.com/celery/celery/issues/10144))\n- Fix/10096 worker fails to reconnect after redis failover ([#10151](https://github.com/celery/celery/issues/10151))\n- Improve on_after_finalize signal documentation ([#10155](https://github.com/celery/celery/issues/10155))\n- Add non-commutative example to clarify partial arg ordering in canvas docs ([#10157](https://github.com/celery/celery/issues/10157))\n- Remove redundant test_isa_mapping test (fixes [#10077](https://github.com/celery/celery/issues/10077)) ([#10103](https://github.com/celery/celery/issues/10103))\n- Upgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg ([#10162](https://github.com/celery/celery/issues/10162))\n- Remove deprecated args from redis get_connection call ([#10036](https://github.com/celery/celery/issues/10036))\n- Fix [#6912](https://github.com/celery/celery/issues/6912) rpc backend reconnection error ([#10179](https://github.com/celery/celery/issues/10179))\n- Fix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) ([#10165](https://github.com/celery/celery/issues/10165))\n- docs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit ([#10181](https://github.com/celery/celery/issues/10181))\n- Fix O(K²) message bloat in a chain of chords ([#10171](https://github.com/celery/celery/issues/10171))\n- Fix mock connection interfaces to prevent `TypeError` during exception handling ([#10178](https://github.com/celery/celery/issues/10178))\n- fix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks ([#10159](https://github.com/celery/celery/issues/10159))\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/3f4d8d795ad128bd7430cc5dc174a802cded425c\"\u003e\u003ccode\u003e3f4d8d7\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.3 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10221\"\u003e#10221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a989e8cf8876274b1f0612abffeeb2e9995ed321\"\u003e\u003ccode\u003ea989e8c\u003c/code\u003e\u003c/a\u003e fix: clear the timer while catch the exception (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10218\"\u003e#10218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d06de5f047620b0ea2bdbdb3c0c56137b79ae9a1\"\u003e\u003ccode\u003ed06de5f\u003c/code\u003e\u003c/a\u003e Chore(deps): Bump nick-fields/retry from 3 to 4 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10213\"\u003e#10213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/c3c19c31dc3e21f16d4d85a8ba8401a9223ace09\"\u003e\u003ccode\u003ec3c19c3\u003c/code\u003e\u003c/a\u003e Fix: prioritize request ignore_result over task definition (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10184\"\u003e#10184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d23be53f6f3600d48df35a797c63eb1c7d4d4b97\"\u003e\u003ccode\u003ed23be53\u003c/code\u003e\u003c/a\u003e Remove outdated autoreloader section from extending docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10154\"\u003e#10154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ada2da7475a5fa9f9ad079149a5d6864634abc28\"\u003e\u003ccode\u003eada2da7\u003c/code\u003e\u003c/a\u003e docs: fix duplicated word in bootsteps comment\\n\\nSigned-off-by: Rohan Santho...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f45f62beb3b16ae960944f8c97de13ccf15f2d0a\"\u003e\u003ccode\u003ef45f62b\u003c/code\u003e\u003c/a\u003e Add compression header to message protocol docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10156\"\u003e#10156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9a270925546ed9d0ca0303fb5006edc86b705fd9\"\u003e\u003ccode\u003e9a27092\u003c/code\u003e\u003c/a\u003e docs: clarify after_return behavior for retried tasks (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10192\"\u003e#10192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6ee6230cd80ef6c3e7482e1f4cd970fbb0629b23\"\u003e\u003ccode\u003e6ee6230\u003c/code\u003e\u003c/a\u003e Fix#9722 friendly status errors for CLI (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10190\"\u003e#10190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a9a2d4cecaf0e58c401ad6f68f022afa19770ac2\"\u003e\u003ccode\u003ea9a2d4c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10186\"\u003e#10186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.6.2...v5.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 25.1.0 to 25.3.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 25.3.0\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eHTTP/2 ASGI Body Duplication\u003c/strong\u003e: Fix request body being received twice in HTTP/2\nASGI requests, causing JSON parsing errors with \u0026quot;Extra data\u0026quot; messages\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3558\"\u003e#3558\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eASGI Chunked EOF Handling\u003c/strong\u003e: Add \u003ccode\u003efinish()\u003c/code\u003e method to callback parser to handle\nchunked encoding edge case where connection closes before final CRLF after zero-chunk\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eHTTP/2 Documentation\u003c/strong\u003e: Fix \u003ccode\u003ehttp_protocols\u003c/code\u003e examples to use comma-separated string\ninstead of list syntax (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3561\"\u003e#3561\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eChunked Encoding\u003c/strong\u003e: Reject chunk extensions containing bare CR bytes per RFC 9112\n(\u003ca href=\"https://github.com/benoitc/gunicorn/discussions/3556\"\u003e#3556\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eRequest Line Limit\u003c/strong\u003e: Fix \u003ccode\u003e--limit-request-line 0\u003c/code\u003e to mean unlimited as documented,\ninstead of using default maximum. Works with both Python and fast C parser.\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3563\"\u003e#3563\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Parser Header Validation\u003c/strong\u003e: Add security checks per RFC 9110/9112:\n\u003cul\u003e\n\u003cli\u003eReject duplicate Content-Length headers\u003c/li\u003e\n\u003cli\u003eReject requests with both Content-Length and Transfer-Encoding\u003c/li\u003e\n\u003cli\u003eReject chunked transfer encoding in HTTP/1.0\u003c/li\u003e\n\u003cli\u003eReject stacked chunked encoding\u003c/li\u003e\n\u003cli\u003eValidate Transfer-Encoding values\u003c/li\u003e\n\u003cli\u003eStrict chunk size validation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFast HTTP Parser\u003c/strong\u003e: Update to gunicorn_h1c \u0026gt;= 0.6.3 for \u003ccode\u003easgi_headers\u003c/code\u003e property\nand \u003ccode\u003eInvalidChunkExtension\u003c/code\u003e validation for bare CR rejection\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eASGI PROXY Protocol\u003c/strong\u003e: Add PROXY protocol v1/v2 support to callback parser\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eDocker Images\u003c/strong\u003e: Update to Python 3.14\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGunicorn 25.2.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFast HTTP Parser (gunicorn_h1c 0.4.1)\u003c/strong\u003e: Integrate new exception types and limit parameters from gunicorn_h1c 0.4.1 for both WSGI and ASGI workers\n\u003cul\u003e\n\u003cli\u003eRequires gunicorn_h1c \u0026gt;= 0.4.1 for \u003ccode\u003ehttp_parser='fast'\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFalls back to Python parser in \u003ccode\u003eauto\u003c/code\u003e mode if version not met\u003c/li\u003e\n\u003cli\u003eProper HTTP status codes for limit errors (414, 431)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003euWSGI Async Workers\u003c/strong\u003e: Fix \u003ccode\u003eInvalidUWSGIHeader: incomplete header\u003c/code\u003e error when using gevent or gthread workers with uwsgi protocol behind nginx. (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3552\"\u003e#3552\u003c/a\u003e, [PR \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3554\"\u003e#3554\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3554\"\u003ebenoitc/gunicorn#3554\u003c/a\u003e))\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/9bce72cfc3985aba7e0c47bf3c00fa681b2847e4\"\u003e\u003ccode\u003e9bce72c\u003c/code\u003e\u003c/a\u003e Update changelog with missing 25.3.0 changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/2a15fdb93ab136e5776692d620852f481c89d610\"\u003e\u003ccode\u003e2a15fdb\u003c/code\u003e\u003c/a\u003e Fix pylint isinstance-second-argument-not-valid-type warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/8d08aaa2cbd38fdfa2ca6fb94094c47b9c16730a\"\u003e\u003ccode\u003e8d08aaa\u003c/code\u003e\u003c/a\u003e Fix --limit-request-line 0 to mean unlimited\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/d40a37454736e40916eb51e35895f1c22c0cd34a\"\u003e\u003ccode\u003ed40a374\u003c/code\u003e\u003c/a\u003e Fix pytest-asyncio configuration and treq_asgi hex escapes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/da8bd4850ac0f2d0df215390dad88392eb538d74\"\u003e\u003ccode\u003eda8bd48\u003c/code\u003e\u003c/a\u003e Remove unused AsyncRequest class\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/b00f125755ec3f509a3e82dc5568d9f2d8bddba7\"\u003e\u003ccode\u003eb00f125\u003c/code\u003e\u003c/a\u003e Integrate gunicorn_h1c 0.6.3 with InvalidChunkExtension support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/bdb2ebd5a4913fff1e92800f3763e4a879526d3e\"\u003e\u003ccode\u003ebdb2ebd\u003c/code\u003e\u003c/a\u003e Reject chunk extensions with bare CR bytes (RFC 9112)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7057fc9f89f0ce4d9ac01a12ea2f39768fb32be6\"\u003e\u003ccode\u003e7057fc9\u003c/code\u003e\u003c/a\u003e Fix http_protocols documentation to use string syntax\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/d43acb8fe0910b6669c163e2f4a439e464eab012\"\u003e\u003ccode\u003ed43acb8\u003c/code\u003e\u003c/a\u003e Update to gunicorn_h1c \u0026gt;= 0.6.2 for asgi_headers support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbd27e82a238cb1326336c6aa4b8ae058e2c9ff9\"\u003e\u003ccode\u003ecbd27e8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3559\"\u003e#3559\u003c/a\u003e from benleembruggen/fix/http2-asgi-body-duplication\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/25.1.0...25.3.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.54.0 to 2.56.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.56.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asgi) Add option to disable suppressing chained 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/5714\"\u003e#5714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Separate ignore lists for events/breadcrumbs and sentry logs by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5698\"\u003e#5698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSet exception info on streaming span when applicable 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/5683\"\u003e#5683\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003eAsyncStream.close()\u003c/code\u003e and \u003ccode\u003eAsyncMessageStream.close()\u003c/code\u003e to finish spans 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/5675\"\u003e#5675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003eStream.close()\u003c/code\u003e and \u003ccode\u003eMessageStream.close()\u003c/code\u003e to finish spans 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/5674\"\u003e#5674\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(starlette) Catch Jinja2Templates ImportError 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/5741\"\u003e#5741\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd note on AI PRs to CONTRIBUTING.md 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/5696\"\u003e#5696\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin GitHub Actions to full-length commit SHAs by \u003ca href=\"https://github.com/joshuarli\"\u003e\u003ccode\u003e@​joshuarli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5781\"\u003e#5781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e-latest\u003c/code\u003e alias for each integration test suite 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/5706\"\u003e#5706\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse date-based branch names for toxgen PRs 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/5704\"\u003e#5704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (03/19) 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/5703\"\u003e#5703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd client report tests for span streaming 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/5677\"\u003e#5677\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CHANGELOG.md 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/5685\"\u003e#5685\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tool description to execute_tool 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/5596\"\u003e#5596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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.56.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asgi) Add option to disable suppressing chained 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/5714\"\u003e#5714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Separate ignore lists for events/breadcrumbs and sentry logs by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5698\"\u003e#5698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSet exception info on streaming span when applicable 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/5683\"\u003e#5683\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003eAsyncStream.close()\u003c/code\u003e and \u003ccode\u003eAsyncMessageStream.close()\u003c/code\u003e to finish spans 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/5675\"\u003e#5675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003eStream.close()\u003c/code\u003e and \u003ccode\u003eMessageStream.close()\u003c/code\u003e to finish spans 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/5674\"\u003e#5674\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(starlette) Catch Jinja2Templates ImportError 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/5741\"\u003e#5741\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd note on AI PRs to CONTRIBUTING.md 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/5696\"\u003e#5696\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin GitHub Actions to full-length commit SHAs by \u003ca href=\"https://github.com/joshuarli\"\u003e\u003ccode\u003e@​joshuarli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5781\"\u003e#5781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e-latest\u003c/code\u003e alias for each integration test suite 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/5706\"\u003e#5706\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse date-based branch names for toxgen PRs 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/5704\"\u003e#5704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (03/19) 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/5703\"\u003e#5703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd client report tests for span streaming 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/5677\"\u003e#5677\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CHANGELOG.md 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/5685\"\u003e#5685\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/f5e93ad0956b981a4dd1ae43a85557efe6c633f9\"\u003e\u003ccode\u003ef5e93ad\u003c/code\u003e\u003c/a\u003e release: 2.56.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/4cd6752058f6d559f426a5c726a58ba06d0ebe44\"\u003e\u003ccode\u003e4cd6752\u003c/code\u003e\u003c/a\u003e chore: pin GitHub Actions to full-length commit SHAs (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5781\"\u003e#5781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/c3eb19f5fe5bcd61ba0dcc6fc5da88b090d013c1\"\u003e\u003ccode\u003ec3eb19f\u003c/code\u003e\u003c/a\u003e test: fix flaky threading test (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5700\"\u003e#5700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b2b42df8e64bca8b5627d8cbb1533e894a5db74a\"\u003e\u003ccode\u003eb2b42df\u003c/code\u003e\u003c/a\u003e fix(starlette): Catch Jinja2Templates ImportError (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5741\"\u003e#5741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/48dc5661dcfde7a588392caea82f8da5be0ed335\"\u003e\u003ccode\u003e48dc566\u003c/code\u003e\u003c/a\u003e feat(asgi): Add option to disable suppressing chained exceptions (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5714\"\u003e#5714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/f963475d641b9bef523f30fa1ece9ffd5a35279f\"\u003e\u003ccode\u003ef963475\u003c/code\u003e\u003c/a\u003e tests: Add \u003ccode\u003e-latest\u003c/code\u003e alias for each integration test suite (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5706\"\u003e#5706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/715fd2b05050784fd91c04691701c5c264132778\"\u003e\u003ccode\u003e715fd2b\u003c/code\u003e\u003c/a\u003e ci: Use date-based branch names for toxgen PRs (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5704\"\u003e#5704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/35fe9e46e367d526f0872c53bd3b210c565c1684\"\u003e\u003ccode\u003e35fe9e4\u003c/code\u003e\u003c/a\u003e ci: 🤖 Update test matrix with new releases (03/19) (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5703\"\u003e#5703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/8d56b30b6f1a4fff18dfd029c78ac8ec2aa2c98c\"\u003e\u003ccode\u003e8d56b30\u003c/code\u003e\u003c/a\u003e fix(anthropic): Set exception info on streaming span when applicable (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5683\"\u003e#5683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e103926e8cae85ac300890a3853bd30519720250\"\u003e\u003ccode\u003ee103926\u003c/code\u003e\u003c/a\u003e feat: Make ASGI support span first (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5680\"\u003e#5680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.54.0...2.56.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.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.4 to 0.15.8\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.8\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\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.8\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\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/c2a8815842f9dc5d24ec19385eae0f1a7188b0d9\"\u003e\u003ccode\u003ec2a8815\u003c/code\u003e\u003c/a\u003e Release 0.15.8 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24217\"\u003e#24217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d444d52e2b9cc8bc9a078c2bd4ff6ff993290209\"\u003e\u003ccode\u003ed444d52\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda expressions with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22633\"\u003e#22633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9622285ed0081fc688149f6efca87f127d9b18dd\"\u003e\u003ccode\u003e9622285\u003c/code\u003e\u003c/a\u003e [ty] Autocomplete arguments if in arguments node (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24167\"\u003e#24167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d81266252aaf0820346d55edbed79c4f25ba13d2\"\u003e\u003ccode\u003ed812662\u003c/code\u003e\u003c/a\u003e Use the \u003ccode\u003erelease\u003c/code\u003e environment in \u003ccode\u003epublish-docs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24214\"\u003e#24214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eda2355832f7a9c58aef6febd3e061dc9c87509a\"\u003e\u003ccode\u003eeda2355\u003c/code\u003e\u003c/a\u003e [ty] Show \u003ccode\u003eFinal\u003c/code\u003e source in final assignment diagnostic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24194\"\u003e#24194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/929eb5238c82bfadad4549ff526f02efc0163dd0\"\u003e\u003ccode\u003e929eb52\u003c/code\u003e\u003c/a\u003e [ty] Enforce Final attribute assignment rules for annotated and augmented wri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/34998be22ec3a77d398bbd55234ef8740f768329\"\u003e\u003ccode\u003e34998be\u003c/code\u003e\u003c/a\u003e [ty] Fix typo in comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24211\"\u003e#24211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/560aca0b2828ee2ff1b4bcc5c5ef1ef4ced229d2\"\u003e\u003ccode\u003e560aca0\u003c/code\u003e\u003c/a\u003e [ty] Minor simplifications to some benchmark code (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24209\"\u003e#24209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/683bae512d03d3727a7bcdbc5a0170dafa049583\"\u003e\u003ccode\u003e683bae5\u003c/code\u003e\u003c/a\u003e [ty] Track non-terminal-call constraints in global scope (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23245\"\u003e#23245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4704c2a4ff3dde2fd29324346720e9516b4fe387\"\u003e\u003ccode\u003e4704c2a\u003c/code\u003e\u003c/a\u003e [ty] Remove unnecessary intermediate collection in `StaticClassLiteral::field...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.8\"\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/neikow/urban-platform/pull/108","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/neikow%2Furban-platform/issues/108","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/108/packages"},{"uuid":"4155292003","node_id":"PR_kwDOMl9L2s7OI2bH","number":238,"state":"open","title":"build(deps): bump the python-packages-minor-patch group with 10 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-27T19:12:26.000Z","updated_at":"2026-03-27T19:18:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-packages-minor-patch","update_count":10,"packages":[{"name":"aio-pika","old_version":"9.6.1","new_version":"9.6.2","repository_url":"https://github.com/mosquito/aio-pika"},{"name":"llama-index-core","old_version":"0.14.16","new_version":"0.14.19","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-llms-openai","old_version":"0.6.26","new_version":"0.7.4"},{"name":"optuna","old_version":"4.7.0","new_version":"4.8.0","repository_url":"https://github.com/optuna/optuna"},{"name":"ipython","old_version":"9.11.0","new_version":"9.12.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.8","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"mkdocs-jupyter","old_version":"0.25.1","new_version":"0.26.1","repository_url":"https://github.com/danielfrg/mkdocs-jupyter"},{"name":"mkdocs-material","old_version":"9.7.5","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages-minor-patch group with 10 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aio-pika](https://github.com/mosquito/aio-pika) | `9.6.1` | `9.6.2` |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.16` | `0.14.19` |\n| llama-index-llms-openai | `0.6.26` | `0.7.4` |\n| [optuna](https://github.com/optuna/optuna) | `4.7.0` | `4.8.0` |\n| [ipython](https://github.com/ipython/ipython) | `9.11.0` | `9.12.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.8` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [mkdocs-jupyter](https://github.com/danielfrg/mkdocs-jupyter) | `0.25.1` | `0.26.1` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.5` | `9.7.6` |\n\nUpdates `aio-pika` from 9.6.1 to 9.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mosquito/aio-pika/releases\"\u003eaio-pika's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInclude license file in built distributions via project.license-files by \u003ca href=\"https://github.com/julia-thorn\"\u003e\u003ccode\u003e@​julia-thorn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aio-pika/pull/698\"\u003emosquito/aio-pika#698\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/julia-thorn\"\u003e\u003ccode\u003e@​julia-thorn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/mosquito/aio-pika/pull/698\"\u003emosquito/aio-pika#698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aio-pika/compare/9.6.1...9.6.2\"\u003ehttps://github.com/mosquito/aio-pika/compare/9.6.1...9.6.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aio-pika/commit/8136a8cf6fd04413c9e6ac1a789944ac4b1a47fd\"\u003e\u003ccode\u003e8136a8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aio-pika/issues/698\"\u003e#698\u003c/a\u003e from julia-thorn/julia-thorn-patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aio-pika/commit/31b82b102ac0133ff8322a3fc39db48409765055\"\u003e\u003ccode\u003e31b82b1\u003c/code\u003e\u003c/a\u003e Add license-files entry to pyproject.toml\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mosquito/aio-pika/compare/9.6.1...9.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-core` from 0.14.16 to 0.14.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.19\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-03-25]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.2.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 49 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21083\"\u003e#21083\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-argilla [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 3 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21069\"\u003e#21069\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.19]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: pass \u003ccode\u003edelete_from_docstore\u003c/code\u003e parameter in \u003ccode\u003eBaseIndex.delete_ref_doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20990\"\u003e#20990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): preserve CTE names during schema prefixing in SQLDatabase.run_sql (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21028\"\u003e#21028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): align sync retrieval dedup key with async (hash + ref_doc_id) (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21034\"\u003e#21034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): raise ValueError instead of returning string from structured_predict (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21036\"\u003e#21036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): remove incorrect per-node delete calls in index helpers (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21050\"\u003e#21050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 49 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21083\"\u003e#21083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 44 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21097\"\u003e#21097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenable llama-cloud\u0026gt;1.0 install (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21140\"\u003e#21140\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-fireworks [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etest(embeddings-fireworks): add test suite and fix docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20977\"\u003e#20977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.6.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 49 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21083\"\u003e#21083\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-indices-managed-llama-cloud [0.11.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: llama-cloud managed index and remove llamaparse reader (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21043\"\u003e#21043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenable llama-cloud\u0026gt;1.0 install (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21140\"\u003e#21140\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-azure-openai [0.5.3]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eazure openai responses support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21088\"\u003e#21088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix azure openai responses (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21099\"\u003e#21099\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.14.3]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003euse proper tool choice format in bedrock converse (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-cohere [0.8.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs(cohere): update first basic usage example to chat API (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21108\"\u003e#21108\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.19]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: pass \u003ccode\u003edelete_from_docstore\u003c/code\u003e parameter in \u003ccode\u003eBaseIndex.delete_ref_doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20990\"\u003e#20990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): preserve CTE names during schema prefixing in SQLDatabase.run_sql (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21028\"\u003e#21028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): align sync retrieval dedup key with async (hash + ref_doc_id) (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21034\"\u003e#21034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): raise ValueError instead of returning string from structured_predict (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21036\"\u003e#21036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): remove incorrect per-node delete calls in index helpers (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21050\"\u003e#21050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 49 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21083\"\u003e#21083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 44 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21097\"\u003e#21097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenable llama-cloud\u0026gt;1.0 install (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21140\"\u003e#21140\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-fireworks [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etest(embeddings-fireworks): add test suite and fix docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20977\"\u003e#20977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.6.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 49 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21083\"\u003e#21083\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-indices-managed-llama-cloud [0.11.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: llama-cloud managed index and remove llamaparse reader (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21043\"\u003e#21043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenable llama-cloud\u0026gt;1.0 install (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21140\"\u003e#21140\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-azure-openai [0.5.3]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eazure openai responses support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21088\"\u003e#21088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix azure openai responses (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21099\"\u003e#21099\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.14.3]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003euse proper tool choice format in bedrock converse (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-cohere [0.8.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs(cohere): update first basic usage example to chat API (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21108\"\u003e#21108\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-google-genai [0.9.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: gemini 3 default and temperature (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21060\"\u003e#21060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(google-genai): avoid mutating messages list in prepare_chat_params (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21141\"\u003e#21141\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-litellm [0.7.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom LLM provider in model kwargs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21095\"\u003e#21095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-minimax [0.1.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add MiniMax LLM provider integration with M2.7 default (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20955\"\u003e#20955\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6a3269261d0df1ea8cc5adab8e16ffda6b166d58\"\u003e\u003ccode\u003e6a32692\u003c/code\u003e\u003c/a\u003e Release 0.14.19 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21147\"\u003e#21147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/1b21484406c09e50a6bc2727d2f0d45373af6fed\"\u003e\u003ccode\u003e1b21484\u003c/code\u003e\u003c/a\u003e enable llama-cloud\u0026gt;1.0 install (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21140\"\u003e#21140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/465959b10fdbf776a2a9482f7d2cb1652eab7c77\"\u003e\u003ccode\u003e465959b\u003c/code\u003e\u003c/a\u003e fix(google-genai): avoid mutating messages list in prepare_chat_params (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21141\"\u003e#21141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c4e586301723d456c3999762c4a02e6a78f130b8\"\u003e\u003ccode\u003ec4e5863\u003c/code\u003e\u003c/a\u003e restrict new packages (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21139\"\u003e#21139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/ea76d2caee7433f0b598234c2154f12f463a5d6e\"\u003e\u003ccode\u003eea76d2c\u003c/code\u003e\u003c/a\u003e docs(cohere): update first basic usage example to chat API (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21108\"\u003e#21108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/58ee450dc074a663b69b9be6f37a972af65b9d15\"\u003e\u003ccode\u003e58ee450\u003c/code\u003e\u003c/a\u003e fix bedrock tests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21129\"\u003e#21129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c346327e51eaf26c84a495f8bee1f9ea81542bc7\"\u003e\u003ccode\u003ec346327\u003c/code\u003e\u003c/a\u003e fix azure openai responses (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21099\"\u003e#21099\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/2b74a92798d543ded57e7d392451ad0d64a74f8c\"\u003e\u003ccode\u003e2b74a92\u003c/code\u003e\u003c/a\u003e fix(ollama): pass custom headers to auto-created clients (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21091\"\u003e#21091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/edd23cc730feb78002c08ba8aade1628238c5428\"\u003e\u003ccode\u003eedd23cc\u003c/code\u003e\u003c/a\u003e chore(deps): bump tornado from 6.5.4 to 6.5.5 in /docs/api_reference in the p...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/2cc2e465637c0900e8fd5cdea4bc70d0d965922c\"\u003e\u003ccode\u003e2cc2e46\u003c/code\u003e\u003c/a\u003e feat(llms/openai): Add support for Mini and Nano variants of GPT 5.4 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21065\"\u003e#21065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.16...v0.14.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-llms-openai` from 0.6.26 to 0.7.4\n\nUpdates `optuna` from 4.7.0 to 4.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/optuna/optuna/releases\"\u003eoptuna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.8.0\u003c/h2\u003e\n\u003cp\u003eThis is the release note of \u003ca href=\"https://github.com/optuna/optuna/milestone/73?closed=1\"\u003ev4.8.0\u003c/a\u003e.\u003c/p\u003e\n\u003ch1\u003eHighlights\u003c/h1\u003e\n\u003ch2\u003eSupport for Constant Liar Strategy to GPSampler\u003c/h2\u003e\n\u003cp\u003eA constant liar strategy for efficient parallelization has been introduced to GPSampler by \u003ca href=\"https://github.com/sawa3030\"\u003e\u003ccode\u003e@​sawa3030\u003c/code\u003e\u003c/a\u003e. The figures (left: v4.7.0, right: v4.8.0) show that the overlap of search points has decreased, and a wider variety of solutions are being explored. The experiment uses \u003ccode\u003en_jobs = 10\u003c/code\u003e and \u003ccode\u003en_trials = 100\u003c/code\u003e. Currently, this feature supports single-objective and unconstrained optimization. Further extensions are coming in v4.9.0.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ev4.7.0\u003c/th\u003e\n\u003cth\u003ev4.8.0\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003c!-- raw HTML omitted --\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c!-- raw HTML omitted --\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eSHAP-like beeswarm plot visualization\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/yasumorishima\"\u003e\u003ccode\u003e@​yasumorishima\u003c/code\u003e\u003c/a\u003e introduces the new visualization to OptunaHub. Please refer to \u003ca href=\"https://hub.optuna.org/visualization/plot_beeswarm/\"\u003ehttps://hub.optuna.org/visualization/plot_beeswarm/\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch1\u003eNew Features\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Trackio Integration for Optuna (\u003ca href=\"https://redirect.github.com/optuna/optuna-integration/pull/259\"\u003eoptuna/optuna-integration#259\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ParagEkbote\"\u003e\u003ccode\u003e@​ParagEkbote\u003c/code\u003e\u003c/a\u003e!)\u003c/li\u003e\n\u003cli\u003eAdd constant liar strategy to \u003ccode\u003eGPSampler\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6430\"\u003e#6430\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eEnhancements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eValidate artifact_id in FileSystemArtifactStore to prevent path traversal (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6432\"\u003e#6432\u003c/a\u003e, thanks \u003ca href=\"https://github.com/RinZ27\"\u003e\u003ccode\u003e@​RinZ27\u003c/code\u003e\u003c/a\u003e!)\u003c/li\u003e\n\u003cli\u003efix: correct inverted warning message in pareto front plot (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6498\"\u003e#6498\u003c/a\u003e, thanks \u003ca href=\"https://github.com/aerosta\"\u003e\u003ccode\u003e@​aerosta\u003c/code\u003e\u003c/a\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug Fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix shared callback state in parallel OptunaSearchCV with LightGBM (\u003ca href=\"https://redirect.github.com/optuna/optuna-integration/pull/260\"\u003eoptuna/optuna-integration#260\u003c/a\u003e, thanks \u003ca href=\"https://github.com/Quant-Quasar\"\u003e\u003ccode\u003e@​Quant-Quasar\u003c/code\u003e\u003c/a\u003e!)\u003c/li\u003e\n\u003cli\u003eFix GPSampler crash when torch default device is CUDA (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6418\"\u003e#6418\u003c/a\u003e, thanks \u003ca href=\"https://github.com/VedantMadane\"\u003e\u003ccode\u003e@​VedantMadane\u003c/code\u003e\u003c/a\u003e!)\u003c/li\u003e\n\u003cli\u003eFix combination between \u003ccode\u003ePartialFixedSampler\u003c/code\u003e and \u003ccode\u003eTPESampler\u003c/code\u003e with group decomposed search space (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6428\"\u003e#6428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTPESampler\u003c/code\u003e with \u003ccode\u003emultivariate\u003c/code\u003e and \u003ccode\u003econstant_liar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6505\"\u003e#6505\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eDocumentation\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd documentation indicating that \u003ccode\u003eWilcoxonPruner\u003c/code\u003e requires \u003ccode\u003escipy\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6477\"\u003e#6477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove version \u0026amp; language selectors in the sidebar of docs (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6482\"\u003e#6482\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eExamples\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eApply black 26.1.0 (\u003ca href=\"https://redirect.github.com/optuna/optuna-examples/pull/348\"\u003eoptuna/optuna-examples#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove CI workflow for allennlp since no longer maintained (\u003ca href=\"https://redirect.github.com/optuna/optuna-examples/pull/351\"\u003eoptuna/optuna-examples#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce the frequency of scheduled CI triggers (\u003ca href=\"https://redirect.github.com/optuna/optuna-examples/pull/352\"\u003eoptuna/optuna-examples#352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove the scheduled trigger for \u003ccode\u003eaim\u003c/code\u003e CI (\u003ca href=\"https://redirect.github.com/optuna/optuna-examples/pull/353\"\u003eoptuna/optuna-examples#353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd constraint to \u003ccode\u003etransformers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna-examples/pull/355\"\u003eoptuna/optuna-examples#355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eTests\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/689c62dbfc14f3476c51c14fda2e4f818ed2ee30\"\u003e\u003ccode\u003e689c62d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6509\"\u003e#6509\u003c/a\u003e from y0z/feature/bump-up-release480\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/9e2e0658ee6205c69993cf4204fabe6353249441\"\u003e\u003ccode\u003e9e2e065\u003c/code\u003e\u003c/a\u003e Bump up version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/54fe633c042be32f9a8c90b440e81c05406448d2\"\u003e\u003ccode\u003e54fe633\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6507\"\u003e#6507\u003c/a\u003e from sateeshkumarb/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/8efb8b4ffd749a95610e537a597ccaabde2e97db\"\u003e\u003ccode\u003e8efb8b4\u003c/code\u003e\u003c/a\u003e Move imports used for typecheck under TYPE_CHCKING\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/c0fcd2e4bba33783aa5e61e94be29dfc2cdcac0a\"\u003e\u003ccode\u003ec0fcd2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6506\"\u003e#6506\u003c/a\u003e from acabellom/fix-fstring-file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/087cc9d85e431df96ac54bec1de992fac9260e80\"\u003e\u003ccode\u003e087cc9d\u003c/code\u003e\u003c/a\u003e Replace .format() with f-strings in 002_configurations.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/274f5b906accb795569550164f418dd3f40338c2\"\u003e\u003ccode\u003e274f5b9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6505\"\u003e#6505\u003c/a\u003e from not522/fix-multivariate-constant_liar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/ce882f6a4e1b0ecc328373cf989cbb16debdf1f6\"\u003e\u003ccode\u003ece882f6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6265\"\u003e#6265\u003c/a\u003e from not522/relative-use-cache\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/f9e546d71f3fe515ee0df37ffe49d83f1f294c58\"\u003e\u003ccode\u003ef9e546d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6498\"\u003e#6498\u003c/a\u003e from aerosta/fix/pareto-front-warning-message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/535215b3890f10b0cd96e6a22aaad58821769c3d\"\u003e\u003ccode\u003e535215b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6502\"\u003e#6502\u003c/a\u003e from nightcityblade/fix/issue-6029-patient-pruner\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/optuna/optuna/compare/v4.7.0...v4.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ipython` from 9.11.0 to 9.12.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/d9c6e314c3f31cb624cd443448e9094fdd49a1eb\"\u003e\u003ccode\u003ed9c6e31\u003c/code\u003e\u003c/a\u003e release 9.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/4c560d21ec7d6f72d2f150400fdab010790c81d7\"\u003e\u003ccode\u003e4c560d2\u003c/code\u003e\u003c/a\u003e security note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/bf954e4665168eeac39626164d76a646b683eaeb\"\u003e\u003ccode\u003ebf954e4\u003c/code\u003e\u003c/a\u003e Add release notes for 9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/bfbdaaf71efae1d70ededaa0c0375400d7692d29\"\u003e\u003ccode\u003ebfbdaaf\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'ghsa/windows-programdata'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/8aae9a39bd6b44d4a798540a8d4863f73593ff57\"\u003e\u003ccode\u003e8aae9a3\u003c/code\u003e\u003c/a\u003e strip ansi for comparison\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/e1aadc2c607df59f4d7313c60257ef9d43a46d7a\"\u003e\u003ccode\u003ee1aadc2\u003c/code\u003e\u003c/a\u003e fix test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/f48986a01e14eaed3504c474725e98700deae298\"\u003e\u003ccode\u003ef48986a\u003c/code\u003e\u003c/a\u003e fix-test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/d9b5285f5cb06aba35d4c3842cee7d2795afed7c\"\u003e\u003ccode\u003ed9b5285\u003c/code\u003e\u003c/a\u003e try to group tb frames\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/323552ea59fab72dcb36e4960caaffc18d3c5dae\"\u003e\u003ccode\u003e323552e\u003c/code\u003e\u003c/a\u003e Interleave fast and slow traceback path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/22cd33275bfccae3666f9f54d7f90fab924e517b\"\u003e\u003ccode\u003e22cd332\u003c/code\u003e\u003c/a\u003e Fix missing space in pdb chained exceptions warning message\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/ipython/compare/9.11.0...9.12.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.5 to 0.15.8\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.8\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\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.8\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\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/c2a8815842f9dc5d24ec19385eae0f1a7188b0d9\"\u003e\u003ccode\u003ec2a8815\u003c/code\u003e\u003c/a\u003e Release 0.15.8 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24217\"\u003e#24217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d444d52e2b9cc8bc9a078c2bd4ff6ff993290209\"\u003e\u003ccode\u003ed444d52\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda expressions with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22633\"\u003e#22633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9622285ed0081fc688149f6efca87f127d9b18dd\"\u003e\u003ccode\u003e9622285\u003c/code\u003e\u003c/a\u003e [ty] Autocomplete arguments if in arguments node (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24167\"\u003e#24167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d81266252aaf0820346d55edbed79c4f25ba13d2\"\u003e\u003ccode\u003ed812662\u003c/code\u003e\u003c/a\u003e Use the \u003ccode\u003erelease\u003c/code\u003e environment in \u003ccode\u003epublish-docs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24214\"\u003e#24214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eda2355832f7a9c58aef6febd3e061dc9c87509a\"\u003e\u003ccode\u003eeda2355\u003c/code\u003e\u003c/a\u003e [ty] Show \u003ccode\u003eFinal\u003c/code\u003e source in final assignment diagnostic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24194\"\u003e#24194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/929eb5238c82bfadad4549ff526f02efc0163dd0\"\u003e\u003ccode\u003e929eb52\u003c/code\u003e\u003c/a\u003e [ty] Enforce Final attribute assignment rules for annotated and augmented wri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/34998be22ec3a77d398bbd55234ef8740f768329\"\u003e\u003ccode\u003e34998be\u003c/code\u003e\u003c/a\u003e [ty] Fix typo in comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24211\"\u003e#24211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/560aca0b2828ee2ff1b4bcc5c5ef1ef4ced229d2\"\u003e\u003ccode\u003e560aca0\u003c/code\u003e\u003c/a\u003e [ty] Minor simplifications to some benchmark code (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24209\"\u003e#24209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/683bae512d03d3727a7bcdbc5a0170dafa049583\"\u003e\u003ccode\u003e683bae5\u003c/code\u003e\u003c/a\u003e [ty] Track non-terminal-call constraints in global scope (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23245\"\u003e#23245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4704c2a4ff3dde2fd29324346720e9516b4fe387\"\u003e\u003ccode\u003e4704c2a\u003c/code\u003e\u003c/a\u003e [ty] Remove unnecessary intermediate collection in `StaticClassLiteral::field...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.5...0.15.8\"\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.4 to 7.13.5\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.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2138: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2138\"\u003ecoveragepy/coveragepy#2138\u003c/a\u003e\n.. _issue 2141: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2141\"\u003ecoveragepy/coveragepy#2141\u003c/a\u003e\n.. _pull 2142: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2142\"\u003ecoveragepy/coveragepy#2142\u003c/a\u003e\n.. _issue 2145: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2145\"\u003ecoveragepy/coveragepy#2145\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-4:\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/c88da144eef8cf78424331e5cbbde3e002eef43f\"\u003e\u003ccode\u003ec88da14\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e2ac3e1ef644370101ff365acad3431d16076512\"\u003e\u003ccode\u003ee2ac3e1\u003c/code\u003e\u003c/a\u003e build: sample HTML shouldn't include the status.json file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/910f8f336541c2dcb4e9ec468144c7eb4a7779ac\"\u003e\u003ccode\u003e910f8f3\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3a4819c24d3d20cb2670b99141517812ffa3fab0\"\u003e\u003ccode\u003e3a4819c\u003c/code\u003e\u003c/a\u003e style: make workflows more uniform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2a53705f5fe588158b8a8d37ff3beee86388b9e4\"\u003e\u003ccode\u003e2a53705\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group across 1 directory with 4 updates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e7c878d201db819416b978150944d9a842d22b18\"\u003e\u003ccode\u003ee7c878d\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ab4db406a9c35acf977cf3ddb94a78d696b77bc5\"\u003e\u003ccode\u003eab4db40\u003c/code\u003e\u003c/a\u003e build: use --generate-hashes when pinning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a438753eef870441044cef588e29ce4b9a28adf1\"\u003e\u003ccode\u003ea438753\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/7b33457d2c6367dfd5a563239998b3980444e090\"\u003e\u003ccode\u003e7b33457\u003c/code\u003e\u003c/a\u003e refactor: some leftover pyupgrade 3.10 bits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2ff968db91a7cdafe6f6569ac7659a3a93a2da07\"\u003e\u003ccode\u003e2ff968d\u003c/code\u003e\u003c/a\u003e refactor: this type wasn't used anywhere\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.4...7.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-jupyter` from 0.25.1 to 0.26.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/blob/main/CHANGELOG.md\"\u003emkdocs-jupyter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003emkdocs-jupyter Change Log\u003c/h1\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/8e47143281d76c492a335d031a36efd6ef013d08\"\u003e\u003ccode\u003e8e47143\u003c/code\u003e\u003c/a\u003e Release 0.26.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/6420d554676941f9cfbde7e12e7eaa04d6b9b0c7\"\u003e\u003ccode\u003e6420d55\u003c/code\u003e\u003c/a\u003e Build assets on release CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/25a79b5fbd7a03be5398cd128b05d353dcf99646\"\u003e\u003ccode\u003e25a79b5\u003c/code\u003e\u003c/a\u003e Release 0.26.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/3b145c9e5d1f644c952ea11ec2f3331ceb0b6375\"\u003e\u003ccode\u003e3b145c9\u003c/code\u003e\u003c/a\u003e Add release workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/64f17aaf0229073791872d504b98306c97f01aa1\"\u003e\u003ccode\u003e64f17aa\u003c/code\u003e\u003c/a\u003e Add release workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/136080e4176ee358d46b990657fa8a463aaa2859\"\u003e\u003ccode\u003e136080e\u003c/code\u003e\u003c/a\u003e fix: backtick-stripping regex in nb2md() (\u003ca href=\"https://redirect.github.com/danielfrg/mkdocs-jupyter/issues/268\"\u003e#268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/2bac0a22ec111d633745efb319541a19c2f6a41f\"\u003e\u003ccode\u003e2bac0a2\u003c/code\u003e\u003c/a\u003e Cache added to avoid recompiling unchanged notebooks (\u003ca href=\"https://redirect.github.com/danielfrg/mkdocs-jupyter/issues/267\"\u003e#267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/98f3dbb917f1ffca8e13a58ac383de24b4ad2905\"\u003e\u003ccode\u003e98f3dbb\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003eipykernel\u0026gt;6,\u0026lt;8\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/danielfrg/mkdocs-jupyter/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/72367246e1b8c0c709fbc80242619f71294387ef\"\u003e\u003ccode\u003e7236724\u003c/code\u003e\u003c/a\u003e html escape source text for clipboard copy (\u003ca href=\"https://redirect.github.com/danielfrg/mkdocs-jupyter/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/7f977fdc0393f8ec5c279f4c6d5b5901eb0c2062\"\u003e\u003ccode\u003e7f977fd\u003c/code\u003e\u003c/a\u003e Check ignore patterns before reading files (\u003ca href=\"https://redirect.github.com/danielfrg/mkdocs-jupyter/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/compare/0.25.1...0.26.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.5 to 9.7.6\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.6\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\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\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\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/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.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\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\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/6c52ed6289b171a153875491f059a94819ec3e10\"\u003e\u003ccode\u003e6c52ed6\u003c/code\u003e\u003c/a\u003e Prepare 9.7.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/51d9b76636431814df924bcda27485b16023978b\"\u003e\u003ccode\u003e51d9b76\u003c/code\u003e\u003c/a\u003e Automatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6f9a48b4048650341a654d9757da57fc1e3e323d\"\u003e\u003ccode\u003e6f9a48b\u003c/code\u003e\u003c/a\u003e Updated links\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.7.5...9.7.6\"\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/plugboard-dev/plugboard/pull/238","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/plugboard-dev%2Fplugboard/issues/238","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/238/packages"},{"uuid":"4145478169","node_id":"PR_kwDOKP4Fis7NyLR7","number":574,"state":"open","title":"Bump pytest-env from 1.1.4 to 1.6.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-26T16:26:29.000Z","updated_at":"2026-04-14T22:59:12.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pytest-env","old_version":"1.1.4","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pytest-env](https://github.com/pytest-dev/pytest-env) from 1.1.4 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 build(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/192\"\u003epytest-dev/pytest-env#192\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.1.4...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pytest-env\u0026package-manager=uv\u0026previous-version=1.1.4\u0026new-version=1.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/allenai/olmo-api/pull/574","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/allenai%2Folmo-api/issues/574","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/574/packages"},{"uuid":"4124319886","node_id":"PR_kwDOMFeY887M1vyH","number":163,"state":"open","title":"python-deps(deps): bump the python-dependencies group across 1 directory with 23 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["dependabot[bot]"],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-23T23:38:13.000Z","updated_at":"2026-03-31T00:12:11.213Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"python-deps(deps): bump","group_name":"python-dependencies","update_count":23,"packages":[{"name":"black","old_version":"26.1.0","new_version":"26.3.1","repository_url":"https://github.com/psf/black"},{"name":"codespell","old_version":"2.4.1","new_version":"2.4.2","repository_url":"https://github.com/codespell-project/codespell"},{"name":"griffe","old_version":"2.0.0","new_version":"2.0.1","repository_url":"https://github.com/mkdocstrings/griffe"},{"name":"mkdocs-gen-files","old_version":"0.6.0","new_version":"0.6.1","repository_url":"https://github.com/oprypin/mkdocs-gen-files"},{"name":"mkdocs-literate-nav","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/oprypin/mkdocs-literate-nav"},{"name":"mkdocs-section-index","old_version":"0.3.10","new_version":"0.3.11","repository_url":"https://github.com/oprypin/mkdocs-section-index"},{"name":"mkdocstrings-python","old_version":"2.0.2","new_version":"2.0.3","repository_url":"https://github.com/mkdocstrings/python"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.3.2","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"chardet","old_version":"5.2.0","new_version":"7.2.0","repository_url":"https://github.com/chardet/chardet"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.6","repository_url":"https://github.com/jawah/charset_normalizer"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [pylint](https://github.com/pylint-dev/pylint), [black](https://github.com/psf/black), [codespell](https://github.com/codespell-project/codespell), [griffe](https://github.com/mkdocstrings/griffe), [mkdocs-gen-files](https://github.com/oprypin/mkdocs-gen-files), [mkdocs-literate-nav](https://github.com/oprypin/mkdocs-literate-nav), [mkdocs-section-index](https://github.com/oprypin/mkdocs-section-index), [mkdocstrings-python](https://github.com/mkdocstrings/python), [coverage](https://github.com/coveragepy/coveragepy), [pytest-cov](https://github.com/pytest-dev/pytest-cov), [pytest-env](https://github.com/pytest-dev/pytest-env), [certifi](https://github.com/certifi/python-certifi), [chardet](https://github.com/chardet/chardet), [charset-normalizer](https://github.com/jawah/charset_normalizer), [python-dotenv](https://github.com/theskumar/python-dotenv), [pytz](https://github.com/stub42/pytz), [setuptools](https://github.com/pypa/setuptools), griffecli, griffelib, [mkdocs-get-deps](https://github.com/mkdocs/get-deps), [platformdirs](https://github.com/tox-dev/platformdirs), [pydantic-core](https://github.com/pydantic/pydantic-core) and [typeguard](https://github.com/agronholm/typeguard) to permit the latest version.\nUpdates `pylint` to 4.0.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/88e1ab7545a4af4aea15c305a154c164a95ab842\"\u003e\u003ccode\u003e88e1ab7\u003c/code\u003e\u003c/a\u003e Bump pylint to 4.0.5, update changelog (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10860\"\u003e#10860\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/d96d489a1743d32b6bfa53fc0f69a4333209a146\"\u003e\u003ccode\u003ed96d489\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Relax isort version constraint to allow isort 8 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/0b08ccb014c265700f244a885bdcbdfa3a03de46\"\u003e\u003ccode\u003e0b08ccb\u003c/code\u003e\u003c/a\u003e Fix dynamic color mapping for \u0026quot;fail-on\u0026quot; messages when using multiple reporter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/154dba43276e8232a2e1cb8f90bfcc63886f3460\"\u003e\u003ccode\u003e154dba4\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix FP for \u003ccode\u003einvalid-name\u003c/code\u003e with \u003ccode\u003etyping.Final\u003c/code\u003e on...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/7b73bfdedf275935b9c5b43a6aeda5cc648b4847\"\u003e\u003ccode\u003e7b73bfd\u003c/code\u003e\u003c/a\u003e Disable unspecified-encoding for py-version above Python 3.15 (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10800\"\u003e#10800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/4cc98be8b7786dbc6692493fe9cedb8585af5518\"\u003e\u003ccode\u003e4cc98be\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix setting options for import order checker (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f0d30a27b510d69f846e3aaa0054cf0a1412923c\"\u003e\u003ccode\u003ef0d30a2\u003c/code\u003e\u003c/a\u003e Sync astroid version with requirements file again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/38bdf024648724e6aea017e62d3b57cb44097ec3\"\u003e\u003ccode\u003e38bdf02\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix \u003ccode\u003elogging-unsupported-format\u003c/code\u003e when logging ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f08c33ae3e691eed868e49c0d15270dc6e6a0d6c\"\u003e\u003ccode\u003ef08c33a\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Properly detect \u003ccode\u003eself.fail()\u003c/code\u003e as a terminating...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pylint-dev/pylint/compare/v4.0.4...v4.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 26.1.0 to 26.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.3.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't double-decode input, causing non-UTF-8 files to be corrupted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4964\"\u003e#4964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on standalone comment in lambda default arguments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4993\"\u003e#4993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve parentheses when \u003ccode\u003e# type: ignore\u003c/code\u003e comments would be merged with other\ncomments on the same line, preventing AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/4888\"\u003e#4888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eif\u003c/code\u003e guards in \u003ccode\u003ecase\u003c/code\u003e blocks were incorrectly split when the pattern had\na trailing comma (\u003ca href=\"https://redirect.github.com/psf/black/issues/4884\"\u003e#4884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003estring_processing\u003c/code\u003e crashing on unassigned long string literals with trailing\ncommas (one-item tuples) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4929\"\u003e#4929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSimplify implementation of the power operator \u0026quot;hugging\u0026quot; logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4918\"\u003e#4918\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix shutdown errors in PyInstaller builds on macOS by disabling multiprocessing in\nfrozen environments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4930\"\u003e#4930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce winloop for windows as an alternative to uvloop (\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecated function \u003ccode\u003euvloop.install()\u003c/code\u003e in favor of \u003ccode\u003euvloop.new_event_loop()\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003emaybe_install_uvloop\u003c/code\u003e function to \u003ccode\u003emaybe_use_uvloop\u003c/code\u003e to simplify loop\ninstallation and creation of either a uvloop/winloop evenloop or default eventloop\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.3.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't double-decode input, causing non-UTF-8 files to be corrupted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4964\"\u003e#4964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on standalone comment in lambda default arguments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4993\"\u003e#4993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve parentheses when \u003ccode\u003e# type: ignore\u003c/code\u003e comments would be merged with other\ncomments on the same line, preventing AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/4888\"\u003e#4888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eif\u003c/code\u003e guards in \u003ccode\u003ecase\u003c/code\u003e blocks were incorrectly split when the pattern had\na trailing comma (\u003ca href=\"https://redirect.github.com/psf/black/issues/4884\"\u003e#4884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003estring_processing\u003c/code\u003e crashing on unassigned long string literals with trailing\ncommas (one-item tuples) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4929\"\u003e#4929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSimplify implementation of the power operator \u0026quot;hugging\u0026quot; logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4918\"\u003e#4918\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix shutdown errors in PyInstaller builds on macOS by disabling multiprocessing in\nfrozen environments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4930\"\u003e#4930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce winloop for windows as an alternative to uvloop (\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecated function \u003ccode\u003euvloop.install()\u003c/code\u003e in favor of \u003ccode\u003euvloop.new_event_loop()\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003emaybe_install_uvloop\u003c/code\u003e function to \u003ccode\u003emaybe_use_uvloop\u003c/code\u003e to simplify loop\ninstallation and creation of either a uvloop/winloop eventloop or default eventloop\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c6755bb741b6481d6b3d3bb563c83fa060db96c9\"\u003e\u003ccode\u003ec6755bb\u003c/code\u003e\u003c/a\u003e Prepare release 26.3.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5046\"\u003e#5046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69973fd6950985fbeb1090d96da717dc4d8380b0\"\u003e\u003ccode\u003e69973fd\u003c/code\u003e\u003c/a\u003e Harden blackd browser-facing request handling (\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4937fe6cf241139ddbfc16b0bdbb5b422798909d\"\u003e\u003ccode\u003e4937fe6\u003c/code\u003e\u003c/a\u003e Fix some shenanigans with the cache file and IPython (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2e641d174469c505d5ae905e75d4c769597e681f\"\u003e\u003ccode\u003e2e641d1\u003c/code\u003e\u003c/a\u003e docs: remove outdated Black Playground references (\u003ca href=\"https://redirect.github.com/psf/black/issues/5044\"\u003e#5044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c014b22a2d5e0632587b47b81151658bddfa0b88\"\u003e\u003ccode\u003ec014b22\u003c/code\u003e\u003c/a\u003e Remove unused internal code (\u003ca href=\"https://redirect.github.com/psf/black/issues/5041\"\u003e#5041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0dae20b2d009f2f03de8696d06b0c947d3abafc9\"\u003e\u003ccode\u003e0dae20b\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5036\"\u003e#5036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c5c1cbddd92cecb554ac2a77a24139dd76831030\"\u003e\u003ccode\u003ec5c1cbd\u003c/code\u003e\u003c/a\u003e Minor release patches (\u003ca href=\"https://redirect.github.com/psf/black/issues/5035\"\u003e#5035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7e5a828c37d71b6a6666e28eed444816def6a8f4\"\u003e\u003ccode\u003e7e5a828\u003c/code\u003e\u003c/a\u003e docs: clarify relationship between Black style and PEP 8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5025\"\u003e#5025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69705deb8776e7c5e585668da106d1abe2cb8d77\"\u003e\u003ccode\u003e69705de\u003c/code\u003e\u003c/a\u003e docs: add clearer pyproject configuration guidance (\u003ca href=\"https://redirect.github.com/psf/black/issues/5026\"\u003e#5026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/35ea67920b7f6ac8e09be1c47278752b1e827f76\"\u003e\u003ccode\u003e35ea679\u003c/code\u003e\u003c/a\u003e Prepare release 26.3.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5032\"\u003e#5032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.1.0...26.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `codespell` from 2.4.1 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/codespell-project/codespell/releases\"\u003ecodespell's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compatibility with chardet 7+\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix and clarify cases in ignore patterns by \u003ca href=\"https://github.com/DanielYang59\"\u003e\u003ccode\u003e@​DanielYang59\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3583\"\u003ecodespell-project/codespell#3583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecodespell-private.yml: Do not codespell digital signature files by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3623\"\u003ecodespell-project/codespell#3623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3634\"\u003ecodespell-project/codespell#3634\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003enumbes-\u0026gt;numbers and numbesr-\u0026gt;numbers by \u003ca href=\"https://github.com/skshetry\"\u003e\u003ccode\u003e@​skshetry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3635\"\u003ecodespell-project/codespell#3635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd spelling corrections for disclose and variables. by \u003ca href=\"https://github.com/cfi-gb\"\u003e\u003ccode\u003e@​cfi-gb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3622\"\u003ecodespell-project/codespell#3622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd spelling correction for Vulnererability and variants. by \u003ca href=\"https://github.com/cfi-gb\"\u003e\u003ccode\u003e@​cfi-gb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3625\"\u003ecodespell-project/codespell#3625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove lets-\u0026gt;let's by \u003ca href=\"https://github.com/Piedone\"\u003e\u003ccode\u003e@​Piedone\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3633\"\u003ecodespell-project/codespell#3633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd corrections for \u0026quot;dictate\u0026quot; by \u003ca href=\"https://github.com/jdufresne\"\u003e\u003ccode\u003e@​jdufresne\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3636\"\u003ecodespell-project/codespell#3636\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd specicification (and pl) typo by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3639\"\u003ecodespell-project/codespell#3639\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;blueish\u0026quot; correction by \u003ca href=\"https://github.com/hadess\"\u003e\u003ccode\u003e@​hadess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3510\"\u003ecodespell-project/codespell#3510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u0026quot;lighting\u0026quot; as an option to fix \u0026quot;lighning\u0026quot; by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3648\"\u003ecodespell-project/codespell#3648\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert adding \u003ccode\u003elien\u003c/code\u003e to the rare dictionary  by \u003ca href=\"https://github.com/nikolaik\"\u003e\u003ccode\u003e@​nikolaik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3631\"\u003ecodespell-project/codespell#3631\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u0026quot;ane\u0026quot; could have been \u0026quot;one\u0026quot; by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3645\"\u003ecodespell-project/codespell#3645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd spelling correction for \u0026quot;priort\u0026quot; by \u003ca href=\"https://github.com/cfi-gb\"\u003e\u003ccode\u003e@​cfi-gb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3647\"\u003ecodespell-project/codespell#3647\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;fix\u0026quot; of \u0026quot;deques\u0026quot; - it is quite legit by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3649\"\u003ecodespell-project/codespell#3649\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSeveral new suggestions by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3621\"\u003ecodespell-project/codespell#3621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd proposal constraints to containts by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3652\"\u003ecodespell-project/codespell#3652\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditions dleay,infp,practive,utiliy by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3643\"\u003ecodespell-project/codespell#3643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd calncelled and its variations by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3650\"\u003ecodespell-project/codespell#3650\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse raw strings for regex by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3654\"\u003ecodespell-project/codespell#3654\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow multiple spaces before codespell:ignore by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3653\"\u003ecodespell-project/codespell#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded correction from \u003ccode\u003etimeour\u003c/code\u003e to \u003ccode\u003etimeout\u003c/code\u003e by \u003ca href=\"https://github.com/jamesbraza\"\u003e\u003ccode\u003e@​jamesbraza\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3656\"\u003ecodespell-project/codespell#3656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd typos found in various software projects by \u003ca href=\"https://github.com/luzpaz\"\u003e\u003ccode\u003e@​luzpaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3640\"\u003ecodespell-project/codespell#3640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3659\"\u003ecodespell-project/codespell#3659\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd codespell suggestions for enabke and friends by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3657\"\u003ecodespell-project/codespell#3657\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEND: add \u0026quot;queues\u0026quot; (plural from queue) as possible fix for ques by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3591\"\u003ecodespell-project/codespell#3591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eagreegate, lesda, realod, colouer by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3665\"\u003ecodespell-project/codespell#3665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pre-commit version in documentation by \u003ca href=\"https://github.com/prchoward\"\u003e\u003ccode\u003e@​prchoward\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3666\"\u003ecodespell-project/codespell#3666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: Rename CI file and run name by \u003ca href=\"https://github.com/larsoner\"\u003e\u003ccode\u003e@​larsoner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3667\"\u003ecodespell-project/codespell#3667\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epreoccuption-\u0026gt;preoccupation; occuption-\u0026gt;occupation by \u003ca href=\"https://github.com/TheGiraffe3\"\u003e\u003ccode\u003e@​TheGiraffe3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3668\"\u003ecodespell-project/codespell#3668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSuggestions for: checkto, diminsion, waitfor by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3670\"\u003ecodespell-project/codespell#3670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypos found in sigstore-python by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3664\"\u003ecodespell-project/codespell#3664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eusgin-\u0026gt;using by \u003ca href=\"https://github.com/ydah\"\u003e\u003ccode\u003e@​ydah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3672\"\u003ecodespell-project/codespell#3672\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd typos found in various software projects by \u003ca href=\"https://github.com/luzpaz\"\u003e\u003ccode\u003e@​luzpaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3669\"\u003ecodespell-project/codespell#3669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd coered -\u0026gt; coerced by \u003ca href=\"https://github.com/effigies\"\u003e\u003ccode\u003e@​effigies\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3680\"\u003ecodespell-project/codespell#3680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebackwward(s)-\u0026gt;backward(s), onwward(s)-\u0026gt;onward(s) by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3682\"\u003ecodespell-project/codespell#3682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3685\"\u003ecodespell-project/codespell#3685\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etelemetery-\u0026gt;telemetry by \u003ca href=\"https://github.com/august-soderberg\"\u003e\u003ccode\u003e@​august-soderberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3686\"\u003ecodespell-project/codespell#3686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd hexedacimal and similar typos by \u003ca href=\"https://github.com/Akuli\"\u003e\u003ccode\u003e@​Akuli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3692\"\u003ecodespell-project/codespell#3692\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rounted-\u0026gt;routed, rounded and friends by \u003ca href=\"https://github.com/peternewman\"\u003e\u003ccode\u003e@​peternewman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3693\"\u003ecodespell-project/codespell#3693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd symmectric and similar typos by \u003ca href=\"https://github.com/Akuli\"\u003e\u003ccode\u003e@​Akuli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3694\"\u003ecodespell-project/codespell#3694\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI on Windows: pip upgrade pip by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3698\"\u003ecodespell-project/codespell#3698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/2ccb47ff45ad361a21071a7eedda4c37e6ae8c5a\"\u003e\u003ccode\u003e2ccb47f\u003c/code\u003e\u003c/a\u003e Compat with chardet 7 (\u003ca href=\"https://redirect.github.com/codespell-project/codespell/issues/3886\"\u003e#3886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/4ec53bf6a3e510c64900d5ee838abd99d49b2910\"\u003e\u003ccode\u003e4ec53bf\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/2a4acba3f282f1b5ccb7ad8b57bc991810663a44\"\u003e\u003ccode\u003e2a4acba\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/be17cacc96a5ee3f014e048f5962cfdb7145e096\"\u003e\u003ccode\u003ebe17cac\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/04a071280d56148cab14249ccc8d4181c0066b3c\"\u003e\u003ccode\u003e04a0712\u003c/code\u003e\u003c/a\u003e Bump ruff (\u003ca href=\"https://redirect.github.com/codespell-project/codespell/issues/3879\"\u003e#3879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/583d8796d92eb58e15072db03e5b756be45f638a\"\u003e\u003ccode\u003e583d879\u003c/code\u003e\u003c/a\u003e avoide-\u0026gt;avoid, avoided, avoids,\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/1f59f34d7c6d1642fdb325d9dfa49cf9eb5f692a\"\u003e\u003ccode\u003e1f59f34\u003c/code\u003e\u003c/a\u003e Add correction for 'foudation' to 'foundation'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/e047fdafb8620b08a86349014487886bcd9c2205\"\u003e\u003ccode\u003ee047fda\u003c/code\u003e\u003c/a\u003e Add spelling correction for gather and variants.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/b5cd66de14b8f65b0f45fabbe1c89bd69ea60939\"\u003e\u003ccode\u003eb5cd66d\u003c/code\u003e\u003c/a\u003e respondant-\u0026gt;respondent\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/92125a3814fa6e86cd2055385916ce5186d3e5df\"\u003e\u003ccode\u003e92125a3\u003c/code\u003e\u003c/a\u003e Add detection of ivoice and variants.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/codespell-project/codespell/compare/v2.4.1...v2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `griffe` from 2.0.0 to 2.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/griffe/releases\"\u003egriffe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/releases/tag/2.0.1\"\u003e2.0.1\u003c/a\u003e - 2026-03-23\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/compare/2.0.0...2.0.1\"\u003eCompare with 2.0.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting type parameters through aliases (\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/75c1236078bdb38ccaf95330d3c635f8db3806b7\"\u003e75c1236\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/griffe/issues/449\"\u003eIssue-449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/griffe/blob/main/CHANGELOG.md\"\u003egriffe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/releases/tag/2.0.1\"\u003e2.0.1\u003c/a\u003e - 2026-03-23\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/compare/2.0.0...2.0.1\"\u003eCompare with 2.0.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting type parameters through aliases (\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/75c1236078bdb38ccaf95330d3c635f8db3806b7\"\u003e75c1236\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/griffe/issues/449\"\u003eIssue-449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/8df2c4061d01f8c7a3ded03d63505fef0052092a\"\u003e\u003ccode\u003e8df2c40\u003c/code\u003e\u003c/a\u003e chore: Prepare release 2.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/1236192681a9492133efd01bcd77d018fa3d4630\"\u003e\u003ccode\u003e1236192\u003c/code\u003e\u003c/a\u003e chore: Update ty comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/75c1236078bdb38ccaf95330d3c635f8db3806b7\"\u003e\u003ccode\u003e75c1236\u003c/code\u003e\u003c/a\u003e fix: Allow setting type parameters through aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/862a891818d7182204e213ef216b6b5f3c6dc106\"\u003e\u003ccode\u003e862a891\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/2666aaabe9b93f70c3dcde46ac284251a065a5c1\"\u003e\u003ccode\u003e2666aaa\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/e30c32143149ab124f3ade14523201b80a9cbfd9\"\u003e\u003ccode\u003ee30c321\u003c/code\u003e\u003c/a\u003e style: Format code for Python 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/051394aa21cd0884a7480a6892c07d62bf0ca451\"\u003e\u003ccode\u003e051394a\u003c/code\u003e\u003c/a\u003e chore: Add back title to type-check duty\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/5f662d4658a63ebf8ab25fe124747b4725f34617\"\u003e\u003ccode\u003e5f662d4\u003c/code\u003e\u003c/a\u003e ci: Update Ruff's config (Python target, output format)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/19775450e72c2c6291e0e88ebbd7c0de1d3c99d6\"\u003e\u003ccode\u003e1977545\u003c/code\u003e\u003c/a\u003e ci: Type-check with ty\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/8efecdc98a92b3f4d30d8af0fd93ce4acf90d76d\"\u003e\u003ccode\u003e8efecdc\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mkdocstrings/griffe/compare/2.0.0...2.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-gen-files` from 0.6.0 to 0.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/releases\"\u003emkdocs-gen-files's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/pull/42\"\u003eoprypin/mkdocs-gen-files#42\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.1\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.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/oprypin/mkdocs-gen-files/commit/05c38bb46caa8d6550da54e291bddc59c4610d07\"\u003e\u003ccode\u003e05c38bb\u003c/code\u003e\u003c/a\u003e v0.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/d2850806e39047a7ad4ca7c415adb56d3a26b2cc\"\u003e\u003ccode\u003ed285080\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/issues/42\"\u003e#42\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/dcc896d45a2c31ddbf8c78317020647631ba38cd\"\u003e\u003ccode\u003edcc896d\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-literate-nav` from 0.6.2 to 0.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/releases\"\u003emkdocs-literate-nav's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/pull/39\"\u003eoprypin/mkdocs-literate-nav#39\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\u003ehttps://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\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/oprypin/mkdocs-literate-nav/commit/b91268c263f61e38a7e27f77ccf38ec287e0c0b5\"\u003e\u003ccode\u003eb91268c\u003c/code\u003e\u003c/a\u003e v0.6.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/cee9ec49a1523036081378a39bda9fa014432526\"\u003e\u003ccode\u003ecee9ec4\u003c/code\u003e\u003c/a\u003e Exclude properdocs when testing minimal dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/ea523f5864f59fb7939f84cd4400df67280ad52c\"\u003e\u003ccode\u003eea523f5\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/issues/39\"\u003e#39\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/258b15a15a3e25cedc816d0a5a971acfdb86541e\"\u003e\u003ccode\u003e258b15a\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-section-index` from 0.3.10 to 0.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/releases\"\u003emkdocs-section-index's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/pull/27\"\u003eoprypin/mkdocs-section-index#27\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ehttps://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\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/oprypin/mkdocs-section-index/commit/a8235f6f8eb5927b966a3aaea8afe5fa161ecece\"\u003e\u003ccode\u003ea8235f6\u003c/code\u003e\u003c/a\u003e v0.3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/ac66dfda53834d79ce8e0af6f340dddd7cde2bf9\"\u003e\u003ccode\u003eac66dfd\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/issues/27\"\u003e#27\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/32866cd83993ee3eefbac0fcc13911692796d8f6\"\u003e\u003ccode\u003e32866cd\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocstrings-python` from 2.0.2 to 2.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/python/releases\"\u003emkdocstrings-python's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.0.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.3\"\u003e2.0.3\u003c/a\u003e - 2026-02-20\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.2...2.0.3\"\u003eCompare with 2.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDepend on griffelib instead of griffe (\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e770a5f6\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/python/blob/main/CHANGELOG.md\"\u003emkdocstrings-python's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.3\"\u003e2.0.3\u003c/a\u003e - 2026-02-20\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.2...2.0.3\"\u003eCompare with 2.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDepend on griffelib instead of griffe (\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e770a5f6\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/a0b99c5ed6ac44b627e2e57375e474e0939ea02e\"\u003e\u003ccode\u003ea0b99c5\u003c/code\u003e\u003c/a\u003e chore: Prepare release 2.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e\u003ccode\u003e770a5f6\u003c/code\u003e\u003c/a\u003e build: Depend on griffelib instead of griffe\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/bf8caaf76efcfe3572b40f4129117ed32bdc2ee7\"\u003e\u003ccode\u003ebf8caaf\u003c/code\u003e\u003c/a\u003e Merge branch 'main' of github.com:mkdocstrings/python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/95f58aa56a78df160fc66892815cb4c49d291044\"\u003e\u003ccode\u003e95f58aa\u003c/code\u003e\u003c/a\u003e ci: Minor lint fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/186d6cfac78dbc96bcb753473ceb68db5fa46f73\"\u003e\u003ccode\u003e186d6cf\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.2...2.0.3\"\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.4 to 7.13.5\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.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2138: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2138\"\u003ecoveragepy/coveragepy#2138\u003c/a\u003e\n.. _issue 2141: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2141\"\u003ecoveragepy/coveragepy#2141\u003c/a\u003e\n.. _pull 2142: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2142\"\u003ecoveragepy/coveragepy#2142\u003c/a\u003e\n.. _issue 2145: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2145\"\u003ecoveragepy/coveragepy#2145\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-4:\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/c88da144eef8cf78424331e5cbbde3e002eef43f\"\u003e\u003ccode\u003ec88da14\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e2ac3e1ef644370101ff365acad3431d16076512\"\u003e\u003ccode\u003ee2ac3e1\u003c/code\u003e\u003c/a\u003e build: sample HTML shouldn't include the status.json file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/910f8f336541c2dcb4e9ec468144c7eb4a7779ac\"\u003e\u003ccode\u003e910f8f3\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3a4819c24d3d20cb2670b99141517812ffa3fab0\"\u003e\u003ccode\u003e3a4819c\u003c/code\u003e\u003c/a\u003e style: make workflows more uniform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2a53705f5fe588158b8a8d37ff3beee86388b9e4\"\u003e\u003ccode\u003e2a53705\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group across 1 directory with 4 updates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e7c878d201db819416b978150944d9a842d22b18\"\u003e\u003ccode\u003ee7c878d\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ab4db406a9c35acf977cf3ddb94a78d696b77bc5\"\u003e\u003ccode\u003eab4db40\u003c/code\u003e\u003c/a\u003e build: use --generate-hashes when pinning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a438753eef870441044cef588e29ce4b9a28adf1\"\u003e\u003ccode\u003ea438753\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/7b33457d2c6367dfd5a563239998b3980444e090\"\u003e\u003ccode\u003e7b33457\u003c/code\u003e\u003c/a\u003e refactor: some leftover pyupgrade 3.10 bits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2ff968db91a7cdafe6f6569ac7659a3a93a2da07\"\u003e\u003ccode\u003e2ff968d\u003c/code\u003e\u003c/a\u003e refactor: this type wasn't used anywhere\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.4...7.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.3.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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.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 `certifi` from 2026.1.4 to 2026.2.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/7f5ade5d8da615fd366e8de6a668271251c45d34\"\u003e\u003ccode\u003e7f5ade5\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.1.0 to 6.2.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/392\"\u003e#392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.01.04...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 5.2.0 to 7.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003echardet 7.2.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003einclude_encodings\u003c/code\u003e and \u003ccode\u003eexclude_encodings\u003c/code\u003e parameters to \u003ccode\u003edetect()\u003c/code\u003e, \u003ccode\u003edetect_all()\u003c/code\u003e, and \u003ccode\u003eUniversalDetector\u003c/code\u003e — restrict or exclude specific encodings from the candidate set, with corresponding \u003ccode\u003e-i\u003c/code\u003e/\u003ccode\u003e--include-encodings\u003c/code\u003e and \u003ccode\u003e-x\u003c/code\u003e/\u003ccode\u003e--exclude-encodings\u003c/code\u003e CLI flags (\u003ca href=\"https://redirect.github.com/chardet/chardet/pull/343\"\u003e#343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eno_match_encoding\u003c/code\u003e (default \u003ccode\u003e\u0026quot;cp1252\u0026quot;\u003c/code\u003e) and \u003ccode\u003eempty_input_encoding\u003c/code\u003e (default \u003ccode\u003e\u0026quot;utf-8\u0026quot;\u003c/code\u003e) parameters — control which encoding is returned when no candidate survives the pipeline or the input is empty, with corresponding CLI flags (\u003ca href=\"https://redirect.github.com/chardet/chardet/pull/343\"\u003e#343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e-l\u003c/code\u003e/\u003ccode\u003e--language\u003c/code\u003e flag to \u003ccode\u003echardetect\u003c/code\u003e CLI — shows the detected language (ISO 639-1 code and English name) alongside the encoding (\u003ca href=\"https://redirect.github.com/chardet/chardet/pull/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed null-separated ASCII data being misdetected as UTF-16-BE (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/346\"\u003e#346\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/chardet/chardet/pull/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://chardet.readthedocs.io/en/latest/changelog.html\"\u003ehttps://chardet.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003echardet 7.1.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded PEP 263 encoding declaration detection — \u003ccode\u003e# -*- coding: ... -*-\u003c/code\u003e and \u003ccode\u003e# coding=...\u003c/code\u003e declarations on lines 1–2 of Python source files are now recognized with confidence 0.95 (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/249\"\u003e#249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echardet.universaldetector\u003c/code\u003e backward-compatibility stub so that \u003ccode\u003efrom chardet.universaldetector import UniversalDetector\u003c/code\u003e works with a deprecation warning (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed false UTF-7 detection of ASCII text containing \u003ccode\u003e++\u003c/code\u003e or \u003ccode\u003e+word\u003c/code\u003e patterns (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed 0.5s startup cost on first \u003ccode\u003edetect()\u003c/code\u003e call — model norms are now computed during loading instead of lazily iterating 21M entries (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed undocumented encoding name changes between chardet 5.x and 7.0 — \u003ccode\u003edetect()\u003c/code\u003e now returns chardet 5.x-compatible names by default (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved ISO-2022-JP family detection — recognizes ESC sequences for ISO-2022-JP-2004 (JIS X 0213) and ISO-2022-JP-EXT (JIS X 0201 Kana)\u003c/li\u003e\n\u003cli\u003eFixed silent truncation of corrupt model data (\u003ccode\u003eiter_unpack\u003c/code\u003e yielded fewer tuples instead of raising)\u003c/li\u003e\n\u003cli\u003eFixed incorrect date in LICENSE\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e5.5x faster first-detect time (~0.42s → ~0.075s) by computing model norms as a side-product of \u003ccode\u003eload_models()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e~40% faster model parsing via \u003ccode\u003estruct.iter_unpack\u003c/code\u003e for bulk entry extraction (eliminates ~305K individual \u003ccode\u003eunpack\u003c/code\u003e calls)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew API parameters\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003ecompat_names\u003c/code\u003e parameter (default \u003ccode\u003eTrue\u003c/code\u003e) to \u003ccode\u003edetect()\u003c/code\u003e, \u003ccode\u003edetect_all()\u003c/code\u003e, and \u003ccode\u003eUniversalDetector\u003c/code\u003e — set to \u003ccode\u003eFalse\u003c/code\u003e to get raw Python codec names instead of chardet 5.x/6.x compatible display names\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eprefer_superset\u003c/code\u003e parameter (default \u003ccode\u003eFalse\u003c/code\u003e) — remaps legacy ISO/subset encodings to their modern Windows/CP superset equivalents (e.g., ASCII → Windows-1252, ISO-8859-1 → Windows-1252). \u003cstrong\u003eThis will default to \u003ccode\u003eTrue\u003c/code\u003e in the next major version (8.0).\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated \u003ccode\u003eshould_rename_legacy\u003c/code\u003e in favor of \u003ccode\u003eprefer_superset\u003c/code\u003e — a deprecation warning is emitted when used\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitched internal canonical encoding names to Python codec names (e.g., \u003ccode\u003e\u0026quot;utf-8\u0026quot;\u003c/code\u003e instead of \u003ccode\u003e\u0026quot;UTF-8\u0026quot;\u003c/code\u003e), with \u003ccode\u003ecompat_names\u003c/code\u003e controlling the public output format\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003elookup_encoding()\u003c/code\u003e to \u003ccode\u003eregistry\u003c/code\u003e for case-insensitive resolution of arbitrary encoding name input to canonical names\u003c/li\u003e\n\u003cli\u003eAchieved 100% line coverage across all source modules (+31 tests)\u003c/li\u003e\n\u003cli\u003eUpdated benchmark numbers: 98.2% encoding accuracy, 95.2% language accuracy on 2,510 test files\u003c/li\u003e\n\u003cli\u003ePinned test-data cloning to chardet release version tags for reproducible builds\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://chardet.readthedocs.io/en/latest/changelog.html\"\u003ehttps://chardet.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.0.1\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/chardet/chardet/blob/main/docs/changelog.rst\"\u003echardet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.2.0 (2026-03-17)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeatures:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003einclude_encodings\u003c/code\u003e and \u003ccode\u003eexclude_encodings\u003c/code\u003e parameters to\n:func:\u003ccode\u003e~chardet.detect\u003c/code\u003e, :func:\u003ccode\u003e~chardet.detect_all\u003c/code\u003e, and\n:class:\u003ccode\u003e~chardet.UniversalDetector\u003c/code\u003e — restrict or exclude specific\nencodings from the candidate set, with corresponding\n\u003ccode\u003e-i\u003c/code\u003e/\u003ccode\u003e--include-encodings\u003c/code\u003e and \u003ccode\u003e-x\u003c/code\u003e/\u003ccode\u003e--exclude-encodings\u003c/code\u003e\nCLI flags\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#343](https://github.com/chardet/chardet/issues/343) \u0026lt;https://github.com/chardet/chardet/pull/343\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eno_match_encoding\u003c/code\u003e (default \u003ccode\u003e\u0026quot;cp1252\u0026quot;\u003c/code\u003e) and\n\u003ccode\u003eempty_input_encoding\u003c/code\u003e (default \u003ccode\u003e\u0026quot;utf-8\u0026quot;\u003c/code\u003e) parameters — control\nwhich encoding is returned when no candidate survives the pipeline or\nthe input is empty, with corresponding CLI flags\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#343](https://github.com/chardet/chardet/issues/343) \u0026lt;https://github.com/chardet/chardet/pull/343\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e-l\u003c/code\u003e/\u003ccode\u003e--language\u003c/code\u003e flag to \u003ccode\u003echardetect\u003c/code\u003e CLI — shows the\ndetected language (ISO 639-1 code and English name) alongside the encoding\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#342](https://github.com/chardet/chardet/issues/342) \u0026lt;https://github.com/chardet/chardet/pull/342\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-03-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeatures:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded PEP 263 encoding declaration detection — \u003ccode\u003e# -*- coding: ... -*-\u003c/code\u003e\nand \u003ccode\u003e# coding=...\u003c/code\u003e declarations on lines 1–2 of Python source files are\nnow recognized with confidence 0.95\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#249](https://github.com/chardet/chardet/issues/249) \u0026lt;https://github.com/chardet/chardet/issues/249\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echardet.universaldetector\u003c/code\u003e backward-compatibility stub so that\n\u003ccode\u003efrom chardet.universaldetector import UniversalDetector\u003c/code\u003e works with a\ndeprecation warning\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#341](https://github.com/chardet/chardet/issues/341) \u0026lt;https://github.com/chardet/chardet/issues/341\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed false UTF-7 detection of ASCII text containing \u003ccode\u003e++\u003c/code\u003e or \u003ccode\u003e+word\u003c/code\u003e\npatterns\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#332](https://github.com/chardet/chardet/issues/332) \u0026lt;https://github.com/chardet/chardet/issues/332\u0026gt;\u003c/code\u003e\u003c/em\u003e,\n\u003ccode\u003e[#335](https://github.com/chardet/chardet/issues/335) \u0026lt;https://github.com/chardet/chardet/pull/335\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed 0.5s startup cost on first \u003ccode\u003edetect()\u003c/code\u003e call — model norms are now\ncomputed during loading instead of lazily iterating 21M entries\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/884996a2eaff06d41e829c8893525f26a8780791\"\u003e\u003ccode\u003e884996a\u003c/code\u003e\u003c/a\u003e docs: set 7.2.0 release date to 2026-03-17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/64361f8f40f45b6d8ae3365483e906c5a33c64a7\"\u003e\u003ccode\u003e64361f8\u003c/code\u003e\u003c/a\u003e docs: add CLI examples for --no-match-encoding and --empty-input-encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/89a9a4cb0cd031c63889671f708799938afe6845\"\u003e\u003ccode\u003e89a9a4c\u003c/code\u003e\u003c/a\u003e Fix null-separated ASCII misdetected as UTF-16-BE (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/a98f09761394280f649521092df9e001dafb3506\"\u003e\u003ccode\u003ea98f097\u003c/code\u003e\u003c/a\u003e docs: add example output to all CLI commands for consistency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/d2f4ac2c8bf7f27d1ee6675a4ce03a157ecc8fce\"\u003e\u003ccode\u003ed2f4ac2\u003c/code\u003e\u003c/a\u003e docs: document 7.2.0 features (encoding filters, --language CLI flag)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/575fa96712a3c3e465a16e814e66a8137cc17531\"\u003e\u003ccode\u003e575fa96\u003c/code\u003e\u003c/a\u003e test: add include_encodings accuracy preservation tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/66e21fcfd03e584562bbc50c760141ea4ef0a351\"\u003e\u003ccode\u003e66e21fc\u003c/code\u003e\u003c/a\u003e fix: strengthen weak tests and remove duplicates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/e1428c3158ce7b9f74b8f1a41f9e82a3fa52b311\"\u003e\u003ccode\u003ee1428c3\u003c/code\u003e\u003c/a\u003e Add include/exclude encoding filters (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/343\"\u003e#343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/63e90b5fb6ad0b32ff76351f0d4bee25d64f53a4\"\u003e\u003ccode\u003e63e90b5\u003c/code\u003e\u003c/a\u003e fix: pass --no-binary chardet for pinned versions with --pure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/2fe89933d479fc9153520b12390858ceceaa43c6\"\u003e\u003ccode\u003e2fe8993\u003c/code\u003e\u003c/a\u003e fix: handle missing ISO_TO_LANGUAGE in older chardet versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chardet/chardet/compare/5.2.0...7.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.4 to 3.4.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/tektronix/tm_data_types/pull/163","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tektronix%2Ftm_data_types/issues/163","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/163/packages"},{"uuid":"4120439879","node_id":"PR_kwDOMzAhdc7MqpNt","number":279,"state":"open","title":"Bump the pip group across 1 directory with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-23T12:21:14.000Z","updated_at":"2026-03-23T12:30:46.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":18,"packages":[{"name":"black","old_version":"26.1.0","new_version":"26.3.1","repository_url":"https://github.com/psf/black"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"faker","old_version":"40.5.1","new_version":"40.11.0","repository_url":"https://github.com/joke2k/faker"},{"name":"faker-file","old_version":"0.18.4","new_version":"0.19.1"},{"name":"boto3","old_version":"1.35.99","new_version":"1.42.73","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.35.99","new_version":"1.42.73","repository_url":"https://github.com/boto/botocore"},{"name":"fastapi","old_version":"0.133.1","new_version":"0.135.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastapi-cloud-cli","old_version":"0.14.0","new_version":"0.15.0","repository_url":"https://github.com/fastapilabs/fastapi-cloud-cli"},{"name":"fastar","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/DoctorJohn/fastar"},{"name":"pydantic-extra-types","old_version":"2.11.0","new_version":"2.11.1","repository_url":"https://github.com/pydantic/pydantic-extra-types"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.42.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"s3transfer","old_version":"0.10.4","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"sentry-sdk","old_version":"2.53.0","new_version":"2.55.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"starlette","old_version":"0.52.1","new_version":"1.0.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.42.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 18 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [black](https://github.com/psf/black) | `26.1.0` | `26.3.1` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [faker](https://github.com/joke2k/faker) | `40.5.1` | `40.11.0` |\n| [faker-file[docx,images,pdf]](https://github.com/barseghyanartur/faker-file) | `0.18.4` | `0.19.1` |\n| [boto3](https://github.com/boto/boto3) | `1.35.99` | `1.42.73` |\n| [botocore](https://github.com/boto/botocore) | `1.35.99` | `1.42.73` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.133.1` | `0.135.1` |\n| [fastapi-cloud-cli](https://github.com/fastapilabs/fastapi-cloud-cli) | `0.14.0` | `0.15.0` |\n| [fastar](https://github.com/DoctorJohn/fastar) | `0.8.0` | `0.9.0` |\n| [pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | `2.11.0` | `2.11.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.41.5` | `2.42.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.12.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.10.4` | `0.16.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.53.0` | `2.55.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.52.1` | `1.0.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.41.0` | `0.42.0` |\n\n\nUpdates `black` from 26.1.0 to 26.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.3.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't double-decode input, causing non-UTF-8 files to be corrupted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4964\"\u003e#4964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on standalone comment in lambda default arguments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4993\"\u003e#4993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve parentheses when \u003ccode\u003e# type: ignore\u003c/code\u003e comments would be merged with other\ncomments on the same line, preventing AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/4888\"\u003e#4888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eif\u003c/code\u003e guards in \u003ccode\u003ecase\u003c/code\u003e blocks were incorrectly split when the pattern had\na trailing comma (\u003ca href=\"https://redirect.github.com/psf/black/issues/4884\"\u003e#4884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003estring_processing\u003c/code\u003e crashing on unassigned long string literals with trailing\ncommas (one-item tuples) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4929\"\u003e#4929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSimplify implementation of the power operator \u0026quot;hugging\u0026quot; logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4918\"\u003e#4918\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix shutdown errors in PyInstaller builds on macOS by disabling multiprocessing in\nfrozen environments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4930\"\u003e#4930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce winloop for windows as an alternative to uvloop (\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecated function \u003ccode\u003euvloop.install()\u003c/code\u003e in favor of \u003ccode\u003euvloop.new_event_loop()\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003emaybe_install_uvloop\u003c/code\u003e function to \u003ccode\u003emaybe_use_uvloop\u003c/code\u003e to simplify loop\ninstallation and creation of either a uvloop/winloop evenloop or default eventloop\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.3.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't double-decode input, causing non-UTF-8 files to be corrupted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4964\"\u003e#4964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on standalone comment in lambda default arguments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4993\"\u003e#4993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve parentheses when \u003ccode\u003e# type: ignore\u003c/code\u003e comments would be merged with other\ncomments on the same line, preventing AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/4888\"\u003e#4888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eif\u003c/code\u003e guards in \u003ccode\u003ecase\u003c/code\u003e blocks were incorrectly split when the pattern had\na trailing comma (\u003ca href=\"https://redirect.github.com/psf/black/issues/4884\"\u003e#4884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003estring_processing\u003c/code\u003e crashing on unassigned long string literals with trailing\ncommas (one-item tuples) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4929\"\u003e#4929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSimplify implementation of the power operator \u0026quot;hugging\u0026quot; logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4918\"\u003e#4918\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix shutdown errors in PyInstaller builds on macOS by disabling multiprocessing in\nfrozen environments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4930\"\u003e#4930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce winloop for windows as an alternative to uvloop (\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecated function \u003ccode\u003euvloop.install()\u003c/code\u003e in favor of \u003ccode\u003euvloop.new_event_loop()\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003emaybe_install_uvloop\u003c/code\u003e function to \u003ccode\u003emaybe_use_uvloop\u003c/code\u003e to simplify loop\ninstallation and creation of either a uvloop/winloop eventloop or default eventloop\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c6755bb741b6481d6b3d3bb563c83fa060db96c9\"\u003e\u003ccode\u003ec6755bb\u003c/code\u003e\u003c/a\u003e Prepare release 26.3.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5046\"\u003e#5046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69973fd6950985fbeb1090d96da717dc4d8380b0\"\u003e\u003ccode\u003e69973fd\u003c/code\u003e\u003c/a\u003e Harden blackd browser-facing request handling (\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4937fe6cf241139ddbfc16b0bdbb5b422798909d\"\u003e\u003ccode\u003e4937fe6\u003c/code\u003e\u003c/a\u003e Fix some shenanigans with the cache file and IPython (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2e641d174469c505d5ae905e75d4c769597e681f\"\u003e\u003ccode\u003e2e641d1\u003c/code\u003e\u003c/a\u003e docs: remove outdated Black Playground references (\u003ca href=\"https://redirect.github.com/psf/black/issues/5044\"\u003e#5044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c014b22a2d5e0632587b47b81151658bddfa0b88\"\u003e\u003ccode\u003ec014b22\u003c/code\u003e\u003c/a\u003e Remove unused internal code (\u003ca href=\"https://redirect.github.com/psf/black/issues/5041\"\u003e#5041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0dae20b2d009f2f03de8696d06b0c947d3abafc9\"\u003e\u003ccode\u003e0dae20b\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5036\"\u003e#5036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c5c1cbddd92cecb554ac2a77a24139dd76831030\"\u003e\u003ccode\u003ec5c1cbd\u003c/code\u003e\u003c/a\u003e Minor release patches (\u003ca href=\"https://redirect.github.com/psf/black/issues/5035\"\u003e#5035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7e5a828c37d71b6a6666e28eed444816def6a8f4\"\u003e\u003ccode\u003e7e5a828\u003c/code\u003e\u003c/a\u003e docs: clarify relationship between Black style and PEP 8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5025\"\u003e#5025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69705deb8776e7c5e585668da106d1abe2cb8d77\"\u003e\u003ccode\u003e69705de\u003c/code\u003e\u003c/a\u003e docs: add clearer pyproject configuration guidance (\u003ca href=\"https://redirect.github.com/psf/black/issues/5026\"\u003e#5026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/35ea67920b7f6ac8e09be1c47278752b1e827f76\"\u003e\u003ccode\u003e35ea679\u003c/code\u003e\u003c/a\u003e Prepare release 26.3.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5032\"\u003e#5032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.1.0...26.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.6.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.5.1 to 40.11.0\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.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.7.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.6.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/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.10.0...v40.11.0\"\u003ev40.11.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider. Thanks \u003ca href=\"https://github.com/raphael-s\"\u003e\u003ccode\u003e@​raphael-s\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.9.0...v40.10.0\"\u003ev40.10.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/rodrigobnogueira\"\u003e\u003ccode\u003e@​rodrigobnogueira\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.8.1...v40.9.0\"\u003ev40.9.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider. Thanks \u003ca href=\"https://github.com/filipemattar\"\u003e\u003ccode\u003e@​filipemattar\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.8.0...v40.8.1\"\u003ev40.8.1 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mutable default providers. Thanks \u003ca href=\"https://github.com/Dhi13man\"\u003e\u003ccode\u003e@​Dhi13man\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.7.0...v40.8.0\"\u003ev40.8.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd free email domains to \u003ccode\u003ehu_HU\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/majorzoltan80\"\u003e\u003ccode\u003e@​majorzoltan80\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.6.0...v40.7.0\"\u003ev40.7.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove Polish address grammar: categorize street types and prefixes. Thanks \u003ca href=\"https://github.com/Francooo2221\"\u003e\u003ccode\u003e@​Francooo2221\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.5.1...v40.6.0\"\u003ev40.6.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd country names to \u003ccode\u003ehe_IL\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/Moo64c\"\u003e\u003ccode\u003e@​Moo64c\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/joke2k/faker/commit/53314fc7d3fba03fed38bb1053a395fdfb50e35f\"\u003e\u003ccode\u003e53314fc\u003c/code\u003e\u003c/a\u003e Bump version: 40.10.0 → 40.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4b47329802626fc808f48be8b2a79564429500c9\"\u003e\u003ccode\u003e4b47329\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4a3341a8bd266b6ff2620c23648615a3f000bbd0\"\u003e\u003ccode\u003e4a3341a\u003c/code\u003e\u003c/a\u003e Add major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2337\"\u003e#2337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c571a926438d868841ac62ad7bc49d65eb8f103c\"\u003e\u003ccode\u003ec571a92\u003c/code\u003e\u003c/a\u003e Bump version: 40.9.0 → 40.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ec660a43ed059178965fc1c24ae039dfbcf80628\"\u003e\u003ccode\u003eec660a4\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/db8b86b852ba85043fbe2c9c271c72e904b43580\"\u003e\u003ccode\u003edb8b86b\u003c/code\u003e\u003c/a\u003e Fix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2324\"\u003e#2324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/1ebfd5f7194f867b018c934b5097bf9d6ba38d76\"\u003e\u003ccode\u003e1ebfd5f\u003c/code\u003e\u003c/a\u003e Bump version: 40.8.1 → 40.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/768a21e1666b45809fd2f6bb1d854907d2dadbb4\"\u003e\u003ccode\u003e768a21e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/b4ba81f356095eee10aacbecba1eab238e0603a6\"\u003e\u003ccode\u003eb4ba81f\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/85aed1d9c68f1be102553c23faa4bb75dc0fc68e\"\u003e\u003ccode\u003e85aed1d\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2326\"\u003e#2326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.5.1...v40.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker-file[docx,images,pdf]` from 0.18.4 to 0.19.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/barseghyanartur/faker-file/releases\"\u003efaker-file[docx,images,pdf]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.1\u003c/h2\u003e\n\u003cp\u003e2026-03-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eXmlFileProvider\u003c/code\u003e to properly escape XML special characters (\u003ccode\u003e\u0026amp;\u003c/code\u003e, \u003ccode\u003e\u0026lt;\u003c/code\u003e, \u003ccode\u003e\u0026gt;\u003c/code\u003e, \u003ccode\u003e\u0026quot;\u003c/code\u003e, \u003ccode\u003e'\u003c/code\u003e) in template-generated content.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.19\u003c/h2\u003e\n\u003cp\u003e2026-03-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated NLPAug- and TextAugment-based augmenters, as both libraries\nseem to have pour support with modern Python versions. Introduced\na simple FakerWordAugmenter as a default text-augmenter, with no\nadditional dependencies.\u003c/li\u003e\n\u003cli\u003eTested against Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/barseghyanartur/faker-file/compare/0.18.4...0.19\"\u003ehttps://github.com/barseghyanartur/faker-file/compare/0.18.4...0.19\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/barseghyanartur/faker-file/blob/main/CHANGELOG.rst\"\u003efaker-file[docx,images,pdf]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.1\u003c/h2\u003e\n\u003cp\u003e2026-03-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eXmlFileProvider\u003c/code\u003e to properly escape XML special characters\n(\u003ccode\u003e\u0026amp;\u003c/code\u003e, \u003ccode\u003e\u0026lt;\u003c/code\u003e, \u003ccode\u003e\u0026gt;\u003c/code\u003e, \u003ccode\u003e\u0026quot;\u003c/code\u003e, \u003ccode\u003e'\u003c/code\u003e) in template-generated content.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.19\u003c/h2\u003e\n\u003cp\u003e2026-03-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated NLPAug- and TextAugment-based augmenters, as both libraries\nseem to have pour support with modern Python versions. Introduced\na simple FakerWordAugmenter as a default text-augmenter, with no\nadditional dependencies.\u003c/li\u003e\n\u003cli\u003eTested against Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/e1cde6f20cc8baf6095551bdd3f589ee43d1732b\"\u003e\u003ccode\u003ee1cde6f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/152\"\u003e#152\u003c/a\u003e from barseghyanartur/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/d1db5565b671ab8b35ab1fe9e05eb1b713552645\"\u003e\u003ccode\u003ed1db556\u003c/code\u003e\u003c/a\u003e Fix/fixes (\u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/e77cec6453799b38cdb7dea89e4c5b89c8dce1c7\"\u003e\u003ccode\u003ee77cec6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/149\"\u003e#149\u003c/a\u003e from barseghyanartur/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/c3b139451f9cd75cb580abbd9ff6c1ca53554f7f\"\u003e\u003ccode\u003ec3b1394\u003c/code\u003e\u003c/a\u003e Improve manifest.in; Clean up (\u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/139\"\u003e#139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/4ad45266ad69b2bf4c367ff6cad9e194ca08df94\"\u003e\u003ccode\u003e4ad4526\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/148\"\u003e#148\u003c/a\u003e from barseghyanartur/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/d63ff3f7f541e03333c7275fe61bb714905c6bee\"\u003e\u003ccode\u003ed63ff3f\u003c/code\u003e\u003c/a\u003e Fixes (\u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/147\"\u003e#147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/c5069c713770c5228638e8c38e922da16a62829b\"\u003e\u003ccode\u003ec5069c7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/146\"\u003e#146\u003c/a\u003e from barseghyanartur/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/63a494666620f6c995895c2c7d07463d681356fa\"\u003e\u003ccode\u003e63a4946\u003c/code\u003e\u003c/a\u003e Modernise (\u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/4bed05141d2fbef6b979f9ce9f1fae1e17fa9d0c\"\u003e\u003ccode\u003e4bed051\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/137\"\u003e#137\u003c/a\u003e from barseghyanartur/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/5594cbe7ccd5839807311667df141628e84e2b7e\"\u003e\u003ccode\u003e5594cbe\u003c/code\u003e\u003c/a\u003e Add llms.txt badge to readme (\u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/barseghyanartur/faker-file/compare/0.18.4...0.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.35.99 to 1.42.73\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/3a06d635c79baf1597439dde9244d3f28f6b6eb2\"\u003e\u003ccode\u003e3a06d63\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.73'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ca7b0438074715c38ede4b8c0ab4401700bddf70\"\u003e\u003ccode\u003eca7b043\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.73\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ef6697c5aad3cbbe962fb63c9335db0e0a705480\"\u003e\u003ccode\u003eef6697c\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/3c02c15e37930f95537d5b173c0ffc19b1201b16\"\u003e\u003ccode\u003e3c02c15\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.72'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b7e01e94ab81d564b365e55b0a60c3c5d1e889ab\"\u003e\u003ccode\u003eb7e01e9\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.72' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/fcc3fe3ff503eecbbd713678771e02654eb27c9a\"\u003e\u003ccode\u003efcc3fe3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.72\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9d3625e1b08dbe0ae7a7bb296de0b7a26e086da0\"\u003e\u003ccode\u003e9d3625e\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dd8d8d63a318dd7c43b44deb2438988973751519\"\u003e\u003ccode\u003edd8d8d6\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.71'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0d4401ebded31ec53e850ec8e6d8dc6ae22d7dbe\"\u003e\u003ccode\u003e0d4401e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.71' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/45318a5e206d34126c7bf472d814f09502da14b6\"\u003e\u003ccode\u003e45318a5\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.71\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.35.99...1.42.73\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.35.99 to 1.42.73\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/08d494afd2133bdf09ef84b83aeb374389f236af\"\u003e\u003ccode\u003e08d494a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.73'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/15967c3e9918a503e2b1a2da8e78b1a89ac465a7\"\u003e\u003ccode\u003e15967c3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.73\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/cd4cb60a1cf2d16d742c61a6d06fb6d830bbff06\"\u003e\u003ccode\u003ecd4cb60\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/81d0826a2c41888b76188438811a5a3c981a65e3\"\u003e\u003ccode\u003e81d0826\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b2e20b2d4e6ee92b7f46bbad73a5a9a7abe18b28\"\u003e\u003ccode\u003eb2e20b2\u003c/code\u003e\u003c/a\u003e Fix aws-chunked Content-Length handling for non-seekable S3 uploads (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3652\"\u003e#3652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/9a8fcce967d9c49ba4ef4ca68cf78778aa05d80a\"\u003e\u003ccode\u003e9a8fcce\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.72'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/c251a9179ae32fdc93afb8cff02c520e9c1d3c9b\"\u003e\u003ccode\u003ec251a91\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.72' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/07761538e4281516c7d78b6623e93ccf1e404876\"\u003e\u003ccode\u003e0776153\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.72\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/09c9273c01e2c4c63d8c8084352eec0c001601da\"\u003e\u003ccode\u003e09c9273\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/983a4a2624b146a3831f2c121883043b15df89fa\"\u003e\u003ccode\u003e983a4a2\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.35.99...1.42.73\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.133.1 to 0.135.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.135.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix, avoid yield from a TaskGroup, only as an async context manager, closed in the request async exit stack. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15038\"\u003e#15038\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✏️ Fix typo in \u003ccode\u003edocs/en/docs/_llm-test.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15007\"\u003e#15007\u003c/a\u003e by \u003ca href=\"https://github.com/adityagiri3600\"\u003e\u003ccode\u003e@​adityagiri3600\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update Skill, optimize context, trim and refactor into references. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15031\"\u003e#15031\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15037\"\u003e#15037\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15029\"\u003e#15029\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15036\"\u003e#15036\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Server Sent Events. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15030\"\u003e#15030\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/server-sent-events/\"\u003eServer-Sent Events (SSE)\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.134.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for streaming JSON Lines and binary data with \u003ccode\u003eyield\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15022\"\u003e#15022\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eThis also upgrades Starlette from \u003ccode\u003e\u0026gt;=0.40.0\u003c/code\u003e to \u003ccode\u003e\u0026gt;=0.46.0\u003c/code\u003e, as it's needed to properly unrwap and re-raise exceptions from exception groups.\u003c/li\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/stream-json-lines/\"\u003eStream JSON Lines\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAnd new docs: \u003ca href=\"https://fastapi.tiangolo.com/advanced/stream-data/\"\u003eStream Data\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update Library Agent Skill with streaming responses. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15024\"\u003e#15024\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update docs for responses and new stream with \u003ccode\u003eyield\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15023\"\u003e#15023\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eawait\u003c/code\u003e in \u003ccode\u003eStreamingResponse\u003c/code\u003e code example to allow cancellation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14681\"\u003e#14681\u003c/a\u003e by \u003ca href=\"https://github.com/casperdcl\"\u003e\u003ccode\u003e@​casperdcl\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Rename \u003ccode\u003edocs_src/websockets\u003c/code\u003e to \u003ccode\u003edocs_src/websockets_\u003c/code\u003e to avoid import errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14979\"\u003e#14979\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Run tests with \u003ccode\u003epytest-xdist\u003c/code\u003e and \u003ccode\u003epytest-cov\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14992\"\u003e#14992\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ca5f60ee72f35fb2134d8b5d26bbb75965bcff66\"\u003e\u003ccode\u003eca5f60e\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.135.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/87f75aa62c1dde90f4dfbfa7fc2c33127d757d34\"\u003e\u003ccode\u003e87f75aa\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a9258b169dce3e321f614c14b1877c18750d6c7\"\u003e\u003ccode\u003e8a9258b\u003c/code\u003e\u003c/a\u003e 🐛 Fix, avoid yield from a TaskGroup, only as an async context manager, closed...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/60385078233e00f9f13307ff038f12f88fc5c240\"\u003e\u003ccode\u003e6038507\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c796ba4f46a6e81477ce44eabe13fd01d82f2c4a\"\u003e\u003ccode\u003ec796ba4\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15037\"\u003e#15037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b24aa03b888b78dd2ec6540d47c84a8676d6a7cb\"\u003e\u003ccode\u003eb24aa03\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2c6104752a97273976c8a63e897de98a48f19ce0\"\u003e\u003ccode\u003e2c61047\u003c/code\u003e\u003c/a\u003e ✏️ Fix typo in \u003ccode\u003edocs/en/docs/_llm-test.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15007\"\u003e#15007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e3bbeef8a2687fdf34d4de2d304a59135a30e63c\"\u003e\u003ccode\u003ee3bbeef\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d726c8cb2b8e00279487fa8661a5276d2ff2125f\"\u003e\u003ccode\u003ed726c8c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cf514e6d3839ca69ca45a55a6f862e74892339b9\"\u003e\u003ccode\u003ecf514e6\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Contributors and Translators (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15029\"\u003e#15029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.133.1...0.135.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi-cloud-cli` from 0.14.0 to 0.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/releases\"\u003efastapi-cloud-cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003efastapi cloud setup-ci\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/157\"\u003e#157\u003c/a\u003e by \u003ca href=\"https://github.com/savannahostrowski\"\u003e\u003ccode\u003e@​savannahostrowski\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Add \u003ccode\u003ety\u003c/code\u003e to precommit. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/167\"\u003e#167\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.14.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix nested progress in deploy causing weird output. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/166\"\u003e#166\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Add dates to release notes. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/161\"\u003e#161\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump tiangolo/latest-changes from 0.4.0 to 0.4.1. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/162\"\u003e#162\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 6 to 8. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/163\"\u003e#163\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/164\"\u003e#164\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 5 to 7. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/165\"\u003e#165\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/119\"\u003e#119\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/101\"\u003e#101\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 4 to 5. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/102\"\u003e#102\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump tiangolo/issue-manager from 0.5.1 to 0.6.0. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/85\"\u003e#85\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/setup-python from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/84\"\u003e#84\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/blob/main/release-notes.md\"\u003efastapi-cloud-cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.0 (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003efastapi cloud setup-ci\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/157\"\u003e#157\u003c/a\u003e by \u003ca href=\"https://github.com/savannahostrowski\"\u003e\u003ccode\u003e@​savannahostrowski\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Add \u003ccode\u003ety\u003c/code\u003e to precommit. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/167\"\u003e#167\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.14.1 (2026-03-07)\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix nested progress in deploy causing weird output. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/166\"\u003e#166\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Add dates to release notes. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/161\"\u003e#161\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump tiangolo/latest-changes from 0.4.0 to 0.4.1. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/162\"\u003e#162\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 6 to 8. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/163\"\u003e#163\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/164\"\u003e#164\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 5 to 7. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/165\"\u003e#165\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/119\"\u003e#119\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/101\"\u003e#101\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 4 to 5. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/102\"\u003e#102\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump tiangolo/issue-manager from 0.5.1 to 0.6.0. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/85\"\u003e#85\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/setup-python from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/84\"\u003e#84\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/dbeacdad80aed8fc091fb074bdeba72467e6e404\"\u003e\u003ccode\u003edbeacda\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/299e3095c34c962f41f3f2e34d18b9f30cc821c9\"\u003e\u003ccode\u003e299e309\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/d7dc0ba1f7060501ab0303e87a353af4ed625f50\"\u003e\u003ccode\u003ed7dc0ba\u003c/code\u003e\u003c/a\u003e 👷 Add \u003ccode\u003ety\u003c/code\u003e to precommit (\u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/c725a6aeb3cfea7aa4b757c6991bd69e230b53c2\"\u003e\u003ccode\u003ec725a6a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/abc2dd67bde6d5cc2200deecb8fc5a55b590c8b7\"\u003e\u003ccode\u003eabc2dd6\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003efastapi cloud setup-ci\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/issues/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/e30b63ff3227ebed24524fffcd0bdf6bf907394f\"\u003e\u003ccode\u003ee30b63f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/15124a9e81480e5d357a1e1c4461ecea492a23e6\"\u003e\u003ccode\u003e15124a9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/6bb4c43fdb686af423c21c58aadfe85b45d8b89d\"\u003e\u003ccode\u003e6bb4c43\u003c/code\u003e\u003c/a\u003e 🐛 Fix nested progress in deploy causing weird output (\u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/b83b878ee105299719246c41f4298534861f7a54\"\u003e\u003ccode\u003eb83b878\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/4cf53ed1b8bf9423dc99508c1f590bdf45199a5e\"\u003e\u003ccode\u003e4cf53ed\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/compare/0.14.0...0.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastar` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/DoctorJohn/fastar/releases\"\u003efastar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.9.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix tests only used the pinned python version by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/51\"\u003eDoctorJohn/fastar#51\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest zstd with older python versions by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/50\"\u003eDoctorJohn/fastar#50\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefactor reader and writer tests by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/52\"\u003eDoctorJohn/fastar#52\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClassify as typed by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/53\"\u003eDoctorJohn/fastar#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd GitHub sponsor button by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/54\"\u003eDoctorJohn/fastar#54\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade python syntax using pyupgrade by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/55\"\u003eDoctorJohn/fastar#55\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate to prek by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/56\"\u003eDoctorJohn/fastar#56\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd multithreaded tests by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/62\"\u003eDoctorJohn/fastar#62\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Pyo3 to v0.28 by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/60\"\u003eDoctorJohn/fastar#60\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add riscv64 target to linux wheel build matrix by \u003ca href=\"https://github.com/gounthar\"\u003e\u003ccode\u003e@​gounthar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/58\"\u003eDoctorJohn/fastar#58\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/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/62\"\u003eDoctorJohn/fastar#62\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gounthar\"\u003e\u003ccode\u003e@​gounthar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/58\"\u003eDoctorJohn/fastar#58\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/DoctorJohn/fastar/compare/v0.8.0...v0.9.0\"\u003ehttps://github.com/DoctorJohn/fastar/compare/v0.8.0...v0.9.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/DoctorJohn/fastar/commit/8e0ffc416a2b9c88cb2e686972dbcbca57ca42d1\"\u003e\u003ccode\u003e8e0ffc4\u003c/code\u003e\u003c/a\u003e Bump version to v0.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/0598440c1575ebc693b06c2f023f711acb0223c5\"\u003e\u003ccode\u003e0598440\u003c/code\u003e\u003c/a\u003e Add riscv64 target to linux wheel build matrix (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/16318828046689959b2994b4f3e5a4a16edc9741\"\u003e\u003ccode\u003e1631882\u003c/code\u003e\u003c/a\u003e Update Pyo3 to v0.28 (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/af1804aef6e28b415578b3ce6fc8acd5b7322925\"\u003e\u003ccode\u003eaf1804a\u003c/code\u003e\u003c/a\u003e Add multithreaded tests (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/62\"\u003e#62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/f0a02fc1bbfa0de13272793ee327e1d40041754c\"\u003e\u003ccode\u003ef0a02fc\u003c/code\u003e\u003c/a\u003e Migrate to prek (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/56\"\u003e#56\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/58086d31fac9b365aa890b78b87ac9622db89e77\"\u003e\u003ccode\u003e58086d3\u003c/code\u003e\u003c/a\u003e Upgrade python syntax using pyupgrade (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/cffe7e2ba055381ccde5190c6c311bc446ee0980\"\u003e\u003ccode\u003ecffe7e2\u003c/code\u003e\u003c/a\u003e Add GitHub sponsor button (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/cd141b363918a8f552494da08b12f4693216de04\"\u003e\u003ccode\u003ecd141b3\u003c/code\u003e\u003c/a\u003e Classify as typed (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/cb34ba6403701ac1074785652d2f8293910d873e\"\u003e\u003ccode\u003ecb34ba6\u003c/code\u003e\u003c/a\u003e Refactor reader and writer tests (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/e5ac1e2285e5a2f59287fe6436b1404f1ac9b393\"\u003e\u003ccode\u003ee5ac1e2\u003c/code\u003e\u003c/a\u003e Test zstd with older python versions (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/50\"\u003e#50\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/DoctorJohn/fastar/compare/v0.8.0...v0.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-extra-types` from 2.11.0 to 2.11.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/releases\"\u003epydantic-extra-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.11.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix Cron Tests (Happy New Year 🎉 ) by \u003ca href=\"https://github.com/anthonycicc\"\u003e\u003ccode\u003e@​anthonycicc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/361\"\u003epydantic/pydantic-extra-types#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/362\"\u003epydantic/pydantic-extra-types#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 6 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/363\"\u003epydantic/pydantic-extra-types#363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/365\"\u003epydantic/pydantic-extra-types#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd UUID v7 support (and v6/v8) by \u003ca href=\"https://github.com/sshaheerkhann\"\u003e\u003ccode\u003e@​sshaheerkhann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/367\"\u003epydantic/pydantic-extra-types#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: migrate DSN types from pydantic.networks by \u003ca href=\"https://github.com/bBlazewavE\"\u003e\u003ccode\u003e@​bBlazewavE\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/368\"\u003epydantic/pydantic-extra-types#368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eColor\u003c/code\u003e from package \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/bBlazewavE\"\u003e\u003ccode\u003e@​bBlazewavE\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/373\"\u003epydantic/pydantic-extra-types#373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/371\"\u003epydantic/pydantic-extra-types#371\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 7 to 8 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/370\"\u003epydantic/pydantic-extra-types#370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 6 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/369\"\u003epydantic/pydantic-extra-types#369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add IBAN (International Bank Account Number) type by \u003ca href=\"https://github.com/toroleapinc\"\u003e\u003ccode\u003e@​toroleapinc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/372\"\u003epydantic/pydantic-extra-types#372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔖 Release version 2.11.1  by \u003ca href=\"https://github.com/yezz123\"\u003e\u003ccode\u003e@​yezz123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/375\"\u003epydantic/pydantic-extra-types#375\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/anthonycicc\"\u003e\u003ccode\u003e@​anthonycicc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/361\"\u003epydantic/pydantic-extra-types#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sshaheerkhann\"\u003e\u003ccode\u003e@​sshaheerkhann\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/367\"\u003epydantic/pydantic-extra-types#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bBlazewavE\"\u003e\u003ccode\u003e@​bBlazewavE\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/368\"\u003epydantic/pydantic-extra-types#368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/toroleapinc\"\u003e\u003ccode\u003e@​toroleapinc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/372\"\u003epydantic/pydantic-extra-types#372\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-extra-types/compare/v2.11.0...v2.11.1\"\u003ehttps://github.com/pydantic/pydantic-extra-types/compare/v2.11.0...v2.11.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/blob/main/HISTORY.md\"\u003epydantic-extra-types's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCHANGELOG\u003c/h1\u003e\n\u003ch2\u003eLatest Changes\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/efe22fb050b6020950bb4797d36c4aca3c5340ec\"\u003e\u003ccode\u003eefe22fb\u003c/code\u003e\u003c/a\u003e 🔖 Release version 2.11.1  (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/6fc6756c43eb6045eab29c9ab6f37d03f17cc650\"\u003e\u003ccode\u003e6fc6756\u003c/code\u003e\u003c/a\u003e feat: add IBAN (International Bank Account Number) type (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/558e5c891bf86f9dc09fe1bfa47a93bec3f1cd2e\"\u003e\u003ccode\u003e558e5c8\u003c/code\u003e\u003c/a\u003e ⬆ Bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/aab5a5a6a19accb3905cb2825f55a8d10f056186\"\u003e\u003ccode\u003eaab5a5a\u003c/code\u003e\u003c/a\u003e ⬆ Bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/89b2a1615d7411f3fbab2319ef77845aee02b3d4\"\u003e\u003ccode\u003e89b2a16\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/496cf00733b33304ea0b8dae97c8b0e6c9c02c94\"\u003e\u003ccode\u003e496cf00\u003c/code\u003e\u003c/a\u003e Export Color from package \u003cstrong\u003einit\u003c/strong\u003e.py (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/07628d1099aa2751d3e9661134a28fa85fe6e2f8\"\u003e\u003ccode\u003e07628d1\u003c/code\u003e\u003c/a\u003e feat: migrate DSN types from pydantic.networks (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/b999077b5609188f8634d24a9961b1baeff7b64d\"\u003e\u003ccode\u003eb999077\u003c/code\u003e\u003c/a\u003e Add UUID v7 support (and v6/v8) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/712421fd49fc49f68b68f74913d5e15d346fbcce\"\u003e\u003ccode\u003e712421f\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/a99dd63e81652f9e51082f6fc27d6997dbf0f070\"\u003e\u003ccode\u003ea99dd63\u003c/code\u003e\u003c/a\u003e ⬆ Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/363\"\u003e#363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/compare/v2.11.0...v2.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-core` from 2.41.5 to 2.42.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic-core/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyjwt` from 2.11.0 to 2.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jpadilla/pyjwt/releases\"\u003epyjwt's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.12.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd typing_extensions dependency for Python \u0026lt; 3.11 by \u003ca href=\"https://github.com/jpadilla\"\u003e\u003ccode\u003e@​jpadilla\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1151\"\u003ejpadilla/pyjwt#1151\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1\"\u003ehttps://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eValidate the crit (Critical) Header Parameter defined in RFC 7515 §4.1.11. by \u003ca href=\"https://github.com/dmbs335\"\u003e\u003ccode\u003e@​dmbs335\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-752w-5fwx-jx9f\"\u003eGHSA-752w-5fwx-jx9f\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1132\"\u003ejpadilla/pyjwt#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(docs): fix docs build by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1137\"\u003ejpadilla/pyjwt#1137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAnnotate PyJWKSet.keys for pyright by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1134\"\u003ejpadilla/pyjwt#1134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: close HTTPError to prevent ResourceWarning on Python 3.14 by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1133\"\u003ejpadilla/pyjwt#1133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: remove superfluous constants by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1136\"\u003ejpadilla/pyjwt#1136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1135\"\u003ejpadilla/pyjwt#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(tests): enable mypy by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1138\"\u003ejpadilla/pyjwt#1138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 7 to 8 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1142\"\u003ejpadilla/pyjwt#1142\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1141\"\u003ejpadilla/pyjwt#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1145\"\u003ejpadilla/pyjwt#1145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: do not store reference to algorithms dict on PyJWK by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1143\"\u003ejpadilla/pyjwt#1143\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse PyJWK algorithm when encoding without explicit algorithm by \u003ca href=\"https://github.com/jpadilla\"\u003e\u003ccode\u003e@​jpadilla\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1148\"\u003ejpadilla/pyjwt#1148\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/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1137\"\u003ejpadilla/pyjwt#1137\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/jpadilla/pyjwt/pull/1133\"\u003ejpadilla/pyjwt#1133\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.0\"\u003ehttps://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.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/jpadilla/pyjwt/blob/master/CHANGELOG.rst\"\u003epyjwt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev2.12.1 \u0026lt;https://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1\u0026gt;\u003c/code\u003e__\u003c/h2\u003e\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Add missing ``typing_extensions`` dependency for Py...\n\n_Description has been truncated_","html_url":"https://github.com/ral-facilities/object-storage-api/pull/279","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ral-facilities%2Fobject-storage-api/issues/279","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/279/packages"},{"uuid":"4115191683","node_id":"PR_kwDOQ5AU387MdgjY","number":107,"state":"open","title":"Bump the uv-deps group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-22T07:14:07.000Z","updated_at":"2026-03-29T09:00:47.689Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"uv-deps","update_count":4,"packages":[{"name":"sentry-sdk","old_version":"2.54.0","new_version":"2.55.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.7","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-deps group with 4 updates in the / directory: [sentry-sdk](https://github.com/getsentry/sentry-python), [pytest-cov](https://github.com/pytest-dev/pytest-cov), [pytest-env](https://github.com/pytest-dev/pytest-env) and [ruff](https://github.com/astral-sh/ruff).\n\nUpdates `sentry-sdk` from 2.54.0 to 2.55.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.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tool description to execute_tool 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/5596\"\u003e#5596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Add owner field to MonitorConfig by \u003ca href=\"https://github.com/julwhitney13\"\u003e\u003ccode\u003e@​julwhitney13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5610\"\u003e#5610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Add collector_url option to OTLPIntegration by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5603\"\u003e#5603\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Truncate list-based message content in AI monitoring 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/5631\"\u003e#5631\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Close span on \u003ccode\u003eGeneratorExit\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/5643\"\u003e#5643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(celery) Propagate user-set headers 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/5581\"\u003e#5581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Wrap finish_reason in array for gen_ai span attribute 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/5666\"\u003e#5666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Fix deadlock in log batcher 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/5684\"\u003e#5684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(profiler) Prevent buffer race condition during rapid start/stop cycles 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/5622\"\u003e#5622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(utils) Avoid double serialization of strings in safe_serialize 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/5587\"\u003e#5587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable unused import ruff check and fix unused imports 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/5652\"\u003e#5652\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(openai-agents) Remove inapplicable comment 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/5495\"\u003e#5495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd AGENTS.md 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/5579\"\u003e#5579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eset_attribute\u003c/code\u003e example to changelog 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/5578\"\u003e#5578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck system and response ID attributes on spans created by \u003ccode\u003estream()\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/5665\"\u003e#5665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip accumulation logic for unexpected types in streamed response 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/5564\"\u003e#5564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFactor out streamed result handling 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/5563\"\u003e#5563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStream valid JSON 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/5641\"\u003e#5641\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop mocking response iterator 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/5573\"\u003e#5573\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\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.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tool description to execute_tool 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/5596\"\u003e#5596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Add owner field to MonitorConfig by \u003ca href=\"https://github.com/julwhitney13\"\u003e\u003ccode\u003e@​julwhitney13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5610\"\u003e#5610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Add collector_url option to OTLPIntegration by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5603\"\u003e#5603\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Truncate list-based message content in AI monitoring 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/5631\"\u003e#5631\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Close span on \u003ccode\u003eGeneratorExit\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/5643\"\u003e#5643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(celery) Propagate user-set headers 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/5581\"\u003e#5581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Wrap finish_reason in array for gen_ai span attribute 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/5666\"\u003e#5666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Fix deadlock in log batcher 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/5684\"\u003e#5684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(profiler) Prevent buffer race condition during rapid start/stop cycles 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/5622\"\u003e#5622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(utils) Avoid double serialization of strings in safe_serialize 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/5587\"\u003e#5587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable unused import ruff check and fix unused imports 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/5652\"\u003e#5652\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(openai-agents) Remove inapplicable comment 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/5495\"\u003e#5495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd AGENTS.md 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/5579\"\u003e#5579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eset_attribute\u003c/code\u003e example to changelog 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/5578\"\u003e#5578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck system and response ID attributes on spans created by \u003ccode\u003estream()\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/5665\"\u003e#5665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip accumulation logic for unexpected types in streamed response 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/5564\"\u003e#5564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFactor out streamed result handling 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/5563\"\u003e#5563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStream valid JSON 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/5641\"\u003e#5641\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop mocking response iterator 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/5573\"\u003e#5573\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\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/038a429023b9092503f65d554e7c2ad230bba542\"\u003e\u003ccode\u003e038a429\u003c/code\u003e\u003c/a\u003e release: 2.55.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b29c4bb5ed300d63b4f78eeb1c69c1c6e0f9ec9b\"\u003e\u003ccode\u003eb29c4bb\u003c/code\u003e\u003c/a\u003e fix(logging): Fix deadlock in log batcher (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5684\"\u003e#5684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b905cd3297fd824fc0f7ce41c9d67a4e85b43fc2\"\u003e\u003ccode\u003eb905cd3\u003c/code\u003e\u003c/a\u003e feat(anthropic): Record finish reasons in AI monitoring spans (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5678\"\u003e#5678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/6ea663f71d404bf7a261f31a22602ed85fb93544\"\u003e\u003ccode\u003e6ea663f\u003c/code\u003e\u003c/a\u003e fix(langchain): Wrap finish_reason in array for gen_ai span attribute (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5666\"\u003e#5666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/6345af9598de0dd730e85048e5fc68733bbd8b98\"\u003e\u003ccode\u003e6345af9\u003c/code\u003e\u003c/a\u003e fix(ai): Truncate list-based message content in AI monitoring (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5631\"\u003e#5631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/01346a9f2d6c900fed8d830c31143a6c089f0fc2\"\u003e\u003ccode\u003e01346a9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/create-github-app-token from 2.2.1 to 3.0.0 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5667\"\u003e#5667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/0b946246062956e5228329b3a140c1ad3891800b\"\u003e\u003ccode\u003e0b94624\u003c/code\u003e\u003c/a\u003e build(deps): bump getsentry/testing-ai-sdk-integrations from 285c012e522f2415...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/39cf94d458093392c78f92aa167f566827b0f30d\"\u003e\u003ccode\u003e39cf94d\u003c/code\u003e\u003c/a\u003e build(deps): bump getsentry/craft from 2.23.1 to 2.24.1 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5668\"\u003e#5668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/ada153bcdc96813064bacccbc523d66cc1368dfe\"\u003e\u003ccode\u003eada153b\u003c/code\u003e\u003c/a\u003e ref: Add cont profiling support to span first (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5672\"\u003e#5672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/0b5f4f85b7d7fd93a6f8dc7932e6b3599c7b3da9\"\u003e\u003ccode\u003e0b5f4f8\u003c/code\u003e\u003c/a\u003e ci: 🤖 Update test matrix with new releases (03/16) (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5671\"\u003e#5671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.54.0...2.55.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.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.4 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.7/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.15.7/ruff-installer.ps1 | iex\u0026quot;\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/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.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/neikow/urban-platform/pull/107","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/neikow%2Furban-platform/issues/107","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/107/packages"}],"issue_packages":[{"old_version":"1.6.0","new_version":"1.7.0","update_type":"minor","path":"/backend","pr_created_at":"2026-08-10T12:13:50.000Z","version_change":"1.6.0 → 1.7.0","issue":{"uuid":"5109943540","node_id":"PR_kwDOSArv7M78_lCv","number":3474,"state":"open","title":"chore(deps)(deps): Bump the testing group in /backend with 3 updates","user":"dependabot[bot]","labels":["surface:backend","risk:medium","backend"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-08-10T12:13:50.000Z","updated_at":"2026-08-10T12:14:39.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): Bump","group_name":"testing","update_count":3,"packages":[{"name":"pytest","old_version":"9.0.3","new_version":"9.1.1","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-env","old_version":"1.6.0","new_version":"1.7.0","repository_url":"https://github.com/pytest-dev/pytest-env"}],"path":"/backend","ecosystem":"pip"},"body":"Bumps the testing group in /backend with 3 updates: [pytest](https://github.com/pytest-dev/pytest), [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) and [pytest-env](https://github.com/pytest-dev/pytest-env).\n\nUpdates `pytest` from 9.0.3 to 9.1.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.1.1\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.1 (2026-06-19)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14220\"\u003e#14220\u003c/a\u003e: Fixed a logic bug in \u003ccode\u003epytest.RaisesGroup\u003c/code\u003e which would might cause it to display incorrect \u0026quot;It matches \u003c!-- raw HTML omitted --\u003eFooError()\u003c!-- raw HTML omitted --\u003e which was paired with \u003c!-- raw HTML omitted --\u003eBarError\u003c!-- raw HTML omitted --\u003e\u0026quot; messages.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14591\"\u003e#14591\u003c/a\u003e: Fixed a regression in pytest 9.1.0 which caused overriding a parametrized fixture with an indirect \u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/pytest\"\u003e\u003ccode\u003e@​pytest\u003c/code\u003e\u003c/a\u003e.mark.parametrize\u003c!-- raw HTML omitted --\u003e to fail with \u0026quot;duplicate parametrization of '\u0026lt;fixture name\u0026gt;'\u0026quot;.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14606\"\u003e#14606\u003c/a\u003e: Fixed \u003ccode\u003elist-item\u003c/code\u003e typing errors from mypy in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e \u003ccode\u003eargvalues\u003c/code\u003e parameter.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14608\"\u003e#14608\u003c/a\u003e: Fixed a regression in pytest 9.1.0 where \u003ccode\u003econftest.py\u003c/code\u003e files located in \u003ccode\u003e\u0026lt;invocation dir\u0026gt;/test*\u003c/code\u003e were no longer loaded as initial conftests when invoked without arguments.\nThis could cause certain hooks (like \u003ccode\u003epytest_addoption\u003c/code\u003e) in these files to not fire.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.1.0\u003c/h2\u003e\n\u003ch1\u003epytest 9.1.0 (2026-06-13)\u003c/h1\u003e\n\u003ch2\u003eRemovals and backward incompatible breaking changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14533\"\u003e#14533\u003c/a\u003e: When using \u003ccode\u003e--doctest-modules\u003c/code\u003e, autouse fixtures with \u003ccode\u003emodule\u003c/code\u003e, \u003ccode\u003epackage\u003c/code\u003e or \u003ccode\u003esession\u003c/code\u003e scope that are defined inline in Python test modules (not plugins or conftests) will now possibly execute twice.\u003c/p\u003e\n\u003cp\u003eIf this is undesirable, move the fixture definition to a \u003ccode\u003econftest.py\u003c/code\u003e file if possible.\u003c/p\u003e\n\u003cp\u003eTechnical explanation for those interested:\nWhen using \u003c!-- raw HTML omitted --\u003e--doctest-modules\u003c!-- raw HTML omitted --\u003e, pytest possibly collects Python modules twice, once as \u003ccode\u003epytest.Module\u003c/code\u003e and once as a \u003ccode\u003eDoctestModule\u003c/code\u003e (depending on the configuration).\nDue to improvements in pytest's fixture implementation, if e.g. the \u003ccode\u003eDoctestModule\u003c/code\u003e collects a fixture, it is now visible to it only, and not to the \u003ccode\u003eModule\u003c/code\u003e.\nThis means that both need to register the fixtures independently.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eDeprecations (removal in next major release)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/10819\"\u003e#10819\u003c/a\u003e: Added a deprecation warning for class-scoped fixtures defined as instance methods (without \u003ccode\u003e@classmethod\u003c/code\u003e). Such fixtures set attributes on a different instance than the test methods use, leading to unexpected behavior. Use \u003ccode\u003e@classmethod\u003c/code\u003e decorator instead -- by \u003ccode\u003eyastcher\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003e10819\u003c/code\u003e and \u003ccode\u003e14011\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12882\"\u003e#12882\u003c/a\u003e: Calling \u003ccode\u003erequest.getfixturevalue() \u0026lt;pytest.FixtureRequest.getfixturevalue\u0026gt;\u003c/code\u003e during teardown to request a fixture that was not already requested is now deprecated and will become an error in pytest 10.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003edynamic-fixture-request-during-teardown\u003c/code\u003e for details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13409\"\u003e#13409\u003c/a\u003e: Using non-\u003ccode\u003e~collections.abc.Collection\u003c/code\u003e iterables (such as generators, iterators, or custom iterable objects) for the \u003ccode\u003eargvalues\u003c/code\u003e parameter in \u003ccode\u003e@pytest.mark.parametrize \u0026lt;pytest.mark.parametrize ref\u0026gt;\u003c/code\u003e and \u003ccode\u003emetafunc.parametrize \u0026lt;pytest.Metafunc.parametrize\u0026gt;\u003c/code\u003e is now deprecated.\u003c/p\u003e\n\u003cp\u003eThese iterables get exhausted after the first iteration,\nleading to tests getting unexpectedly skipped in cases such as running \u003ccode\u003epytest.main()\u003c/code\u003e multiple times,\nusing class-level parametrize decorators,\nor collecting tests multiple times.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003eparametrize-iterators\u003c/code\u003e for details and suggestions.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute is now deprecated.\nUse \u003ccode\u003econfig.getini() \u0026lt;pytest.Config.getini\u0026gt;\u003c/code\u003e to access configuration values instead.\u003c/p\u003e\n\u003cp\u003eSee \u003ccode\u003econfig-inicfg\u003c/code\u003e for more details.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14004\"\u003e#14004\u003c/a\u003e: Passing \u003ccode\u003ebaseid\u003c/code\u003e to \u003ccode\u003e~pytest.FixtureDef\u003c/code\u003e or \u003ccode\u003enodeid\u003c/code\u003e strings to fixture registration APIs is now deprecated. These are internal pytest APIs that are used by some plugins.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/cf470ec0bf7eb89cd97dd56df4859eae5db46447\"\u003e\u003ccode\u003ecf470ec\u003c/code\u003e\u003c/a\u003e Prepare release version 9.1.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/e0c8ce6cc5db1f08363be6f152c32e6838df2690\"\u003e\u003ccode\u003ee0c8ce6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14625\"\u003e#14625\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/a07c31a97...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/1b82d1694fce22385ee7a4287917fbafbaf2e757\"\u003e\u003ccode\u003e1b82d16\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14624\"\u003e#14624\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/b375b79ec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/501c4bc784da3b08bfcaa64858eba5d15dc59e53\"\u003e\u003ccode\u003e501c4bc\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14596\"\u003e#14596\u003c/a\u003e from bluetech/doc-classmethod\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/b61f588e36e9377c3d1d3f06bece1da0fc31d9ca\"\u003e\u003ccode\u003eb61f588\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14622\"\u003e#14622\u003c/a\u003e from chrisburr/fix-14608-initial-conftest-test-subdir\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/9a567e009f4d2da3ce1721c6db3109cb5744d40a\"\u003e\u003ccode\u003e9a567e0\u003c/code\u003e\u003c/a\u003e [automated] Update plugin list (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14617\"\u003e#14617\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14618\"\u003e#14618\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ef8b2993e5b48639e4a3d97d0525df9760781384\"\u003e\u003ccode\u003eef8b299\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14620\"\u003e#14620\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/680f9f3ed...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/66abd0784d4cb7c1ba44ab9a8896506cd4985acc\"\u003e\u003ccode\u003e66abd07\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14220\"\u003e#14220\u003c/a\u003e from bysiber/fix-stale-iexp-raisesgroup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/79fbf93b666cac5f27c9dad047943d47b766c8d5\"\u003e\u003ccode\u003e79fbf93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14612\"\u003e#14612\u003c/a\u003e from pytest-dev/patchback/backports/9.1.x/974ed48b6...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/0d312eb876177e9f1c04262b54060a41034ebf5c\"\u003e\u003ccode\u003e0d312eb\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14611\"\u003e#14611\u003c/a\u003e from bluetech/parametrize-argvalues-typing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/9.0.3...9.1.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-asyncio` from 1.3.0 to 1.4.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-asyncio/releases\"\u003epytest-asyncio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epytest-asyncio v1.4.0\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0\"\u003e1.4.0\u003c/a\u003e - 2026-05-26\u003c/h1\u003e\n\u003ch2\u003eDeprecated\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOverriding the \u003cem\u003eevent_loop_policy\u003c/em\u003e fixture is deprecated. Use the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook instead. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook to parametrize asyncio tests with custom event loop factories.\u003c/p\u003e\n\u003cp\u003eThe hook returns a mapping of factory names to loop factories, and \u003ccode\u003epytest.mark.asyncio(loop_factories=[...])\u003c/code\u003e selects a subset of configured factories per test. When a single factory is configured, test names are unchanged.\u003c/p\u003e\n\u003cp\u003eSynchronous \u003ccode\u003e@pytest_asyncio.fixture\u003c/code\u003e functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via \u003ccode\u003easyncio.run()\u003c/code\u003e or \u003ccode\u003easyncio.set_event_loop(None)\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved the readability of the warning message that is displayed when \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e is unset (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly import \u003ccode\u003easyncio.AbstractEventLoopPolicy\u003c/code\u003e for type checking to avoid raising\na DeprecationWarning. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394\"\u003e#1394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated minimum supported pytest version to v8.4.0. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1397\"\u003e#1397\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed a \u003ccode\u003eResourceWarning: unclosed event loop\u003c/code\u003e warning that could occur when a synchronous test called \u003ccode\u003easyncio.run()\u003c/code\u003e or otherwise unset the current event loop after pytest-asyncio had run an async test or fixture. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/724\"\u003e#724\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNotes for Downstream Packagers\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded dependency on \u003ccode\u003esphinx-tabs \u0026gt;= 3.5\u003c/code\u003e to organize documentation examples into tabs. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1395\"\u003e#1395\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epytest-asyncio v1.4.0a2\u003c/h2\u003e\n\u003ch1\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/tree/1.4.0a2\"\u003e1.4.0a2\u003c/a\u003e - 2026-05-02\u003c/h1\u003e\n\u003ch2\u003eDeprecated\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eOverriding the \u003cem\u003eevent_loop_policy\u003c/em\u003e fixture is deprecated. Use the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook instead. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1419\"\u003e#1419\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdded the \u003ccode\u003epytest_asyncio_loop_factories\u003c/code\u003e hook to parametrize asyncio tests with custom event loop factories.\u003c/p\u003e\n\u003cp\u003eThe hook returns a mapping of factory names to loop factories, and \u003ccode\u003epytest.mark.asyncio(loop_factories=[...])\u003c/code\u003e selects a subset of configured factories per test. When a single factory is configured, test names are unchanged on pytest 8.4+.\u003c/p\u003e\n\u003cp\u003eSynchronous \u003ccode\u003e@pytest_asyncio.fixture\u003c/code\u003e functions now see the correct event loop when custom loop factories are configured, even when test code disrupts the current event loop (e.g., via \u003ccode\u003easyncio.run()\u003c/code\u003e or \u003ccode\u003easyncio.set_event_loop(None)\u003c/code\u003e). (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1164\"\u003e#1164\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImproved the readability of the warning message that is displayed when \u003ccode\u003easyncio_default_fixture_loop_scope\u003c/code\u003e is unset (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eOnly import \u003ccode\u003easyncio.AbstractEventLoopPolicy\u003c/code\u003e for type checking to avoid raising\na DeprecationWarning. (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1394\"\u003e#1394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-asyncio/commit/6e14cd2af9292dca1fa2b027a06bbc40b0e0e425\"\u003e\u003ccode\u003e6e14cd2\u003c/code\u003e\u003c/a\u003e chore: Prepare release of v1.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/4b900fb5d0c30949c574e55dd904ee179f858a5e\"\u003e\u003ccode\u003e4b900fb\u003c/code\u003e\u003c/a\u003e Build(deps): Bump codecov/codecov-action from 6.0.0 to 6.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/ab9f63245094865c42c940a34af724b0dec1debf\"\u003e\u003ccode\u003eab9f632\u003c/code\u003e\u003c/a\u003e Build(deps): Bump zipp from 3.23.1 to 4.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/a56fc77ecd59f781d8471b0f6a82bf58e08c95fa\"\u003e\u003ccode\u003ea56fc77\u003c/code\u003e\u003c/a\u003e Build(deps): Bump hypothesis from 6.152.6 to 6.152.8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/e8bae9bc1f197731fc1a210c0da557af7b698e6d\"\u003e\u003ccode\u003ee8bae9b\u003c/code\u003e\u003c/a\u003e Build(deps): Bump requests from 2.34.0 to 2.34.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/fc433402c570fd36a7a227ef4bc3abd4579299de\"\u003e\u003ccode\u003efc43340\u003c/code\u003e\u003c/a\u003e Build(deps): Bump idna from 3.14 to 3.15\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/762eaf5033b798b965c92afdbb2cebefa8fc3a8b\"\u003e\u003ccode\u003e762eaf5\u003c/code\u003e\u003c/a\u003e Build(deps): Bump jaraco-functools from 4.4.0 to 4.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/b62e2228c80070977baf6b77ba89d5c148af920f\"\u003e\u003ccode\u003eb62e222\u003c/code\u003e\u003c/a\u003e Build(deps): Bump click from 8.3.3 to 8.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/919044700627889d25ca63b6e7a3bc785f3137eb\"\u003e\u003ccode\u003e9190447\u003c/code\u003e\u003c/a\u003e Build(deps): Bump pydantic from 2.13.3 to 2.13.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/82a393c5e31b6ebbbd8ec2a8dafc5f35b9cf1236\"\u003e\u003ccode\u003e82a393c\u003c/code\u003e\u003c/a\u003e ci: Remove unnecessary debug output.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.6.0 to 1.7.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-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.7.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/216\"\u003epytest-dev/pytest-env#216\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e📦 build: move the testing extra to a dependency group by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/243\"\u003epytest-dev/pytest-env#243\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e👷 ci: test against Python 3.15 beta by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/245\"\u003epytest-dev/pytest-env#245\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.6.0...1.7.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.6.0...1.7.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/pytest-dev/pytest-env/commit/db01e70d52e8d0dc61e0a393a6aae20d9c8f8b8c\"\u003e\u003ccode\u003edb01e70\u003c/code\u003e\u003c/a\u003e 👷 ci: test against Python 3.15 beta (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/245\"\u003e#245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/9e3ce0dc1d1787f507001f6945d4189beb97aa6d\"\u003e\u003ccode\u003e9e3ce0d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/69dae16e3a08073c39c910b02e7514de672ca124\"\u003e\u003ccode\u003e69dae16\u003c/code\u003e\u003c/a\u003e 📦 build: move the testing extra to a dependency group (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/243\"\u003e#243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/290c20dec06782b60c2466f565045febdb59f5df\"\u003e\u003ccode\u003e290c20d\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.3.1 to 8.3.2 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/c64e6db41c6e71ff334536c60cb5348b95a75957\"\u003e\u003ccode\u003ec64e6db\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.3.0 to 8.3.1 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/241\"\u003e#241\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/23d37acba088cdc1e2639e310f987ae13aed32eb\"\u003e\u003ccode\u003e23d37ac\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/240\"\u003e#240\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/82ba4271801991502b8ad0a330fc1e309c3f51ce\"\u003e\u003ccode\u003e82ba427\u003c/code\u003e\u003c/a\u003e build(deps): bump astral-sh/setup-uv from 8.2.0 to 8.3.0 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/239\"\u003e#239\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/1a85be52b402e1b58aab6058ba2b536a039362f4\"\u003e\u003ccode\u003e1a85be5\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/238\"\u003e#238\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/63c209343c73ebca58d9f83feaf6d0f6aa2f7186\"\u003e\u003ccode\u003e63c2093\u003c/code\u003e\u003c/a\u003e :moneybag: Surface GitHub Sponsors + thanks.dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/ce3f28bc7dbd65eda26c7ad5ceec3da0efa831a5\"\u003e\u003ccode\u003ece3f28b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/237\"\u003e#237\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.6.0...1.7.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/srikumarimuddana-lab/spinrvm/pull/3474","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/srikumarimuddana-lab%2Fspinrvm/issues/3474","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/3474/packages"}},{"old_version":"1.1.5","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-05-25T04:41:50.000Z","version_change":"1.1.5 → 1.6.0","issue":{"uuid":"4514318366","node_id":"PR_kwDOERpozs7e6EfY","number":1059,"state":"open","title":"Deps: Bump the python-packages group with 27 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-25T04:41:50.000Z","updated_at":"2026-05-25T04:43:42.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Deps: Bump","group_name":"python-packages","update_count":27,"packages":[{"name":"django","old_version":"4.2.30","new_version":"5.2.14","repository_url":"https://github.com/django/django"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"weasyprint","old_version":"66.0","new_version":"68.1","repository_url":"https://github.com/Kozea/WeasyPrint"},{"name":"pylint","old_version":"3.3.9","new_version":"4.0.5","repository_url":"https://github.com/pylint-dev/pylint"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-django","old_version":"4.11.1","new_version":"4.12.0","repository_url":"https://github.com/pytest-dev/pytest-django"},{"name":"pytest-env","old_version":"1.1.5","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"pontos","old_version":"26.2.0","new_version":"26.5.0","repository_url":"https://github.com/greenbone/pontos"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"astroid","old_version":"3.3.11","new_version":"4.0.4","repository_url":"https://github.com/pylint-dev/astroid"},{"name":"certifi","old_version":"2026.4.22","new_version":"2026.5.20","repository_url":"https://github.com/certifi/python-certifi"},{"name":"coverage","old_version":"7.10.7","new_version":"7.14.0","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"cssselect2","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/Kozea/cssselect2"},{"name":"fonttools","old_version":"4.60.2","new_version":"4.63.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"idna","old_version":"3.15","new_version":"3.16","repository_url":"https://github.com/kjd/idna"},{"name":"iniconfig","old_version":"2.1.0","new_version":"2.3.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"isort","old_version":"6.1.0","new_version":"8.0.1","repository_url":"https://github.com/PyCQA/isort"},{"name":"lxml","old_version":"6.1.0","new_version":"6.1.1","repository_url":"https://github.com/lxml/lxml"},{"name":"markdown-it-py","old_version":"3.0.0","new_version":"4.2.0","repository_url":"https://github.com/executablebooks/markdown-it-py"},{"name":"platformdirs","old_version":"4.4.0","new_version":"4.9.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pycparser","old_version":"2.23","new_version":"3.0","repository_url":"https://github.com/eliben/pycparser"},{"name":"pydyf","old_version":"0.11.0","new_version":"0.12.1","repository_url":"https://github.com/CourtBouillon/pydyf"},{"name":"requests","old_version":"2.32.5","new_version":"2.34.2","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.15.13","new_version":"0.15.14","repository_url":"https://github.com/astral-sh/ruff"},{"name":"tinycss2","old_version":"1.4.0","new_version":"1.5.1","repository_url":"https://github.com/Kozea/tinycss2"},{"name":"tinyhtml5","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/CourtBouillon/tinyhtml5"},{"name":"zopfli","old_version":"0.2.3.post1","new_version":"0.4.1","repository_url":"https://github.com/fonttools/py-zopfli"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 27 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [django](https://github.com/django/django) | `4.2.30` | `5.2.14` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [weasyprint](https://github.com/Kozea/WeasyPrint) | `66.0` | `68.1` |\n| [pylint](https://github.com/pylint-dev/pylint) | `3.3.9` | `4.0.5` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.3` |\n| [pytest-django](https://github.com/pytest-dev/pytest-django) | `4.11.1` | `4.12.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.1.5` | `1.6.0` |\n| [pontos](https://github.com/greenbone/pontos) | `26.2.0` | `26.5.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [astroid](https://github.com/pylint-dev/astroid) | `3.3.11` | `4.0.4` |\n| [certifi](https://github.com/certifi/python-certifi) | `2026.4.22` | `2026.5.20` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.10.7` | `7.14.0` |\n| [cssselect2](https://github.com/Kozea/cssselect2) | `0.8.0` | `0.9.0` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.60.2` | `4.63.0` |\n| [idna](https://github.com/kjd/idna) | `3.15` | `3.16` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.1.0` | `2.3.0` |\n| [isort](https://github.com/PyCQA/isort) | `6.1.0` | `8.0.1` |\n| [lxml](https://github.com/lxml/lxml) | `6.1.0` | `6.1.1` |\n| [markdown-it-py](https://github.com/executablebooks/markdown-it-py) | `3.0.0` | `4.2.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.4.0` | `4.9.6` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.23` | `3.0` |\n| [pydyf](https://github.com/CourtBouillon/pydyf) | `0.11.0` | `0.12.1` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.34.2` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.13` | `0.15.14` |\n| [tinycss2](https://github.com/Kozea/tinycss2) | `1.4.0` | `1.5.1` |\n| [tinyhtml5](https://github.com/CourtBouillon/tinyhtml5) | `2.0.0` | `2.1.0` |\n| [zopfli](https://github.com/fonttools/py-zopfli) | `0.2.3.post1` | `0.4.1` |\n\nUpdates `django` from 4.2.30 to 5.2.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/024c26b1e77ea5b1b158265167ade47927a64c06\"\u003e\u003ccode\u003e024c26b\u003c/code\u003e\u003c/a\u003e [5.2.x] Bumped version for 5.2.14 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/2115d4eaee15107f5cd290d7cfcc5ffe3ad43661\"\u003e\u003ccode\u003e2115d4e\u003c/code\u003e\u003c/a\u003e [5.2.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/47cf968c125e3fab317e10fe150ec479e745f995\"\u003e\u003ccode\u003e47cf968\u003c/code\u003e\u003c/a\u003e [5.2.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/2ec27eda3ba6c14f0856e6e3eb1df07c41fd95e6\"\u003e\u003ccode\u003e2ec27ed\u003c/code\u003e\u003c/a\u003e [5.2.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/ed18840c8cd1be81fdb3955cbfc9459989d6df68\"\u003e\u003ccode\u003eed18840\u003c/code\u003e\u003c/a\u003e [5.2.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/de3f622b7fa72aee68650f15263f2788b626680a\"\u003e\u003ccode\u003ede3f622\u003c/code\u003e\u003c/a\u003e [5.2.x] Added stub release notes and release date for 5.2.14.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/fb61c8a6e902abc885048a1a78592a4bd4329f87\"\u003e\u003ccode\u003efb61c8a\u003c/code\u003e\u003c/a\u003e [5.2.x] Refs CVE-2026-4292 -- Isolated new test in AdminViewListEditable.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/bd1a7583061a96059ea560eb7b59bebce4240778\"\u003e\u003ccode\u003ebd1a758\u003c/code\u003e\u003c/a\u003e [5.2.x] Fixed two issues in release helper scripts/verify_release.sh.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/da57aaad76e674fdb01b741974acf229d3ac4132\"\u003e\u003ccode\u003eda57aaa\u003c/code\u003e\u003c/a\u003e [5.2.x] Added CVE-2026-3902, CVE-2026-4277, CVE-2026-4292, CVE-2026-33033, an...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django/django/commit/c9a8bdbc4839a442b1a0453bd8ed38def4776139\"\u003e\u003ccode\u003ec9a8bdb\u003c/code\u003e\u003c/a\u003e [5.2.x] Post-release version bump.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django/django/compare/4.2.30...5.2.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 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/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values 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/9928\"\u003eencode/django-rest-framework#9928\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.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.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 Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support 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/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field 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/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format 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/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e 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/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher 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/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation 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/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `weasyprint` from 66.0 to 68.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/WeasyPrint/releases\"\u003eweasyprint's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev68.1\u003c/h2\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2662\"\u003e#2662\u003c/a\u003e: Don’t crash when SVG clip paths are not in defs tags\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2665\"\u003e#2665\u003c/a\u003e: Fix position of box bounding box\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2663\"\u003e#2663\u003c/a\u003e: Fix transparency with Acrobat and Edge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2666\"\u003e#2666\u003c/a\u003e: Don’t rely on random default font to define test page size\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2670\"\u003e#2670\u003c/a\u003e: Fix pattern detection of URL schemes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/pull/2671\"\u003e#2671\u003c/a\u003e: Improve API compatibility between URLFetcherResponse and addinfourl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2672\"\u003e#2672\u003c/a\u003e: Fix charset for old URL fetcher requests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/pull/2675\"\u003e#2675\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2673\"\u003e#2673\u003c/a\u003e: Fix calc for many properties\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eGuillaume Ayoub\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBackers and sponsors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSpacinov\u003c/li\u003e\n\u003cli\u003eSyslifters\u003c/li\u003e\n\u003cli\u003eKobalt\u003c/li\u003e\n\u003cli\u003eSimon Sapin\u003c/li\u003e\n\u003cli\u003eGrip Angebotssoftware\u003c/li\u003e\n\u003cli\u003eManuel Barkhau\u003c/li\u003e\n\u003cli\u003eSimonsoft\u003c/li\u003e\n\u003cli\u003eKontextWork\u003c/li\u003e\n\u003cli\u003eMenutech\u003c/li\u003e\n\u003cli\u003eTrainingSparkle\u003c/li\u003e\n\u003cli\u003eHealthchecks.io\u003c/li\u003e\n\u003cli\u003eMethod B\u003c/li\u003e\n\u003cli\u003eFieldHub\u003c/li\u003e\n\u003cli\u003eHammerbacher\u003c/li\u003e\n\u003cli\u003eYanal-Yves Fargialla\u003c/li\u003e\n\u003cli\u003eMorntag\u003c/li\u003e\n\u003cli\u003ePiloterr\u003c/li\u003e\n\u003cli\u003eXavid\u003c/li\u003e\n\u003cli\u003eCharlie S.\u003c/li\u003e\n\u003cli\u003eProthesis Dental Solutions\u003c/li\u003e\n\u003cli\u003eKai DeLorenzo\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev68.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eThis is a security update (CVE-2025-68616).\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eWe strongly recommend to upgrade WeasyPrint to the latest version if you use the \u003ccode\u003edefault_url_fetcher\u003c/code\u003e function in your custom URL fetcher, or if you use the \u003ccode\u003eallowed_protocols\u003c/code\u003e parameter of the \u003ccode\u003edefault_url_fetcher\u003c/code\u003e function.\u003c/p\u003e\n\u003cp\u003eRead about this release \u003ca href=\"https://www.courtbouillon.org/blog/00061-weasyprint-68/\"\u003eon our blog\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eSecurity\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/Kozea/WeasyPrint/blob/main/docs/changelog.rst\"\u003eweasyprint's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 68.1\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-02-06.\u003c/p\u003e\n\u003cp\u003eBug fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#2662](https://github.com/Kozea/WeasyPrint/issues/2662) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2662\u0026gt;\u003c/code\u003e_:\nDon’t crash when SVG clip paths are not in defs tags\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2665](https://github.com/Kozea/WeasyPrint/issues/2665) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2665\u0026gt;\u003c/code\u003e_:\nFix position of box bounding box\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2663](https://github.com/Kozea/WeasyPrint/issues/2663) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2663\u0026gt;\u003c/code\u003e_:\nFix transparency with Acrobat and Edge\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2666](https://github.com/Kozea/WeasyPrint/issues/2666) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2666\u0026gt;\u003c/code\u003e_:\nDon’t rely on random default font to define test page size\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2670](https://github.com/Kozea/WeasyPrint/issues/2670) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2670\u0026gt;\u003c/code\u003e_:\nFix pattern detection of URL schemes\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2671](https://github.com/Kozea/WeasyPrint/issues/2671) \u0026lt;https://github.com/Kozea/WeasyPrint/pull/2671\u0026gt;\u003c/code\u003e_:\nImprove API compatibility between URLFetcherResponse and addinfourl\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2672](https://github.com/Kozea/WeasyPrint/issues/2672) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2672\u0026gt;\u003c/code\u003e_:\nFix charset for old URL fetcher requests\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e[#2675](https://github.com/Kozea/WeasyPrint/issues/2675) \u0026lt;https://github.com/Kozea/WeasyPrint/pull/2675\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#2673](https://github.com/Kozea/WeasyPrint/issues/2673) \u0026lt;https://github.com/Kozea/WeasyPrint/issues/2673\u0026gt;\u003c/code\u003e\u003c/em\u003e:\nFix calc for many properties\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eContributors:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGuillaume Ayoub\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eBackers and sponsors:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSpacinov\u003c/li\u003e\n\u003cli\u003eSyslifters\u003c/li\u003e\n\u003cli\u003eKobalt\u003c/li\u003e\n\u003cli\u003eSimon Sapin\u003c/li\u003e\n\u003cli\u003eGrip Angebotssoftware\u003c/li\u003e\n\u003cli\u003eManuel Barkhau\u003c/li\u003e\n\u003cli\u003eSimonsoft\u003c/li\u003e\n\u003cli\u003eKontextWork\u003c/li\u003e\n\u003cli\u003eMenutech\u003c/li\u003e\n\u003cli\u003eTrainingSparkle\u003c/li\u003e\n\u003cli\u003eHealthchecks.io\u003c/li\u003e\n\u003cli\u003eMethod B\u003c/li\u003e\n\u003cli\u003eFieldHub\u003c/li\u003e\n\u003cli\u003eHammerbacher\u003c/li\u003e\n\u003cli\u003eYanal-Yves Fargialla\u003c/li\u003e\n\u003cli\u003eMorntag\u003c/li\u003e\n\u003cli\u003ePiloterr\u003c/li\u003e\n\u003cli\u003eXavid\u003c/li\u003e\n\u003cli\u003eCharlie S.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/88d466df43b205c6abbc385e2832cbe6c77aeddc\"\u003e\u003ccode\u003e88d466d\u003c/code\u003e\u003c/a\u003e Version 68.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/d5dab6e9f173826208082f24546977927d9c3c0c\"\u003e\u003ccode\u003ed5dab6e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Kozea/WeasyPrint/issues/2675\"\u003e#2675\u003c/a\u003e from Kozea/fix-calc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/e752cb3fde54d13cdc5eb4a7fdb80fd172a3c28b\"\u003e\u003ccode\u003ee752cb3\u003c/code\u003e\u003c/a\u003e Allow calc for more properties\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/66928cec7a2b000c706b5699518adbcedeff6e71\"\u003e\u003ccode\u003e66928ce\u003c/code\u003e\u003c/a\u003e Allow calc for preferred content width\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/c155e217b8ff1624f536113ab54622effece3ad8\"\u003e\u003ccode\u003ec155e21\u003c/code\u003e\u003c/a\u003e Allow calc for text-underline-offset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/9f5ca24e816a250b3c35cc5dda4b871cbc8d829a\"\u003e\u003ccode\u003e9f5ca24\u003c/code\u003e\u003c/a\u003e Allow calc for text-decoration-thickness\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/b2acd6d5eb7fc00920a883169b62ad13394e1f38\"\u003e\u003ccode\u003eb2acd6d\u003c/code\u003e\u003c/a\u003e Allow calc for hyphenate-limit-zone\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/321bcf696acb710115a467d04fc0b5f640faf627\"\u003e\u003ccode\u003e321bcf6\u003c/code\u003e\u003c/a\u003e Simplify, test and fix wrong calc() values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/38d3f53154a2c3c3d7b29dd11e01ed21f61fc2ab\"\u003e\u003ccode\u003e38d3f53\u003c/code\u003e\u003c/a\u003e Fix and test calc() function for table width\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kozea/WeasyPrint/commit/4dfd05f13dfeadf36d44e8f72ee3f2df0b4c6945\"\u003e\u003ccode\u003e4dfd05f\u003c/code\u003e\u003c/a\u003e Don’t iterate over all lines when trying to report footnotes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kozea/WeasyPrint/compare/v66.0...v68.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pylint` from 3.3.9 to 4.0.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/88e1ab7545a4af4aea15c305a154c164a95ab842\"\u003e\u003ccode\u003e88e1ab7\u003c/code\u003e\u003c/a\u003e Bump pylint to 4.0.5, update changelog (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10860\"\u003e#10860\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/d96d489a1743d32b6bfa53fc0f69a4333209a146\"\u003e\u003ccode\u003ed96d489\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Relax isort version constraint to allow isort 8 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/0b08ccb014c265700f244a885bdcbdfa3a03de46\"\u003e\u003ccode\u003e0b08ccb\u003c/code\u003e\u003c/a\u003e Fix dynamic color mapping for \u0026quot;fail-on\u0026quot; messages when using multiple reporter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/154dba43276e8232a2e1cb8f90bfcc63886f3460\"\u003e\u003ccode\u003e154dba4\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix FP for \u003ccode\u003einvalid-name\u003c/code\u003e with \u003ccode\u003etyping.Final\u003c/code\u003e on...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/7b73bfdedf275935b9c5b43a6aeda5cc648b4847\"\u003e\u003ccode\u003e7b73bfd\u003c/code\u003e\u003c/a\u003e Disable unspecified-encoding for py-version above Python 3.15 (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10800\"\u003e#10800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/4cc98be8b7786dbc6692493fe9cedb8585af5518\"\u003e\u003ccode\u003e4cc98be\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix setting options for import order checker (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f0d30a27b510d69f846e3aaa0054cf0a1412923c\"\u003e\u003ccode\u003ef0d30a2\u003c/code\u003e\u003c/a\u003e Sync astroid version with requirements file again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/38bdf024648724e6aea017e62d3b57cb44097ec3\"\u003e\u003ccode\u003e38bdf02\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix \u003ccode\u003elogging-unsupported-format\u003c/code\u003e when logging ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f08c33ae3e691eed868e49c0d15270dc6e6a0d6c\"\u003e\u003ccode\u003ef08c33a\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Properly detect \u003ccode\u003eself.fail()\u003c/code\u003e as a terminating...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/e16f942166511d6fb4427e503a734152fae0c4fe\"\u003e\u003ccode\u003ee16f942\u003c/code\u003e\u003c/a\u003e Bump pylint to 4.0.4, update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pylint-dev/pylint/compare/v3.3.9...v4.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.3\"\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.11.1 to 4.12.0\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.12.0 (2026-02-14)\u003c/h2\u003e\n\u003cp\u003eCompatibility\n^^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eOfficial Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eDropped support for Python 3.9, minimum version is now Python 3.10.\u003c/li\u003e\n\u003cli\u003eOfficial Django 6.0 support.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements\n^^^^^^^^^^^^\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe :ref:\u003ccode\u003emultiple databases \u0026lt;multi-db\u0026gt;\u003c/code\u003e support added in v4.3.0 is no longer considered experimental.\u003c/li\u003e\n\u003cli\u003eAdded :func:\u003ccode\u003e@pytest.mark.django_isolate_apps \u0026lt;pytest.mark.django_isolate_apps\u0026gt;\u003c/code\u003e\nfor isolating Django's app registry in pytest tests, and a\n:fixture:\u003ccode\u003edjango_isolated_apps\u003c/code\u003e fixture to access the isolated Apps registry instance if needed.\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/a2a94956cc24bb30030510710f0f27e61efb0cf0\"\u003e\u003ccode\u003ea2a9495\u003c/code\u003e\u003c/a\u003e Release 4.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/020bc237ac7be78ab3a2780d07637f77166a6263\"\u003e\u003ccode\u003e020bc23\u003c/code\u003e\u003c/a\u003e tests: make sure access to default can also be blocked\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/bcefbe832468f764b0f2665548aae8a9f75820a7\"\u003e\u003ccode\u003ebcefbe8\u003c/code\u003e\u003c/a\u003e Add support for isolating apps in tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/39c8dcc249d5c103d29d170a5ad63a2fe7067049\"\u003e\u003ccode\u003e39c8dcc\u003c/code\u003e\u003c/a\u003e plugin: add a note why we reorder tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/1830acd6193ad6d851131c9ed805c003c10ce27a\"\u003e\u003ccode\u003e1830acd\u003c/code\u003e\u003c/a\u003e pyproject.toml: require pytest 9 for self tests, switch to native toml config...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/f19da084b9b8b131c5ae178f1a8a907ec6e3567b\"\u003e\u003ccode\u003ef19da08\u003c/code\u003e\u003c/a\u003e Fix the order of the test cases that use the live_server fixture\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/92858eed573ce1786d0f67d242426c7f8f75dd7b\"\u003e\u003ccode\u003e92858ee\u003c/code\u003e\u003c/a\u003e docs: add pytest 9.0+ native TOML configuration format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/3f550d93947acda430c27be578b7619c25abddc8\"\u003e\u003ccode\u003e3f550d9\u003c/code\u003e\u003c/a\u003e build(deps): bump hynek/build-and-inspect-python-package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/1f50dd29b8778e645ca7a88a285b30a9c788afc4\"\u003e\u003ccode\u003e1f50dd2\u003c/code\u003e\u003c/a\u003e Drop obsolete traces of Django 5.0 in CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-django/commit/247ec1c365da3d25f230dde22b7a0e1805749d09\"\u003e\u003ccode\u003e247ec1c\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ePytestCollectionWarning\u003c/code\u003e for \u003ccode\u003eTestRunner\u003c/code\u003e class (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-django/issues/1259\"\u003e#1259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-django/compare/v4.11.1...v4.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.1.5 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 build(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/192\"\u003epytest-dev/pytest-env#192\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.1.5...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pontos` from 26.2.0 to 26.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/greenbone/pontos/releases\"\u003epontos's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003epontos 26.5.0\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.3..26.5.0\"\u003e26.5.0\u003c/a\u003e - 2026-05-19\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:construction_worker: Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u0026quot;Status Change\u0026quot; to \u0026quot;CVE Status Change\u0026quot; by \u003ca href=\"https://github.com/n-thumann\"\u003e\u003ccode\u003e@​n-thumann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1220\"\u003e#1220\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:ship: Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump urllib3 from 2.6.3 to 2.7.0 by \u003ca href=\"https://github.com/dependabot%5Bbot%5D\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1217\"\u003e#1217\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.2..26.4.3\"\u003e26.4.3\u003c/a\u003e - 2026-04-29\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:sparkles: Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCVE Change event name \u0026quot;Data Remediation\u0026quot; by \u003ca href=\"https://github.com/n-thumann\"\u003e\u003ccode\u003e@​n-thumann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1214\"\u003e#1214\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/greenbone/pontos/compare/v26.4.1..26.4.2\"\u003e26.4.2\u003c/a\u003e - 2026-04-27\u003c/h2\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:sparkles: Added\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eTwo test cases for XML files by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1211\"\u003e#1211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:construction_worker: Changed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove XML declarations from templates by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/9e2d78c64bcd5ffc4fb793d3770bdb409cf56b1e\"\u003e9e2d78c\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:bug: Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent duplication and adding of XML declarations by \u003ca href=\"https://github.com/wiegandm\"\u003e\u003ccode\u003e@​wiegandm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/ee996b5771ddb3e0183b00ad34ffda45988d6dbc\"\u003eee996b5\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:wrench: Miscellaneous\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse git-cliff for release changelog generation by \u003ca href=\"https://github.com/bjoernricks\"\u003e\u003ccode\u003e@​bjoernricks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/greenbone/pontos/commit/af9e7f10db1b8cab9912e0c0827380feab952194\"\u003eaf9e7f1\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the conventional commits workflow by \u003ca href=\"https://github.com/bjoernricks\"\u003e\u003ccode\u003e@​bjoernricks\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1210\"\u003e#1210\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003c!-- raw HTML omitted --\u003e:ship: Dependencies\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump the python-packages group with 8 updates by \u003ca href=\"https://github.com/dependabot%5Bbot%5D\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/greenbone/pontos/pull/1209\"\u003e#1209\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epontos 26.4.1\u003c/h2\u003e\n\u003ch2\u003e[26.4.1] - 2026-04-21\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/greenbone/pontos/commit/a380de64b4e171a476b1cf3172319ee180ed818f\"\u003e\u003ccode\u003ea380de6\u003c/code\u003e\u003c/a\u003e Automatic release to 26.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/12b9dd283e3d261098719ac8ce94625f73e98684\"\u003e\u003ccode\u003e12b9dd2\u003c/code\u003e\u003c/a\u003e Change: Rename \u0026quot;Status Change\u0026quot; to \u0026quot;CVE Status Change\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/fd0a178d18da0d3ead9de7c1d9933364d6cfafac\"\u003e\u003ccode\u003efd0a178\u003c/code\u003e\u003c/a\u003e Deps: Bump urllib3 from 2.6.3 to 2.7.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/00adf5473d50e7aa0e0839984a8ba44447e28c0d\"\u003e\u003ccode\u003e00adf54\u003c/code\u003e\u003c/a\u003e Update: Greenbone license header\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/a793376e247ac9a8e0994d1ba56cd2e44bbaf575\"\u003e\u003ccode\u003ea793376\u003c/code\u003e\u003c/a\u003e Automatic adjustments after release [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/7e3dffb21ddab71884678eac10215767319d29f4\"\u003e\u003ccode\u003e7e3dffb\u003c/code\u003e\u003c/a\u003e Automatic release to 26.4.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/f2f04018b6e2eabb1b64123445dadbcfdb85d112\"\u003e\u003ccode\u003ef2f0401\u003c/code\u003e\u003c/a\u003e Add: CVE Change event name \u0026quot;Data Remediation\u0026quot; (\u003ca href=\"https://redirect.github.com/greenbone/pontos/issues/1214\"\u003e#1214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/a81ba0338193a9e889da80825487a86be7179ee2\"\u003e\u003ccode\u003ea81ba03\u003c/code\u003e\u003c/a\u003e Automatic adjustments after release [skip ci]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/46c3185d68b38c4889db97a0e89fd2622728c341\"\u003e\u003ccode\u003e46c3185\u003c/code\u003e\u003c/a\u003e Automatic release to 26.4.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/greenbone/pontos/commit/31d04650f4750791cbfdfbc3afa267693e709051\"\u003e\u003ccode\u003e31d0465\u003c/code\u003e\u003c/a\u003e Use snake_case for release-version output variables\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/greenbone/pontos/compare/v26.2.0...v26.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `astroid` from 3.3.11 to 4.0.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pylint-dev/astroid/releases\"\u003eastroid's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.0.4\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.4?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-02-07\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eis_namespace()\u003c/code\u003e crash when search locations contain \u003ccode\u003epathlib.Path\u003c/code\u003e objects.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2942\"\u003e#2942\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.3\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.3?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-01-03\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix inference of \u003ccode\u003eIfExp\u003c/code\u003e (ternary expression) nodes to avoid prematurely narrowing\nresults in the face of inference ambiguity.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2899\"\u003e#2899\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix base class inference for dataclasses using the PEP 695 typing syntax.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10788\"\u003epylint-dev/pylint#10788\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.2\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.2?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-11-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHandle FunctionDef blockstart_tolineno edge cases correctly.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2880\"\u003e#2880\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eHTTPMethod\u003c/code\u003e enum support to brain module for Python 3.11+.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10624\"\u003epylint-dev/pylint#10624\u003c/a\u003e\nCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2877\"\u003e#2877\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.1\u003c/h2\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.1?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress \u003ccode\u003eSyntaxWarning\u003c/code\u003e for invalid escape sequences and return in finally on\nPython 3.14 when parsing modules.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAssign \u003ccode\u003eImport\u003c/code\u003e and \u003ccode\u003eImportFrom\u003c/code\u003e nodes to module locals if used with \u003ccode\u003eglobal\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10632\"\u003epylint-dev/pylint#10632\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev4.0.0\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/pylint-dev/astroid/blob/main/ChangeLog\"\u003eastroid's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.4?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-02-07\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ccode\u003eis_namespace()\u003c/code\u003e crash when search locations contain \u003ccode\u003epathlib.Path\u003c/code\u003e objects.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2942\"\u003e#2942\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.3?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2026-01-03\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix inference of \u003ccode\u003eIfExp\u003c/code\u003e (ternary expression) nodes to avoid prematurely narrowing\nresults in the face of inference ambiguity.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2899\"\u003e#2899\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix base class inference for dataclasses using the PEP 695 typing syntax.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10788\"\u003epylint-dev/pylint#10788\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.2?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-11-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eHandle FunctionDef blockstart_tolineno edge cases correctly.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2880\"\u003e#2880\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eHTTPMethod\u003c/code\u003e enum support to brain module for Python 3.11+.\u003c/p\u003e\n\u003cp\u003eRefs \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10624\"\u003epylint-dev/pylint#10624\u003c/a\u003e\nCloses \u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2877\"\u003e#2877\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.1?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-11\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eSuppress \u003ccode\u003eSyntaxWarning\u003c/code\u003e for invalid escape sequences and return in finally on\nPython 3.14 when parsing modules.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAssign \u003ccode\u003eImport\u003c/code\u003e and \u003ccode\u003eImportFrom\u003c/code\u003e nodes to module locals if used with \u003ccode\u003eglobal\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003eCloses \u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10632\"\u003epylint-dev/pylint#10632\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eWhat's New in astroid 4.0.0?\u003c/h1\u003e\n\u003cp\u003eRelease date: 2025-10-05\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/pylint-dev/astroid/commit/019feb6018eef32a0e3a25d8153427a537961882\"\u003e\u003ccode\u003e019feb6\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.4, update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/b25ee05e15b70693a4d740ac563568e0b618ec0d\"\u003e\u003ccode\u003eb25ee05\u003c/code\u003e\u003c/a\u003e Fix namespace detection crash (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2949\"\u003e#2949\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/b978037e67f233f4366de4ccbcdad2c627474477\"\u003e\u003ccode\u003eb978037\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.3, update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/5476bc3dad1fe83bd4725ae284229a51326bd97c\"\u003e\u003ccode\u003e5476bc3\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Wrong inference with default argument values (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2\"\u003e#2\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/ae761dca40d1aa1b7e7b941e535a819acd83f9a5\"\u003e\u003ccode\u003eae761dc\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix base class inference for dataclasses with PE...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/077c51fa1eb737a13d6888873dc432cf8cbbe9e0\"\u003e\u003ccode\u003e077c51f\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] [typing] Add sys check guard for typing.Self for...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/f3255d1611277ecc3d6f338d551ce8437f66ae72\"\u003e\u003ccode\u003ef3255d1\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Skip mypy install for pypy (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2906\"\u003e#2906\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/d2823f2cb764b3d63c91998f6cd392629147c095\"\u003e\u003ccode\u003ed2823f2\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] [ci] Fix windows cache key (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2903\"\u003e#2903\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/05c79e1e57da03875a8fd8a30715688f179585da\"\u003e\u003ccode\u003e05c79e1\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Improve self argument typing (\u003ca href=\"https://redirect.github.com/pylint-dev/astroid/issues/2904\"\u003e#2904\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/astroid/commit/a068430290b375a06f6eccdcea7d5026995172ba\"\u003e\u003ccode\u003ea068430\u003c/code\u003e\u003c/a\u003e Bump astroid to 4.0.2, update changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pylint-dev/astroid/compare/v3.3.11...v4.0.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\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 `coverage` from 7.10.7 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\u003ch2\u003eVersion 7.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\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/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.10.7...7.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cssselect2` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kozea/cssselect2/releases\"\u003ecssselect2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, support 3.14\u003c/li\u003e\n\u003cli\u003eSupport :host\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/Kozea/cssselect2/blob/main/docs/changelog.rst\"\u003ecssselect2's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eChangelog\u003c/h2\u003e\n\u003cp\u003eVersion 0.9.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2026-02-12.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.9, support 3.14\u003c/li\u003e\n\u003cli\u003eSupport :host\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.8.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2025-03-05.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support of Python 3.8 and 3.9, support 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eHandle case-sensitive and case-insensitive attribute selectors\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.7.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-09-19.\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport :has selector\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eVersion 0.6.0\n.............\u003c/p\u003e\n\u003cp\u003eReleased on 2022-04-15.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eThis version deprecates the \u003ccode\u003eiter_ancestors\u003c/code\u003e and \u003ccode\u003eiter_previous_siblings\u003c/code\u003e\nmethods, that will be removed in 0.7.0. Use the \u003ccode\u003ean...\n\n_Description has been truncated_","html_url":"https://github.com/greenbone/pheme/pull/1059","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/greenbone%2Fpheme/issues/1059","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1059/packages"}},{"old_version":"1.1.5","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-05-05T03:03:18.000Z","version_change":"1.1.5 → 1.6.0","issue":{"uuid":"4381203561","node_id":"PR_kwDOPEqTzc7YPwRn","number":10,"state":"open","title":"Bump pytest-env from 1.1.5 to 1.6.0","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-05T03:03:18.000Z","updated_at":"2026-05-05T03:03:19.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pytest-env","old_version":"1.1.5","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pytest-env](https://github.com/pytest-dev/pytest-env) from 1.1.5 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 build(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/192\"\u003epytest-dev/pytest-env#192\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.1.5...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pytest-env\u0026package-manager=uv\u0026previous-version=1.1.5\u0026new-version=1.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/Rev4nchist/FastMCP/pull/10","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Rev4nchist%2FFastMCP/issues/10","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/10/packages"}},{"old_version":"1.3.2","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-04-25T17:30:14.000Z","version_change":"1.3.2 → 1.6.0","issue":{"uuid":"4328788762","node_id":"PR_kwDOQnZ8zc7Vn8p7","number":67,"state":"closed","title":"deps(pip): bump the pip-minor-and-patch group across 1 directory with 42 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-25T17:36:23.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-25T17:30:14.000Z","updated_at":"2026-04-25T17:36:25.000Z","time_to_close":369,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(pip): bump","group_name":"pip-minor-and-patch","update_count":42,"packages":[{"name":"dj-database-url","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/jazzband/dj-database-url"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"django-environ","old_version":"0.12.1","new_version":"0.13.0","repository_url":"https://github.com/joke2k/django-environ"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"bandit","old_version":"1.9.3","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"boto3","old_version":"1.42.39","new_version":"1.42.96","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.39","new_version":"1.42.96","repository_url":"https://github.com/boto/botocore"},{"name":"cbor2","old_version":"5.8.0","new_version":"5.9.0","repository_url":"https://github.com/agronholm/cbor2"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.1","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"daphne","old_version":"4.1.2","new_version":"4.2.1","repository_url":"https://github.com/django/daphne"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"filelock","old_version":"3.24.2","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"identify","old_version":"2.6.16","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.11","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"librt","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/mypyc/librt"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"numpy","old_version":"2.4.2","new_version":"2.4.4","repository_url":"https://github.com/numpy/numpy"},{"name":"pathspec","old_version":"1.0.3","new_version":"1.1.0","repository_url":"https://github.com/cpburnz/python-pathspec"},{"name":"platformdirs","old_version":"4.9.2","new_version":"4.9.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyasn1","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyopenssl","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/pyca/pyopenssl"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.3.2","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.15.1","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/boto/s3transfer"},{"name":"stevedore","old_version":"5.6.0","new_version":"5.7.0"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wheel","old_version":"0.46.3","new_version":"0.47.0","repository_url":"https://github.com/pypa/wheel"},{"name":"zope-interface","old_version":"8.2","new_version":"8.4","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-and-patch group with 42 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dj-database-url](https://github.com/jazzband/dj-database-url) | `3.1.0` | `3.1.2` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.10.9` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [django-environ](https://github.com/joke2k/django-environ) | `0.12.1` | `0.13.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [boto3](https://github.com/boto/boto3) | `1.42.39` | `1.42.96` |\n| [botocore](https://github.com/boto/botocore) | `1.42.39` | `1.42.96` |\n| [cbor2](https://github.com/agronholm/cbor2) | `5.8.0` | `5.9.0` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.3` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [daphne](https://github.com/django/daphne) | `4.1.2` | `4.2.1` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.24.2` | `3.29.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.16` | `2.6.19` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.13` |\n| [librt](https://github.com/mypyc/librt) | `0.8.0` | `0.9.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.2` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.2` | `2.4.4` |\n| [pathspec](https://github.com/cpburnz/python-pathspec) | `1.0.3` | `1.1.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.2` | `4.9.6` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.25.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.2` | `0.6.3` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.12.1` |\n| [pyopenssl](https://github.com/pyca/pyopenssl) | `26.0.0` | `26.1.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.3.2` | `1.6.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.15.12` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.16.1` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.6.0` | `5.7.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250913` | `2.33.0.20260408` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.41.0` | `0.46.0` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.3` | `0.47.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `8.2` | `8.4` |\n\n\nUpdates `dj-database-url` from 3.1.0 to 3.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jazzband/dj-database-url/releases\"\u003edj-database-url's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump cryptography from 46.0.3 to 46.0.5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/293\"\u003ejazzband/dj-database-url#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump django from 5.2.9 to 5.2.11 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/294\"\u003ejazzband/dj-database-url#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump urllib3 from 2.6.2 to 2.6.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/295\"\u003ejazzband/dj-database-url#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump wheel from 0.45.1 to 0.46.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/296\"\u003ejazzband/dj-database-url#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/297\"\u003ejazzband/dj-database-url#297\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/293\"\u003ejazzband/dj-database-url#293\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.1...v3.1.2\"\u003ehttps://github.com/jazzband/dj-database-url/compare/v3.1.1...v3.1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests directory to source distribution by \u003ca href=\"https://github.com/yohaann196\"\u003e\u003ccode\u003e@​yohaann196\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/285\"\u003ejazzband/dj-database-url#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch linting and formatting from flake8+isort+black to ruff; add typos to pre-commit; fix typos by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/281\"\u003ejazzband/dj-database-url#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd project URLs to pyproject.toml by \u003ca href=\"https://github.com/luzfcb\"\u003e\u003ccode\u003e@​luzfcb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/287\"\u003ejazzband/dj-database-url#287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate .pre-commit-config.yaml to use pinned version numbers. by \u003ca href=\"https://github.com/mattseymour\"\u003e\u003ccode\u003e@​mattseymour\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/289\"\u003ejazzband/dj-database-url#289\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/291\"\u003ejazzband/dj-database-url#291\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/yohaann196\"\u003e\u003ccode\u003e@​yohaann196\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/285\"\u003ejazzband/dj-database-url#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/luzfcb\"\u003e\u003ccode\u003e@​luzfcb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/287\"\u003ejazzband/dj-database-url#287\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.1\"\u003ehttps://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md\"\u003edj-database-url's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCHANGELOG\u003c/h1\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e77149f799f971f85d2cd1ccf01dbd3f0eb69cb5\"\u003e\u003ccode\u003ee77149f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/297\"\u003e#297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/6beffe6de6a2d6284d6c5c76ee6753cc8787aee2\"\u003e\u003ccode\u003e6beffe6\u003c/code\u003e\u003c/a\u003e Fix a regression in adding tests/ dir to source package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/f9c31305ae85f1a22d2102da0b83acb577154d97\"\u003e\u003ccode\u003ef9c3130\u003c/code\u003e\u003c/a\u003e Bump wheel from 0.45.1 to 0.46.2 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/5337838ac302faaec32c969712dc44dfe28d4e15\"\u003e\u003ccode\u003e5337838\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.6.2 to 2.6.3 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/6fc366459ff21030c49ba613d1c129f615ee4228\"\u003e\u003ccode\u003e6fc3664\u003c/code\u003e\u003c/a\u003e Bump django from 5.2.9 to 5.2.11 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/19805c97f3667da652ce57df0be0e02a1187d6b8\"\u003e\u003ccode\u003e19805c9\u003c/code\u003e\u003c/a\u003e Bump cryptography from 46.0.3 to 46.0.5 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/1b102cd42868d49321ec10393ecaae5cedb912b5\"\u003e\u003ccode\u003e1b102cd\u003c/code\u003e\u003c/a\u003e Update project URLs in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e41afda72b5ee6e4433ba044fe065afe1399ed48\"\u003e\u003ccode\u003ee41afda\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/291\"\u003e#291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/dba60770813761db92bba5753a6694e25c39a5a0\"\u003e\u003ccode\u003edba6077\u003c/code\u003e\u003c/a\u003e Update .pre-commit-config.yaml to use pinned version numbers. (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e6f4ccc49d31feaab4e9f930525573e60c5c4cfb\"\u003e\u003ccode\u003ee6f4ccc\u003c/code\u003e\u003c/a\u003e Add pytest to dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 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/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values 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/9928\"\u003eencode/django-rest-framework#9928\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.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.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 Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support 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/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field 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/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format 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/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e 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/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher 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/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation 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/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.8 to 3.10.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.9\u003c/h2\u003e\n\u003cp\u003eThis is a micro release of the v3.10.x series.\nHighlights of this release include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious minor bug and doc fixes\u003c/li\u003e\n\u003cli\u003eSecurity hardening validation of cyclers - Removing eval usage\u003c/li\u003e\n\u003cli\u003eSecurity hardening in Latex and PS calls - Removing shell escapes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/dd8d78b8dce60b6c8db86132892577a0b9dbe469\"\u003e\u003ccode\u003edd8d78b\u003c/code\u003e\u003c/a\u003e REL: v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/2fb18915bcfe69a188832c776fe18d88337de9bc\"\u003e\u003ccode\u003e2fb1891\u003c/code\u003e\u003c/a\u003e REL: Release prep v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d0e923abfa016c04901fe4e315b9d215949f6fc5\"\u003e\u003ccode\u003ed0e923a\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.8-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/163793248a5fc9f23a560e45551c44351a8bd716\"\u003e\u003ccode\u003e1637932\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31558\"\u003e#31558\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31556-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a83faacb0dbe7edd1bae38e1e715b77b6aaebb84\"\u003e\u003ccode\u003ea83faac\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31556\"\u003e#31556\u003c/a\u003e: FIX: Inverted PyErr_Occurred check in enum type caster (_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a4f57ab0623f9d26be29e0a3b0de904667c7eeb7\"\u003e\u003ccode\u003ea4f57ab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31545\"\u003e#31545\u003c/a\u003e from ksunden/backport-of-pr-31282-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/063288d0cc912aa2af5cc1b7e7ca3d228d9f8976\"\u003e\u003ccode\u003e063288d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31544\"\u003e#31544\u003c/a\u003e from ksunden/backport-of-pr-31248-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b2ed1969191a03ec8927f96573664474662ab4c1\"\u003e\u003ccode\u003eb2ed196\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31248\"\u003e#31248\u003c/a\u003e: SEC: Remove eval() from validate_cycler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/acc60241a70b920eaf04fce41a8cf0a77010fb7d\"\u003e\u003ccode\u003eacc6024\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31282\"\u003e#31282\u003c/a\u003e from scottshambaugh/tex_no_shell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/e3fb54163b1ce9dbc1a9e8e0973289dc14e366c2\"\u003e\u003ccode\u003ee3fb541\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31078\"\u003e#31078\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31075-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.8...v3.10.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\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/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\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.12.1 to 0.13.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.13.0\u003c/h2\u003e\n\u003ch2\u003e\u003ccode\u003ev0.13.0\u003c/code\u003e_ - 18-February-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded optional warnings when defaults are used\n\u003ccode\u003e[#582](https://github.com/joke2k/django-environ/issues/582) \u0026lt;https://github.com/joke2k/django-environ/pull/582\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echoices\u003c/code\u003e argument support for value validation in \u003ccode\u003eEnv.str(...)\u003c/code\u003e\n\u003ccode\u003e[#555](https://github.com/joke2k/django-environ/issues/555) \u0026lt;https://github.com/joke2k/django-environ/pull/555\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded Valkey support via \u003ccode\u003evalkey://\u003c/code\u003e and \u003ccode\u003evalkeys://\u003c/code\u003e cache URL schemes\n\u003ccode\u003e[#554](https://github.com/joke2k/django-environ/issues/554) \u0026lt;https://github.com/joke2k/django-environ/pull/554\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003erediss://\u003c/code\u003e scheme in channels URL parsing\n\u003ccode\u003e[#573](https://github.com/joke2k/django-environ/issues/573) \u0026lt;https://github.com/joke2k/django-environ/pull/573\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded django-prometheus database backend aliases to DB URL parsing schemes\n\u003ccode\u003e[#559](https://github.com/joke2k/django-environ/issues/559) \u0026lt;https://github.com/joke2k/django-environ/pull/559\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeclared support for Python 3.14\n\u003ccode\u003e[#580](https://github.com/joke2k/django-environ/issues/580) \u0026lt;https://github.com/joke2k/django-environ/pull/580\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eDeclared support for Django 5.2 and Django 6.0\n\u003ccode\u003e[#578](https://github.com/joke2k/django-environ/issues/578) \u0026lt;https://github.com/joke2k/django-environ/pull/578\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved type hint coverage and related lint issues\n\u003ccode\u003e[#546](https://github.com/joke2k/django-environ/issues/546) \u0026lt;https://github.com/joke2k/django-environ/pull/546\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed typos in the FAQ page\n\u003ccode\u003e[#445](https://github.com/joke2k/django-environ/issues/445) \u0026lt;https://github.com/joke2k/django-environ/pull/445\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/django-environ/blob/develop/CHANGELOG.rst\"\u003edjango-environ's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev0.13.0\u003c/code\u003e_ - 18-February-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded optional warnings when defaults are used\n\u003ccode\u003e[#582](https://github.com/joke2k/django-environ/issues/582) \u0026lt;https://github.com/joke2k/django-environ/pull/582\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echoices\u003c/code\u003e argument support for value validation in \u003ccode\u003eEnv.str(...)\u003c/code\u003e\n\u003ccode\u003e[#555](https://github.com/joke2k/django-environ/issues/555) \u0026lt;https://github.com/joke2k/django-environ/pull/555\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded Valkey support via \u003ccode\u003evalkey://\u003c/code\u003e and \u003ccode\u003evalkeys://\u003c/code\u003e cache URL schemes\n\u003ccode\u003e[#554](https://github.com/joke2k/django-environ/issues/554) \u0026lt;https://github.com/joke2k/django-environ/pull/554\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003erediss://\u003c/code\u003e scheme in channels URL parsing\n\u003ccode\u003e[#573](https://github.com/joke2k/django-environ/issues/573) \u0026lt;https://github.com/joke2k/django-environ/pull/573\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded django-prometheus database backend aliases to DB URL parsing schemes\n\u003ccode\u003e[#559](https://github.com/joke2k/django-environ/issues/559) \u0026lt;https://github.com/joke2k/django-environ/pull/559\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeclared support for Python 3.14\n\u003ccode\u003e[#580](https://github.com/joke2k/django-environ/issues/580) \u0026lt;https://github.com/joke2k/django-environ/pull/581\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eDeclared support for Django 5.2 and Django 6.0\n\u003ccode\u003e[#578](https://github.com/joke2k/django-environ/issues/578) \u0026lt;https://github.com/joke2k/django-environ/pull/578\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved type hint coverage and related lint issues\n\u003ccode\u003e[#546](https://github.com/joke2k/django-environ/issues/546) \u0026lt;https://github.com/joke2k/django-environ/pull/546\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed typos in the FAQ page\n\u003ccode\u003e[#445](https://github.com/joke2k/django-environ/issues/445) \u0026lt;https://github.com/joke2k/django-environ/pull/445\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/00746d0f63d37dcafad527ea7a820a46f8fb81e0\"\u003e\u003ccode\u003e00746d0\u003c/code\u003e\u003c/a\u003e docs: add Django 5.2 and 6.0 support to README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/d1f115932aed9d21c38c898c3ae4b4b678cd210d\"\u003e\u003ccode\u003ed1f1159\u003c/code\u003e\u003c/a\u003e Release 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/d82e361ddb7ffdad01451623d806d402c3a657fd\"\u003e\u003ccode\u003ed82e361\u003c/code\u003e\u003c/a\u003e Add optional warnings when defaults are used (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/582\"\u003e#582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/a78f7c888d840c1b1903371f2424ee641906c923\"\u003e\u003ccode\u003ea78f7c8\u003c/code\u003e\u003c/a\u003e Fixed some typos in the FAQ page (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/24b299e002f3bcc14983eef4be770edb143338dc\"\u003e\u003ccode\u003e24b299e\u003c/code\u003e\u003c/a\u003e Feature/add choice parameter and raise an exception if fetched value is not w...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c4414130f4cf11704e9f1ea446c68074f69c0b54\"\u003e\u003ccode\u003ec441413\u003c/code\u003e\u003c/a\u003e Add django-prometheus database backends to DB_SCHEMES (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/559\"\u003e#559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/98a0aad4c10e789d84e572a3f97a5a9cf9080973\"\u003e\u003ccode\u003e98a0aad\u003c/code\u003e\u003c/a\u003e Fix lint issues in environ type hints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/f4e77e41e629ae8631da9582241f7db527085699\"\u003e\u003ccode\u003ef4e77e4\u003c/code\u003e\u003c/a\u003e feat(cache): add valkey and valkeys as allowed schemes (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/554\"\u003e#554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/dd4d308baea427b5e820a8ac326b0d63e557c956\"\u003e\u003ccode\u003edd4d308\u003c/code\u003e\u003c/a\u003e Add type hints (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/3137c4f733f90a14a12da9fc252d446357190537\"\u003e\u003ccode\u003e3137c4f\u003c/code\u003e\u003c/a\u003e Support lower case options for Django Redis cache backend (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.12.1...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.3 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.42.39 to 1.42.96\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/60921ee112275b89a361d137657d9d48daacbf2a\"\u003e\u003ccode\u003e60921ee\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.96'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/508588d61de44577d761094e3f204dd85a0eb3c0\"\u003e\u003ccode\u003e508588d\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.96\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/fd3d17795980826ef2b5e34fd4eb62338d1ecc55\"\u003e\u003ccode\u003efd3d177\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4be6bbd12cb1ad40505dab385bafab62e70a4da8\"\u003e\u003ccode\u003e4be6bbd\u003c/code\u003e\u003c/a\u003e chore: enable dependabot for pre-commit and refresh hook pins (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4775\"\u003e#4775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/a47ce816eb1f088956353335f2bd2cd56b6b1fc6\"\u003e\u003ccode\u003ea47ce81\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4ccdda83164e69faf24839542d20a523c5263465\"\u003e\u003ccode\u003e4ccdda8\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/03cc5cdf7c550b4a36d43f07745f77aa9dbc0c9a\"\u003e\u003ccode\u003e03cc5cd\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.95\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ab160a576b0e6e150a9752837fe5e52961ae7349\"\u003e\u003ccode\u003eab160a5\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/10094042f04226ec32ae43a7051c2635bc033164\"\u003e\u003ccode\u003e1009404\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.94'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0017b80aa909dd8e95cfde8f79345cef8bcafc66\"\u003e\u003ccode\u003e0017b80\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.94' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.42.39...1.42.96\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.42.39 to 1.42.96\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/435c9a3f09d6ef9716e5d8a3c0d4be118cfbfe41\"\u003e\u003ccode\u003e435c9a3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.96'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/804525091b40e8bdfd90f2145ebe73f59c6ba584\"\u003e\u003ccode\u003e8045250\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.96\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/243b48e8f21e9c814e63bbe93221590da6c48904\"\u003e\u003ccode\u003e243b48e\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8ec506c1254150336916f8ed495df6529b9c5fb9\"\u003e\u003ccode\u003e8ec506c\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8ce183e14781ff29cff89057e84b398d0f5f0c81\"\u003e\u003ccode\u003e8ce183e\u003c/code\u003e\u003c/a\u003e chore: enable dependabot for pre-commit and refresh hook pins (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3685\"\u003e#3685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0aaee4ddba63cfd6337907ea8491a97424606586\"\u003e\u003ccode\u003e0aaee4d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/daaf0f37dc534f42953184a0910d9a5ea154a967\"\u003e\u003ccode\u003edaaf0f3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/157860ae07eb2b3f6c32cfaa4f10c48af69a084c\"\u003e\u003ccode\u003e157860a\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.95\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/19a789f6b7050d12b4188589a60efc454fdd6efc\"\u003e\u003ccode\u003e19a789f\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b88d178dd9bd410769f72e45f72e4d8e0716b2c4\"\u003e\u003ccode\u003eb88d178\u003c/code\u003e\u003c/a\u003e Merge customizations for CloudWatch OTel enrichment (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.42.39...1.42.96\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cbor2` from 5.8.0 to 5.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/cbor2/releases\"\u003ecbor2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003emax_depth\u003c/code\u003e decoder parameter to limit the maximum allowed nesting level of containers, with a default value of 400 levels (CVE-2026-26209)\u003c/li\u003e\n\u003cli\u003eChanged the default \u003ccode\u003eread_size\u003c/code\u003e from 4096 to 1 for backwards compatibility. The buffered reads introduced in 5.8.0 could cause issues when code needs to access the stream position after decoding. Users can opt-in to faster decoding by passing \u003ccode\u003eread_size=4096\u003c/code\u003e when they don't need to access the stream directly after decoding. Added a direct read path for \u003ccode\u003eread_size=1\u003c/code\u003e to avoid buffer management overhead. (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/pull/275\"\u003e#275\u003c/a\u003e; PR by \u003ca href=\"https://github.com/andreer\"\u003e\u003ccode\u003e@​andreer\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed C encoder not respecting string referencing when encoding string-type datetimes (tag 0) (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/254\"\u003e#254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a missed check for an exception in the C implementation of \u003ccode\u003eCBOREncoder.encode_shared()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed two reference/memory leaks in the C extension's long string decoder (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/pull/290\"\u003e#290\u003c/a\u003e PR by \u003ca href=\"https://github.com/killiancowan82\"\u003e\u003ccode\u003e@​killiancowan82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed C decoder ignoring the \u003ccode\u003estr_errors\u003c/code\u003e setting when decoding strings, and improved string decoding performance by using stack allocation for small strings and eliminating unnecessary conditionals. Benchmarks show 9-17% faster deserialization. (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/255\"\u003e#255\u003c/a\u003e; PR by \u003ca href=\"https://github.com/andreer\"\u003e\u003ccode\u003e@​andreer\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/93c598838d50b554e242920902aada82d32d55bc\"\u003e\u003ccode\u003e93c5988\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/d903d62c86de118e8abe626596f9be7b98ac44e9\"\u003e\u003ccode\u003ed903d62\u003c/code\u003e\u003c/a\u003e Updated the max_depth default value in the C function signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/2b53b2813d44a7919dae18747b5ac36cf9c5fb87\"\u003e\u003ccode\u003e2b53b28\u003c/code\u003e\u003c/a\u003e Stack allocate small strings (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/a7ac10d5cbb7a8622e8270c201a131ac2abc26c7\"\u003e\u003ccode\u003ea7ac10d\u003c/code\u003e\u003c/a\u003e Upped the max_depth value to 400\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/54c8ed541c5f4842508cace5ff4b2aae54bc731b\"\u003e\u003ccode\u003e54c8ed5\u003c/code\u003e\u003c/a\u003e Fixed reference/memory leaks in decode_definite_long_string (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/a8d92dc3dc00233c796c4abccb5daa31089bf3c0\"\u003e\u003ccode\u003ea8d92dc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/c91aa007117828560329a1624eabc5dad5435ebc\"\u003e\u003ccode\u003ec91aa00\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/53521e7ca96c7a19f8a529fe59ef566212a24b3f\"\u003e\u003ccode\u003e53521e7\u003c/code\u003e\u003c/a\u003e Fixed ssize_t to Py_ssize_t\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/94e0d2125fbfb183606afa9ef07754a8dba50748\"\u003e\u003ccode\u003e94e0d21\u003c/code\u003e\u003c/a\u003e Added missing Python counterpart for max_depth\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/bcb6cea4edde1d00ff4f0eece883dea951f66e1b\"\u003e\u003ccode\u003ebcb6cea\u003c/code\u003e\u003c/a\u003e Added the max_depth decoder parameter\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/cbor2/compare/5.8.0...5.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10151\"\u003ecelery/celery#10151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove on_af...\n\n_Description has been truncated_","html_url":"https://github.com/rahim8050/weather-apis/pull/67","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rahim8050%2Fweather-apis/issues/67","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/67/packages"}},{"old_version":"1.3.2","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-04-25T16:35:26.000Z","version_change":"1.3.2 → 1.6.0","issue":{"uuid":"4328664228","node_id":"PR_kwDOQnZ8zc7VnkLt","number":62,"state":"closed","title":"deps(pip): bump the pip-minor-and-patch group across 1 directory with 43 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-25T17:09:06.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-25T16:35:26.000Z","updated_at":"2026-04-25T17:09:08.000Z","time_to_close":2020,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps(pip): bump","group_name":"pip-minor-and-patch","update_count":43,"packages":[{"name":"dj-database-url","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/jazzband/dj-database-url"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"matplotlib","old_version":"3.10.8","new_version":"3.10.9","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"django-environ","old_version":"0.12.1","new_version":"0.13.0","repository_url":"https://github.com/joke2k/django-environ"},{"name":"anyio","old_version":"4.12.1","new_version":"4.13.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"bandit","old_version":"1.9.3","new_version":"1.9.4","repository_url":"https://github.com/PyCQA/bandit"},{"name":"boto3","old_version":"1.42.39","new_version":"1.42.96","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.42.39","new_version":"1.42.96","repository_url":"https://github.com/boto/botocore"},{"name":"cbor2","old_version":"5.8.0","new_version":"5.9.0","repository_url":"https://github.com/agronholm/cbor2"},{"name":"celery","old_version":"5.6.2","new_version":"5.6.3","repository_url":"https://github.com/celery/celery"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.7","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.3.1","new_version":"8.3.3","repository_url":"https://github.com/pallets/click"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"daphne","old_version":"4.1.2","new_version":"4.2.1","repository_url":"https://github.com/django/daphne"},{"name":"djangorestframework-stubs","old_version":"3.16.8","new_version":"3.16.9","repository_url":"https://github.com/typeddjango/djangorestframework-stubs"},{"name":"filelock","old_version":"3.24.2","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"identify","old_version":"2.6.16","new_version":"2.6.19","repository_url":"https://github.com/pre-commit/identify"},{"name":"idna","old_version":"3.11","new_version":"3.13","repository_url":"https://github.com/kjd/idna"},{"name":"librt","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/mypyc/librt"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"numpy","old_version":"2.4.2","new_version":"2.4.4","repository_url":"https://github.com/numpy/numpy"},{"name":"pillow","old_version":"12.1.1","new_version":"12.2.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.9.2","new_version":"4.9.6","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"pre-commit","old_version":"4.5.1","new_version":"4.6.0","repository_url":"https://github.com/pre-commit/pre-commit"},{"name":"prometheus-client","old_version":"0.24.1","new_version":"0.25.0","repository_url":"https://github.com/prometheus/client_python"},{"name":"pyasn1","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/pyasn1/pyasn1"},{"name":"pygments","old_version":"2.19.2","new_version":"2.20.0","repository_url":"https://github.com/pygments/pygments"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"pyopenssl","old_version":"26.0.0","new_version":"26.1.0","repository_url":"https://github.com/pyca/pyopenssl"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.3.2","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"requests","old_version":"2.32.5","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"ruff","old_version":"0.15.1","new_version":"0.15.12","repository_url":"https://github.com/astral-sh/ruff"},{"name":"s3transfer","old_version":"0.16.0","new_version":"0.16.1","repository_url":"https://github.com/boto/s3transfer"},{"name":"stevedore","old_version":"5.6.0","new_version":"5.7.0"},{"name":"types-requests","old_version":"2.32.4.20250913","new_version":"2.33.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"ujson","old_version":"5.11.0","new_version":"5.12.0","repository_url":"https://github.com/ultrajson/ultrajson"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.46.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"wheel","old_version":"0.46.3","new_version":"0.47.0","repository_url":"https://github.com/pypa/wheel"},{"name":"zope-interface","old_version":"8.2","new_version":"8.4","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-minor-and-patch group with 43 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dj-database-url](https://github.com/jazzband/dj-database-url) | `3.1.0` | `3.1.2` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.8` | `3.10.9` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [django-environ](https://github.com/joke2k/django-environ) | `0.12.1` | `0.13.0` |\n| [anyio](https://github.com/agronholm/anyio) | `4.12.1` | `4.13.0` |\n| [bandit](https://github.com/PyCQA/bandit) | `1.9.3` | `1.9.4` |\n| [boto3](https://github.com/boto/boto3) | `1.42.39` | `1.42.96` |\n| [botocore](https://github.com/boto/botocore) | `1.42.39` | `1.42.96` |\n| [cbor2](https://github.com/agronholm/cbor2) | `5.8.0` | `5.9.0` |\n| [celery](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.4` | `3.4.7` |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.3` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [daphne](https://github.com/django/daphne) | `4.1.2` | `4.2.1` |\n| [djangorestframework-stubs](https://github.com/typeddjango/djangorestframework-stubs) | `3.16.8` | `3.16.9` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.24.2` | `3.29.0` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [identify](https://github.com/pre-commit/identify) | `2.6.16` | `2.6.19` |\n| [idna](https://github.com/kjd/idna) | `3.11` | `3.13` |\n| [librt](https://github.com/mypyc/librt) | `0.8.0` | `0.9.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.2` |\n| [numpy](https://github.com/numpy/numpy) | `2.4.2` | `2.4.4` |\n| [pillow](https://github.com/python-pillow/Pillow) | `12.1.1` | `12.2.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.9.2` | `4.9.6` |\n| [pre-commit](https://github.com/pre-commit/pre-commit) | `4.5.1` | `4.6.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.24.1` | `0.25.0` |\n| [pyasn1](https://github.com/pyasn1/pyasn1) | `0.6.2` | `0.6.3` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.2` | `2.20.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.12.1` |\n| [pyopenssl](https://github.com/pyca/pyopenssl) | `26.0.0` | `26.1.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.3.2` | `1.6.0` |\n| [requests](https://github.com/psf/requests) | `2.32.5` | `2.33.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.1` | `0.15.12` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.16.0` | `0.16.1` |\n| [stevedore](https://docs.openstack.org/stevedore) | `5.6.0` | `5.7.0` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20250913` | `2.33.0.20260408` |\n| [ujson](https://github.com/ultrajson/ultrajson) | `5.11.0` | `5.12.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.41.0` | `0.46.0` |\n| [wheel](https://github.com/pypa/wheel) | `0.46.3` | `0.47.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `8.2` | `8.4` |\n\n\nUpdates `dj-database-url` from 3.1.0 to 3.1.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jazzband/dj-database-url/releases\"\u003edj-database-url's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.1.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eBump cryptography from 46.0.3 to 46.0.5 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/293\"\u003ejazzband/dj-database-url#293\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump django from 5.2.9 to 5.2.11 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/294\"\u003ejazzband/dj-database-url#294\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump urllib3 from 2.6.2 to 2.6.3 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/295\"\u003ejazzband/dj-database-url#295\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump wheel from 0.45.1 to 0.46.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/296\"\u003ejazzband/dj-database-url#296\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/297\"\u003ejazzband/dj-database-url#297\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/293\"\u003ejazzband/dj-database-url#293\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.1...v3.1.2\"\u003ehttps://github.com/jazzband/dj-database-url/compare/v3.1.1...v3.1.2\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev3.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd tests directory to source distribution by \u003ca href=\"https://github.com/yohaann196\"\u003e\u003ccode\u003e@​yohaann196\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/285\"\u003ejazzband/dj-database-url#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch linting and formatting from flake8+isort+black to ruff; add typos to pre-commit; fix typos by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/281\"\u003ejazzband/dj-database-url#281\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd project URLs to pyproject.toml by \u003ca href=\"https://github.com/luzfcb\"\u003e\u003ccode\u003e@​luzfcb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/287\"\u003ejazzband/dj-database-url#287\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate .pre-commit-config.yaml to use pinned version numbers. by \u003ca href=\"https://github.com/mattseymour\"\u003e\u003ccode\u003e@​mattseymour\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/289\"\u003ejazzband/dj-database-url#289\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/291\"\u003ejazzband/dj-database-url#291\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/yohaann196\"\u003e\u003ccode\u003e@​yohaann196\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/285\"\u003ejazzband/dj-database-url#285\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/luzfcb\"\u003e\u003ccode\u003e@​luzfcb\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/pull/287\"\u003ejazzband/dj-database-url#287\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.1\"\u003ehttps://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jazzband/dj-database-url/blob/master/CHANGELOG.md\"\u003edj-database-url's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCHANGELOG\u003c/h1\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e77149f799f971f85d2cd1ccf01dbd3f0eb69cb5\"\u003e\u003ccode\u003ee77149f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/297\"\u003e#297\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/6beffe6de6a2d6284d6c5c76ee6753cc8787aee2\"\u003e\u003ccode\u003e6beffe6\u003c/code\u003e\u003c/a\u003e Fix a regression in adding tests/ dir to source package\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/f9c31305ae85f1a22d2102da0b83acb577154d97\"\u003e\u003ccode\u003ef9c3130\u003c/code\u003e\u003c/a\u003e Bump wheel from 0.45.1 to 0.46.2 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/296\"\u003e#296\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/5337838ac302faaec32c969712dc44dfe28d4e15\"\u003e\u003ccode\u003e5337838\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.6.2 to 2.6.3 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/295\"\u003e#295\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/6fc366459ff21030c49ba613d1c129f615ee4228\"\u003e\u003ccode\u003e6fc3664\u003c/code\u003e\u003c/a\u003e Bump django from 5.2.9 to 5.2.11 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/294\"\u003e#294\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/19805c97f3667da652ce57df0be0e02a1187d6b8\"\u003e\u003ccode\u003e19805c9\u003c/code\u003e\u003c/a\u003e Bump cryptography from 46.0.3 to 46.0.5 (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/293\"\u003e#293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/1b102cd42868d49321ec10393ecaae5cedb912b5\"\u003e\u003ccode\u003e1b102cd\u003c/code\u003e\u003c/a\u003e Update project URLs in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e41afda72b5ee6e4433ba044fe065afe1399ed48\"\u003e\u003ccode\u003ee41afda\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/291\"\u003e#291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/dba60770813761db92bba5753a6694e25c39a5a0\"\u003e\u003ccode\u003edba6077\u003c/code\u003e\u003c/a\u003e Update .pre-commit-config.yaml to use pinned version numbers. (\u003ca href=\"https://redirect.github.com/jazzband/dj-database-url/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jazzband/dj-database-url/commit/e6f4ccc49d31feaab4e9f930525573e60c5c4cfb\"\u003e\u003ccode\u003ee6f4ccc\u003c/code\u003e\u003c/a\u003e Add pytest to dependencies\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jazzband/dj-database-url/compare/v3.1.0...v3.1.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 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/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values 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/9928\"\u003eencode/django-rest-framework#9928\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.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.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 Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support 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/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field 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/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format 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/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e 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/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher 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/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation 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/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.8 to 3.10.9\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.10.9\u003c/h2\u003e\n\u003cp\u003eThis is a micro release of the v3.10.x series.\nHighlights of this release include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eVarious minor bug and doc fixes\u003c/li\u003e\n\u003cli\u003eSecurity hardening validation of cyclers - Removing eval usage\u003c/li\u003e\n\u003cli\u003eSecurity hardening in Latex and PS calls - Removing shell escapes\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/dd8d78b8dce60b6c8db86132892577a0b9dbe469\"\u003e\u003ccode\u003edd8d78b\u003c/code\u003e\u003c/a\u003e REL: v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/2fb18915bcfe69a188832c776fe18d88337de9bc\"\u003e\u003ccode\u003e2fb1891\u003c/code\u003e\u003c/a\u003e REL: Release prep v3.10.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/d0e923abfa016c04901fe4e315b9d215949f6fc5\"\u003e\u003ccode\u003ed0e923a\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.8-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/163793248a5fc9f23a560e45551c44351a8bd716\"\u003e\u003ccode\u003e1637932\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31558\"\u003e#31558\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31556-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a83faacb0dbe7edd1bae38e1e715b77b6aaebb84\"\u003e\u003ccode\u003ea83faac\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31556\"\u003e#31556\u003c/a\u003e: FIX: Inverted PyErr_Occurred check in enum type caster (_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a4f57ab0623f9d26be29e0a3b0de904667c7eeb7\"\u003e\u003ccode\u003ea4f57ab\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31545\"\u003e#31545\u003c/a\u003e from ksunden/backport-of-pr-31282-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/063288d0cc912aa2af5cc1b7e7ca3d228d9f8976\"\u003e\u003ccode\u003e063288d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31544\"\u003e#31544\u003c/a\u003e from ksunden/backport-of-pr-31248-on-v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/b2ed1969191a03ec8927f96573664474662ab4c1\"\u003e\u003ccode\u003eb2ed196\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31248\"\u003e#31248\u003c/a\u003e: SEC: Remove eval() from validate_cycler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/acc60241a70b920eaf04fce41a8cf0a77010fb7d\"\u003e\u003ccode\u003eacc6024\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31282\"\u003e#31282\u003c/a\u003e from scottshambaugh/tex_no_shell\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/e3fb54163b1ce9dbc1a9e8e0973289dc14e366c2\"\u003e\u003ccode\u003ee3fb541\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/31078\"\u003e#31078\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-31075-on-v...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.8...v3.10.9\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\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/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\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.12.1 to 0.13.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.13.0\u003c/h2\u003e\n\u003ch2\u003e\u003ccode\u003ev0.13.0\u003c/code\u003e_ - 18-February-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded optional warnings when defaults are used\n\u003ccode\u003e[#582](https://github.com/joke2k/django-environ/issues/582) \u0026lt;https://github.com/joke2k/django-environ/pull/582\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echoices\u003c/code\u003e argument support for value validation in \u003ccode\u003eEnv.str(...)\u003c/code\u003e\n\u003ccode\u003e[#555](https://github.com/joke2k/django-environ/issues/555) \u0026lt;https://github.com/joke2k/django-environ/pull/555\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded Valkey support via \u003ccode\u003evalkey://\u003c/code\u003e and \u003ccode\u003evalkeys://\u003c/code\u003e cache URL schemes\n\u003ccode\u003e[#554](https://github.com/joke2k/django-environ/issues/554) \u0026lt;https://github.com/joke2k/django-environ/pull/554\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003erediss://\u003c/code\u003e scheme in channels URL parsing\n\u003ccode\u003e[#573](https://github.com/joke2k/django-environ/issues/573) \u0026lt;https://github.com/joke2k/django-environ/pull/573\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded django-prometheus database backend aliases to DB URL parsing schemes\n\u003ccode\u003e[#559](https://github.com/joke2k/django-environ/issues/559) \u0026lt;https://github.com/joke2k/django-environ/pull/559\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeclared support for Python 3.14\n\u003ccode\u003e[#580](https://github.com/joke2k/django-environ/issues/580) \u0026lt;https://github.com/joke2k/django-environ/pull/580\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eDeclared support for Django 5.2 and Django 6.0\n\u003ccode\u003e[#578](https://github.com/joke2k/django-environ/issues/578) \u0026lt;https://github.com/joke2k/django-environ/pull/578\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved type hint coverage and related lint issues\n\u003ccode\u003e[#546](https://github.com/joke2k/django-environ/issues/546) \u0026lt;https://github.com/joke2k/django-environ/pull/546\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed typos in the FAQ page\n\u003ccode\u003e[#445](https://github.com/joke2k/django-environ/issues/445) \u0026lt;https://github.com/joke2k/django-environ/pull/445\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/joke2k/django-environ/blob/develop/CHANGELOG.rst\"\u003edjango-environ's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev0.13.0\u003c/code\u003e_ - 18-February-2026\u003c/h2\u003e\n\u003cp\u003eAdded\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded optional warnings when defaults are used\n\u003ccode\u003e[#582](https://github.com/joke2k/django-environ/issues/582) \u0026lt;https://github.com/joke2k/django-environ/pull/582\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echoices\u003c/code\u003e argument support for value validation in \u003ccode\u003eEnv.str(...)\u003c/code\u003e\n\u003ccode\u003e[#555](https://github.com/joke2k/django-environ/issues/555) \u0026lt;https://github.com/joke2k/django-environ/pull/555\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded Valkey support via \u003ccode\u003evalkey://\u003c/code\u003e and \u003ccode\u003evalkeys://\u003c/code\u003e cache URL schemes\n\u003ccode\u003e[#554](https://github.com/joke2k/django-environ/issues/554) \u0026lt;https://github.com/joke2k/django-environ/pull/554\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003erediss://\u003c/code\u003e scheme in channels URL parsing\n\u003ccode\u003e[#573](https://github.com/joke2k/django-environ/issues/573) \u0026lt;https://github.com/joke2k/django-environ/pull/573\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eAdded django-prometheus database backend aliases to DB URL parsing schemes\n\u003ccode\u003e[#559](https://github.com/joke2k/django-environ/issues/559) \u0026lt;https://github.com/joke2k/django-environ/pull/559\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eChanged\n+++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeclared support for Python 3.14\n\u003ccode\u003e[#580](https://github.com/joke2k/django-environ/issues/580) \u0026lt;https://github.com/joke2k/django-environ/pull/581\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eDeclared support for Django 5.2 and Django 6.0\n\u003ccode\u003e[#578](https://github.com/joke2k/django-environ/issues/578) \u0026lt;https://github.com/joke2k/django-environ/pull/578\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixed\n+++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eImproved type hint coverage and related lint issues\n\u003ccode\u003e[#546](https://github.com/joke2k/django-environ/issues/546) \u0026lt;https://github.com/joke2k/django-environ/pull/546\u0026gt;\u003c/code\u003e_.\u003c/li\u003e\n\u003cli\u003eFixed typos in the FAQ page\n\u003ccode\u003e[#445](https://github.com/joke2k/django-environ/issues/445) \u0026lt;https://github.com/joke2k/django-environ/pull/445\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/00746d0f63d37dcafad527ea7a820a46f8fb81e0\"\u003e\u003ccode\u003e00746d0\u003c/code\u003e\u003c/a\u003e docs: add Django 5.2 and 6.0 support to README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/d1f115932aed9d21c38c898c3ae4b4b678cd210d\"\u003e\u003ccode\u003ed1f1159\u003c/code\u003e\u003c/a\u003e Release 0.13.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/d82e361ddb7ffdad01451623d806d402c3a657fd\"\u003e\u003ccode\u003ed82e361\u003c/code\u003e\u003c/a\u003e Add optional warnings when defaults are used (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/582\"\u003e#582\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/a78f7c888d840c1b1903371f2424ee641906c923\"\u003e\u003ccode\u003ea78f7c8\u003c/code\u003e\u003c/a\u003e Fixed some typos in the FAQ page (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/445\"\u003e#445\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/24b299e002f3bcc14983eef4be770edb143338dc\"\u003e\u003ccode\u003e24b299e\u003c/code\u003e\u003c/a\u003e Feature/add choice parameter and raise an exception if fetched value is not w...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/c4414130f4cf11704e9f1ea446c68074f69c0b54\"\u003e\u003ccode\u003ec441413\u003c/code\u003e\u003c/a\u003e Add django-prometheus database backends to DB_SCHEMES (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/559\"\u003e#559\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/98a0aad4c10e789d84e572a3f97a5a9cf9080973\"\u003e\u003ccode\u003e98a0aad\u003c/code\u003e\u003c/a\u003e Fix lint issues in environ type hints\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/f4e77e41e629ae8631da9582241f7db527085699\"\u003e\u003ccode\u003ef4e77e4\u003c/code\u003e\u003c/a\u003e feat(cache): add valkey and valkeys as allowed schemes (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/554\"\u003e#554\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/dd4d308baea427b5e820a8ac326b0d63e557c956\"\u003e\u003ccode\u003edd4d308\u003c/code\u003e\u003c/a\u003e Add type hints (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/django-environ/commit/3137c4f733f90a14a12da9fc252d446357190537\"\u003e\u003ccode\u003e3137c4f\u003c/code\u003e\u003c/a\u003e Support lower case options for Django Redis cache backend (\u003ca href=\"https://redirect.github.com/joke2k/django-environ/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/django-environ/compare/v0.12.1...v0.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `anyio` from 4.12.1 to 4.13.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.13.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eDropped support for Python 3.9\u003c/li\u003e\n\u003cli\u003eAdded a \u003ccode\u003ettl\u003c/code\u003e parameter to the \u003ccode\u003eanyio.functools.lru_cache\u003c/code\u003e wrapper (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1073\"\u003e#1073\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Graeme22\"\u003e\u003ccode\u003e@​Graeme22\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eWidened the type annotations of file I/O streams to accept \u003ccode\u003eIO[bytes]\u003c/code\u003e instead of just \u003ccode\u003eBinaryIO\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1078\"\u003e#1078\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path\u003c/code\u003e not being compatible with Python 3.15 due to the removal of \u003ccode\u003epathlib.Path.is_reserved()\u003c/code\u003e and the addition of \u003ccode\u003epathlib.Path.__vfspath__()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1061\"\u003e#1061\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eBrokenResourceError\u003c/code\u003e raised by the asyncio \u003ccode\u003eSocketStream\u003c/code\u003e not having the original exception as its cause (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1055\"\u003e#1055\u003c/a\u003e; PR by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the \u003ccode\u003eTypeError\u003c/code\u003e raised when using \u0026quot;func\u0026quot; as a parameter name in \u003ccode\u003epytest.mark.parametrize\u003c/code\u003e when using the pytest plugin (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1068\"\u003e#1068\u003c/a\u003e; PR by \u003ca href=\"https://github.com/JohnnyDeuss\"\u003e\u003ccode\u003e@​JohnnyDeuss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed the pytest plugin not running tests that had the \u003ccode\u003eanyio\u003c/code\u003e marker added programmatically via \u003ccode\u003epytest_collection_modifyitems\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/422\"\u003e#422\u003c/a\u003e; PR by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when they are contained in an exception group alongside non-cancellation exceptions (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1091\"\u003e#1091\u003c/a\u003e; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eCondition.wait()\u003c/code\u003e not passing on a notification when the task is cancelled but already received a notification\u003c/li\u003e\n\u003cli\u003eFixed inverted condition in the process pool shutdown phase which would cause still-running pooled processes not to be terminated (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/1074\"\u003e#1074\u003c/a\u003e; PR by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/afbe93ca9d0c447adf26e9c1715ac20870622bf2\"\u003e\u003ccode\u003eafbe93c\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/33bdf2e4b4f40c2df178123746147a6d2471808d\"\u003e\u003ccode\u003e33bdf2e\u003c/code\u003e\u003c/a\u003e Rearranged the changelog entries\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/19e09e25bc5a23dd78a577d8c3909dd377057c78\"\u003e\u003ccode\u003e19e09e2\u003c/code\u003e\u003c/a\u003e Fixed inverted condition in _forcibly_shutdown_process_pool_on_exit (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1074\"\u003e#1074\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/9369d80b9e8292f2a892a9d5c73923c6a28aa08c\"\u003e\u003ccode\u003e9369d80\u003c/code\u003e\u003c/a\u003e Fixed Condition.wait() not handing over notification when cancelled\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6f122abdc6f6b166c6b6ac27d36d55cdf8fa08e8\"\u003e\u003ccode\u003e6f122ab\u003c/code\u003e\u003c/a\u003e Fixed cancellation exceptions leaking from a \u003ccode\u003eCancelScope\u003c/code\u003e on asyncio when th...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/beaa45aff568a4020f2faf317321dd92f0e1f4a0\"\u003e\u003ccode\u003ebeaa45a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1097\"\u003e#1097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/602f6606dcf3f37702686a4f3e161328c537b07f\"\u003e\u003ccode\u003e602f660\u003c/code\u003e\u003c/a\u003e Widened type annotations to accept IO[bytes] in file streams\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/b5dcd45170701a756ba634197398f05d4710cab3\"\u003e\u003ccode\u003eb5dcd45\u003c/code\u003e\u003c/a\u003e Added note about erasing the template\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/d68670b3b4e0917d4caff2de082e03220f3e05a1\"\u003e\u003ccode\u003ed68670b\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1090\"\u003e#1090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/fc17a22dd948e6a3d90d99908813f0010dfc3d2c\"\u003e\u003ccode\u003efc17a22\u003c/code\u003e\u003c/a\u003e tweak to_thread docs about abandon_on_cancel (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/1088\"\u003e#1088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.12.1...4.13.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bandit` from 1.9.3 to 1.9.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyCQA/bandit/releases\"\u003ebandit's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.9.4\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003echore: fixed some typos in comments by \u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/login-action from 3.6.0 to 3.7.0 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1353\"\u003ePyCQA/bandit#1353\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump docker/build-push-action from 6.18.0 to 6.19.2 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1357\"\u003ePyCQA/bandit#1357\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B613 crash when reading from stdin by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eInclude filename in nosec 'no failed test' warning by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1363\"\u003ePyCQA/bandit#1363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B615 false positive when revision is set via variable by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1358\"\u003ePyCQA/bandit#1358\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eLower version guard in check_ast_node to Python 3.12 by \u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix B106 reporting wrong line number on multiline function calls by \u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1360\"\u003ePyCQA/bandit#1360\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jakob1379\"\u003e\u003ccode\u003e@​jakob1379\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1351\"\u003ePyCQA/bandit#1351\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/worksbyfriday\"\u003e\u003ccode\u003e@​worksbyfriday\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1361\"\u003ePyCQA/bandit#1361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rcgray\"\u003e\u003ccode\u003e@​rcgray\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyCQA/bandit/pull/1355\"\u003ePyCQA/bandit#1355\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ehttps://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/92ae8b82fb422a639f0ed8d99e96cea769594e08\"\u003e\u003ccode\u003e92ae8b8\u003c/code\u003e\u003c/a\u003e Fix B106 reporting wrong line number on multiline function calls (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1360\"\u003e#1360\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c8c8a55c3307333b8eb46cb2ef46d49b1fad6546\"\u003e\u003ccode\u003ec8c8a55\u003c/code\u003e\u003c/a\u003e Lower version guard in check_ast_node to Python 3.12 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1355\"\u003e#1355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/8f2f9284fca830ca017b2e2cc3ddc2a7b74b7040\"\u003e\u003ccode\u003e8f2f928\u003c/code\u003e\u003c/a\u003e Fix B615 false positive when revision is set via variable (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1358\"\u003e#1358\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e27493f71c114e0e5dfc0a475d225d7f9f4a7e2b\"\u003e\u003ccode\u003ee27493f\u003c/code\u003e\u003c/a\u003e Include filename in nosec 'no failed test' warning (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1363\"\u003e#1363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/b69b336450301d424e5ba04c9a58e8d41b7169b6\"\u003e\u003ccode\u003eb69b336\u003c/code\u003e\u003c/a\u003e Fix B613 crash when reading from stdin (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1361\"\u003e#1361\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/e418b798abcc3f2b00c07fd6315da8fe9aeead00\"\u003e\u003ccode\u003ee418b79\u003c/code\u003e\u003c/a\u003e Bump docker/build-push-action from 6.18.0 to 6.19.2 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1357\"\u003e#1357\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/ff646fd7e0e34fb350196fc58448fad17178c27a\"\u003e\u003ccode\u003eff646fd\u003c/code\u003e\u003c/a\u003e Bump docker/login-action from 3.6.0 to 3.7.0 (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1353\"\u003e#1353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyCQA/bandit/commit/c0def6c7ebab60f98c28ba759d488f4fbe6dae89\"\u003e\u003ccode\u003ec0def6c\u003c/code\u003e\u003c/a\u003e chore: fixed some typos in comments (\u003ca href=\"https://redirect.github.com/PyCQA/bandit/issues/1351\"\u003e#1351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/PyCQA/bandit/compare/1.9.3...1.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.42.39 to 1.42.96\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/60921ee112275b89a361d137657d9d48daacbf2a\"\u003e\u003ccode\u003e60921ee\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.96'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/508588d61de44577d761094e3f204dd85a0eb3c0\"\u003e\u003ccode\u003e508588d\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.96\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/fd3d17795980826ef2b5e34fd4eb62338d1ecc55\"\u003e\u003ccode\u003efd3d177\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4be6bbd12cb1ad40505dab385bafab62e70a4da8\"\u003e\u003ccode\u003e4be6bbd\u003c/code\u003e\u003c/a\u003e chore: enable dependabot for pre-commit and refresh hook pins (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4775\"\u003e#4775\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/a47ce816eb1f088956353335f2bd2cd56b6b1fc6\"\u003e\u003ccode\u003ea47ce81\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/4ccdda83164e69faf24839542d20a523c5263465\"\u003e\u003ccode\u003e4ccdda8\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/03cc5cdf7c550b4a36d43f07745f77aa9dbc0c9a\"\u003e\u003ccode\u003e03cc5cd\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.95\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ab160a576b0e6e150a9752837fe5e52961ae7349\"\u003e\u003ccode\u003eab160a5\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/10094042f04226ec32ae43a7051c2635bc033164\"\u003e\u003ccode\u003e1009404\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.94'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0017b80aa909dd8e95cfde8f79345cef8bcafc66\"\u003e\u003ccode\u003e0017b80\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.94' into develop\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.42.39...1.42.96\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.42.39 to 1.42.96\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/435c9a3f09d6ef9716e5d8a3c0d4be118cfbfe41\"\u003e\u003ccode\u003e435c9a3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.96'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/804525091b40e8bdfd90f2145ebe73f59c6ba584\"\u003e\u003ccode\u003e8045250\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.96\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/243b48e8f21e9c814e63bbe93221590da6c48904\"\u003e\u003ccode\u003e243b48e\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8ec506c1254150336916f8ed495df6529b9c5fb9\"\u003e\u003ccode\u003e8ec506c\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/8ce183e14781ff29cff89057e84b398d0f5f0c81\"\u003e\u003ccode\u003e8ce183e\u003c/code\u003e\u003c/a\u003e chore: enable dependabot for pre-commit and refresh hook pins (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3685\"\u003e#3685\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/0aaee4ddba63cfd6337907ea8491a97424606586\"\u003e\u003ccode\u003e0aaee4d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/daaf0f37dc534f42953184a0910d9a5ea154a967\"\u003e\u003ccode\u003edaaf0f3\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.95' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/157860ae07eb2b3f6c32cfaa4f10c48af69a084c\"\u003e\u003ccode\u003e157860a\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.95\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/19a789f6b7050d12b4188589a60efc454fdd6efc\"\u003e\u003ccode\u003e19a789f\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b88d178dd9bd410769f72e45f72e4d8e0716b2c4\"\u003e\u003ccode\u003eb88d178\u003c/code\u003e\u003c/a\u003e Merge customizations for CloudWatch OTel enrichment (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.42.39...1.42.96\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cbor2` from 5.8.0 to 5.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/cbor2/releases\"\u003ecbor2's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.9.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003emax_depth\u003c/code\u003e decoder parameter to limit the maximum allowed nesting level of containers, with a default value of 400 levels (CVE-2026-26209)\u003c/li\u003e\n\u003cli\u003eChanged the default \u003ccode\u003eread_size\u003c/code\u003e from 4096 to 1 for backwards compatibility. The buffered reads introduced in 5.8.0 could cause issues when code needs to access the stream position after decoding. Users can opt-in to faster decoding by passing \u003ccode\u003eread_size=4096\u003c/code\u003e when they don't need to access the stream directly after decoding. Added a direct read path for \u003ccode\u003eread_size=1\u003c/code\u003e to avoid buffer management overhead. (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/pull/275\"\u003e#275\u003c/a\u003e; PR by \u003ca href=\"https://github.com/andreer\"\u003e\u003ccode\u003e@​andreer\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed C encoder not respecting string referencing when encoding string-type datetimes (tag 0) (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/254\"\u003e#254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a missed check for an exception in the C implementation of \u003ccode\u003eCBOREncoder.encode_shared()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed two reference/memory leaks in the C extension's long string decoder (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/pull/290\"\u003e#290\u003c/a\u003e PR by \u003ca href=\"https://github.com/killiancowan82\"\u003e\u003ccode\u003e@​killiancowan82\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed C decoder ignoring the \u003ccode\u003estr_errors\u003c/code\u003e setting when decoding strings, and improved string decoding performance by using stack allocation for small strings and eliminating unnecessary conditionals. Benchmarks show 9-17% faster deserialization. (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/255\"\u003e#255\u003c/a\u003e; PR by \u003ca href=\"https://github.com/andreer\"\u003e\u003ccode\u003e@​andreer\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/93c598838d50b554e242920902aada82d32d55bc\"\u003e\u003ccode\u003e93c5988\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/d903d62c86de118e8abe626596f9be7b98ac44e9\"\u003e\u003ccode\u003ed903d62\u003c/code\u003e\u003c/a\u003e Updated the max_depth default value in the C function signature\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/2b53b2813d44a7919dae18747b5ac36cf9c5fb87\"\u003e\u003ccode\u003e2b53b28\u003c/code\u003e\u003c/a\u003e Stack allocate small strings (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/270\"\u003e#270\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/a7ac10d5cbb7a8622e8270c201a131ac2abc26c7\"\u003e\u003ccode\u003ea7ac10d\u003c/code\u003e\u003c/a\u003e Upped the max_depth value to 400\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/54c8ed541c5f4842508cace5ff4b2aae54bc731b\"\u003e\u003ccode\u003e54c8ed5\u003c/code\u003e\u003c/a\u003e Fixed reference/memory leaks in decode_definite_long_string (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/290\"\u003e#290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/a8d92dc3dc00233c796c4abccb5daa31089bf3c0\"\u003e\u003ccode\u003ea8d92dc\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/289\"\u003e#289\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/c91aa007117828560329a1624eabc5dad5435ebc\"\u003e\u003ccode\u003ec91aa00\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/cbor2/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/53521e7ca96c7a19f8a529fe59ef566212a24b3f\"\u003e\u003ccode\u003e53521e7\u003c/code\u003e\u003c/a\u003e Fixed ssize_t to Py_ssize_t\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/94e0d2125fbfb183606afa9ef07754a8dba50748\"\u003e\u003ccode\u003e94e0d21\u003c/code\u003e\u003c/a\u003e Added missing Python counterpart for max_depth\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/cbor2/commit/bcb6cea4edde1d00ff4f0eece883dea951f66e1b\"\u003e\u003ccode\u003ebcb6cea\u003c/code\u003e\u003c/a\u003e Added the max_depth decoder parameter\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/cbor2/compare/5.8.0...5.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/c...\n\n_Description has been truncated_","html_url":"https://github.com/rahim8050/weather-apis/pull/62","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/rahim8050%2Fweather-apis/issues/62","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/62/packages"}},{"old_version":"1.5.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-04-21T23:44:08.000Z","version_change":"1.5.0 → 1.6.0","issue":{"uuid":"4305889176","node_id":"PR_kwDORvGpa87Uds6e","number":27,"state":"closed","title":"Chore(deps): Bump the small-changes group across 1 directory with 37 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-05-05T23:41:26.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-21T23:44:08.000Z","updated_at":"2026-05-05T23:41:28.000Z","time_to_close":1209438,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"small-changes","update_count":37,"packages":[{"name":"dateparser","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"django-guardian","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/django-guardian/django-guardian"},{"name":"django-treenode","old_version":"0.23.3","new_version":"0.24.0","repository_url":"https://github.com/fabiocaccamo/django-treenode"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"drf-spectacular-sidecar","old_version":"2026.3.1","new_version":"2026.4.14","repository_url":"https://github.com/tfranzel/drf-spectacular-sidecar"},{"name":"filelock","old_version":"3.25.2","new_version":"3.29.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gotenberg-client","old_version":"0.13.1","new_version":"0.14.0","repository_url":"https://github.com/stumpylog/gotenberg-client"},{"name":"imap-tools","old_version":"1.11.1","new_version":"1.12.1","repository_url":"https://github.com/ikvk/imap_tools"},{"name":"llama-index-core","old_version":"0.14.16","new_version":"0.14.21","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-embeddings-huggingface","old_version":"0.6.1","new_version":"0.7.0"},{"name":"llama-index-embeddings-openai","old_version":"0.5.2","new_version":"0.6.0"},{"name":"llama-index-llms-ollama","old_version":"0.9.1","new_version":"0.10.1"},{"name":"llama-index-llms-openai","old_version":"0.6.26","new_version":"0.7.5"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.3","new_version":"0.6.0"},{"name":"nltk","old_version":"3.9.3","new_version":"3.9.4","repository_url":"https://github.com/nltk/nltk"},{"name":"ocrmypdf","old_version":"17.3.0","new_version":"17.4.2","repository_url":"https://github.com/ocrmypdf/OCRmyPDF"},{"name":"openai","old_version":"2.26.0","new_version":"2.32.0","repository_url":"https://github.com/openai/openai-python"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"regex","old_version":"2026.2.28","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"sentence-transformers","old_version":"5.2.3","new_version":"5.4.1","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"tika-client","old_version":"0.10.0","new_version":"0.11.0","repository_url":"https://github.com/stumpylog/tika-client"},{"name":"torch","old_version":"2.10.0","new_version":"2.11.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"zensical","old_version":"0.0.26","new_version":"0.0.34","repository_url":"https://github.com/zensical/zensical"},{"name":"faker","old_version":"40.8.0","new_version":"40.15.0","repository_url":"https://github.com/joke2k/faker"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"pytest-httpx","old_version":"0.36.0","new_version":"0.36.2","repository_url":"https://github.com/Colin-b/pytest_httpx"},{"name":"prek","old_version":"0.3.5","new_version":"0.3.10","repository_url":"https://github.com/j178/prek"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.11","repository_url":"https://github.com/astral-sh/ruff"},{"name":"celery-types","old_version":"0.24.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.2","repository_url":"https://github.com/python/mypy"},{"name":"mypy-baseline","old_version":"0.7.3","new_version":"0.7.4","repository_url":"https://github.com/orsinium-labs/mypy-baseline"},{"name":"pyrefly","old_version":"0.55.0","new_version":"0.62.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"types-dateparser","old_version":"1.3.0.20260206","new_version":"1.4.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the small-changes group with 36 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.3.0` | `1.4.0` |\n| [django-guardian](https://github.com/django-guardian/django-guardian) | `3.3.0` | `3.3.1` |\n| [django-treenode](https://github.com/fabiocaccamo/django-treenode) | `0.23.3` | `0.24.0` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [drf-spectacular-sidecar](https://github.com/tfranzel/drf-spectacular-sidecar) | `2026.3.1` | `2026.4.14` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.25.2` | `3.29.0` |\n| [gotenberg-client](https://github.com/stumpylog/gotenberg-client) | `0.13.1` | `0.14.0` |\n| [imap-tools](https://github.com/ikvk/imap_tools) | `1.11.1` | `1.12.1` |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.16` | `0.14.21` |\n| llama-index-embeddings-huggingface | `0.6.1` | `0.7.0` |\n| llama-index-embeddings-openai | `0.5.2` | `0.6.0` |\n| llama-index-llms-ollama | `0.9.1` | `0.10.1` |\n| llama-index-llms-openai | `0.6.26` | `0.7.5` |\n| llama-index-vector-stores-faiss | `0.5.3` | `0.6.0` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.3` | `3.9.4` |\n| [ocrmypdf](https://github.com/ocrmypdf/OCRmyPDF) | `17.3.0` | `17.4.2` |\n| [openai](https://github.com/openai/openai-python) | `2.26.0` | `2.32.0` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.5` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.4.4` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.3` | `5.4.1` |\n| [tika-client](https://github.com/stumpylog/tika-client) | `0.10.0` | `0.11.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.10.0` | `2.11.0` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.26` | `0.0.34` |\n| [faker](https://github.com/joke2k/faker) | `40.8.0` | `40.15.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [pytest-httpx](https://github.com/Colin-b/pytest_httpx) | `0.36.0` | `0.36.2` |\n| [prek](https://github.com/j178/prek) | `0.3.5` | `0.3.10` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.11` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.24.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.2` |\n| [mypy-baseline](https://github.com/orsinium-labs/mypy-baseline) | `0.7.3` | `0.7.4` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.55.0` | `0.62.0` |\n| [types-dateparser](https://github.com/python/typeshed) | `1.3.0.20260206` | `1.4.0.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n\n\nUpdates `dateparser` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2026-03-26)\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/commit/60b8a75b1a7e84d875e491e6c730a844646ae91b\"\u003e\u003ccode\u003e60b8a75\u003c/code\u003e\u003c/a\u003e Bump version: 1.3.0 → 1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/d405657bbefd10ec8c1cb3df71ce295ca473f910\"\u003e\u003ccode\u003ed405657\u003c/code\u003e\u003c/a\u003e 1.4.0 release notes and fixes (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/7a3113e3b495dc95e6e238da696433e259f11827\"\u003e\u003ccode\u003e7a3113e\u003c/code\u003e\u003c/a\u003e Add the en-US locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/62710c066b2cb44e508d07532df069b78d52bbf0\"\u003e\u003ccode\u003e62710c0\u003c/code\u003e\u003c/a\u003e Add a security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/341d3080f377c058b35ab39353940ba0f9349724\"\u003e\u003ccode\u003e341d308\u003c/code\u003e\u003c/a\u003e Fix deployment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/5add61cccf258788f9cca748dee3d5094ff65651\"\u003e\u003ccode\u003e5add61c\u003c/code\u003e\u003c/a\u003e Use official publish GitHub action in CI (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e22e62e336cc59b1ac38ea947c1b9b471d420846\"\u003e\u003ccode\u003ee22e62e\u003c/code\u003e\u003c/a\u003e Fix word-number phrases parsing (e.g., 'two days later') (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/8cdcf800ff16a0745b4782359db0c8085961219d\"\u003e\u003ccode\u003e8cdcf80\u003c/code\u003e\u003c/a\u003e Make logo more translucent (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1312\"\u003e#1312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e0939ecdd7ca04a24ca9d9a325224fe7fef7921c\"\u003e\u003ccode\u003ee0939ec\u003c/code\u003e\u003c/a\u003e Replace 'setup.py install' (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/cd5f226454e0ed3fe93164e7eff55b00f57e57c7\"\u003e\u003ccode\u003ecd5f226\u003c/code\u003e\u003c/a\u003e Honor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying year-bias...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-guardian` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-guardian/django-guardian/releases\"\u003edjango-guardian's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove managers typing and reduce code duplication by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/962\"\u003edjango-guardian/django-guardian#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd dependabot configuration by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/964\"\u003edjango-guardian/django-guardian#964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/965\"\u003edjango-guardian/django-guardian#965\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix possible IndexError when trying to bulk-assign permissions by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/969\"\u003edjango-guardian/django-guardian#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update coverage badge to 97.8% 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/django-guardian/django-guardian/pull/970\"\u003edjango-guardian/django-guardian#970\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix indentation in code example by \u003ca href=\"https://github.com/jmwhitworth\"\u003e\u003ccode\u003e@​jmwhitworth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/971\"\u003edjango-guardian/django-guardian#971\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/975\"\u003edjango-guardian/django-guardian#975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease process section is added by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/977\"\u003edjango-guardian/django-guardian#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e429 document how to migrate from generic object permissions to direct foreign keys by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/978\"\u003edjango-guardian/django-guardian#978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue966 by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/976\"\u003edjango-guardian/django-guardian#976\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eminor version update by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/979\"\u003edjango-guardian/django-guardian#979\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/jmwhitworth\"\u003e\u003ccode\u003e@​jmwhitworth\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/971\"\u003edjango-guardian/django-guardian#971\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-guardian/django-guardian/compare/3.3.0...3.3.1\"\u003ehttps://github.com/django-guardian/django-guardian/compare/3.3.0...3.3.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/django-guardian/django-guardian/commit/55d47bad5f7c8f038f77b8c021cfbcff3d1b9cc3\"\u003e\u003ccode\u003e55d47ba\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/979\"\u003e#979\u003c/a\u003e from django-guardian/version-update-3-3-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/fefaa91fa2f00cfdf71aa6026b1de29930900ee1\"\u003e\u003ccode\u003efefaa91\u003c/code\u003e\u003c/a\u003e minor version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/8ea54bb93cc23562f1d93183d6ada8d1469aa2c7\"\u003e\u003ccode\u003e8ea54bb\u003c/code\u003e\u003c/a\u003e Fix Issue 966 (\u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/ec417f9d67f3b374deb20705ad820fe6e4753816\"\u003e\u003ccode\u003eec417f9\u003c/code\u003e\u003c/a\u003e 429 document how to migrate from generic object permissions to direct foreign...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/5667e5b235069f6940760814067a6b237f128b03\"\u003e\u003ccode\u003e5667e5b\u003c/code\u003e\u003c/a\u003e Add release process documentation (\u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/582fc93a93738052218399b5b24061acb699d94a\"\u003e\u003ccode\u003e582fc93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/975\"\u003e#975\u003c/a\u003e from django-guardian/dependabot/github_actions/github...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/16abffc9e69e0798d5577190bbe912d1ee3cfc4f\"\u003e\u003ccode\u003e16abffc\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 5 to 7 in the github-actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/4dba1aad5777dabf3660d6847a388e890ef49671\"\u003e\u003ccode\u003e4dba1aa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/971\"\u003e#971\u003c/a\u003e from jmwhitworth/docs/fix-group-model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/3cf3beee1289f7018309f165be9aeba50f729002\"\u003e\u003ccode\u003e3cf3bee\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/970\"\u003e#970\u003c/a\u003e from django-guardian/auto-update-coverage-badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/5cbcf7d4ac7bd89399b9a623282a2975a62adc75\"\u003e\u003ccode\u003e5cbcf7d\u003c/code\u003e\u003c/a\u003e Fix indentation in code example\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-guardian/django-guardian/compare/3.3.0...3.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-treenode` from 0.23.3 to 0.24.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fabiocaccamo/django-treenode/releases\"\u003edjango-treenode's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.24.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ePython 3.14\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDjango 6.0\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eFix skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump test requirements.\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\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/fabiocaccamo/django-treenode/blob/main/CHANGELOG.md\"\u003edjango-treenode's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/releases/tag/0.24.0\"\u003e0.24.0\u003c/a\u003e - 2026-04-15\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ePython 3.14\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eDjango 6.0\u003c/code\u003e support.\u003c/li\u003e\n\u003cli\u003eFix skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump test requirements.\u003c/li\u003e\n\u003cli\u003eBump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\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/fabiocaccamo/django-treenode/commit/c5afb6cb48d81b4a0d0b8279666e22a6c4f91624\"\u003e\u003ccode\u003ec5afb6c\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003eCHANGELOG\u003c/code\u003e and version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/246de2cfad245d2386617d54dc843ae91c6edb41\"\u003e\u003ccode\u003e246de2c\u003c/code\u003e\u003c/a\u003e Bump \u003ccode\u003epre-commit\u003c/code\u003e hooks.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/536d7504b02b560c95ec914bf09dffacee8939c0\"\u003e\u003ccode\u003e536d750\u003c/code\u003e\u003c/a\u003e Update tox requirement in the python-requirements group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/214\"\u003e#214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/2c835fb06aacf6fddbe5a64cfcd789b9a40c4b5e\"\u003e\u003ccode\u003e2c835fb\u003c/code\u003e\u003c/a\u003e fix: skip Python abstract classes in \u003ccode\u003e__is_treenode_model\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/215\"\u003e#215\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/217\"\u003e#217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/452bbd165ae9280823394f830f719808e92b6857\"\u003e\u003ccode\u003e452bbd1\u003c/code\u003e\u003c/a\u003e Bump codecov/codecov-action from 5 to 6 in the github-actions group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/216\"\u003e#216\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/85f10b447a101f5fe2d9110ec2ccd48da901cf81\"\u003e\u003ccode\u003e85f10b4\u003c/code\u003e\u003c/a\u003e Update coverage requirement in the python-requirements group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/8f71467fddd9db697dec018d4bb97d716e506c37\"\u003e\u003ccode\u003e8f71467\u003c/code\u003e\u003c/a\u003e Update pre-commit hooks. (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/2a572e30696820cd416d6c71c4d925f8638dae36\"\u003e\u003ccode\u003e2a572e3\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request in the github-actions group (\u003ca href=\"https://redirect.github.com/fabiocaccamo/django-treenode/issues/212\"\u003e#212\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/a13fc25c5c70d451f7312ad0879c08c9dca3f074\"\u003e\u003ccode\u003ea13fc25\u003c/code\u003e\u003c/a\u003e Update .pre-commit-config.yaml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fabiocaccamo/django-treenode/commit/16b84e0350ac6583da522436312bf45d37b9f6f2\"\u003e\u003ccode\u003e16b84e0\u003c/code\u003e\u003c/a\u003e Update FUNDING.yml\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fabiocaccamo/django-treenode/compare/0.23.3...0.24.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `djangorestframework` from 3.16.1 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/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values 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/9928\"\u003eencode/django-rest-framework#9928\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.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.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 Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support 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/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field 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/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format 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/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e 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/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher 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/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation 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/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular-sidecar` from 2026.3.1 to 2026.4.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/05fbf42eca0a97579a884c5264a0e146673d985c\"\u003e\u003ccode\u003e05fbf42\u003c/code\u003e\u003c/a\u003e version bump 2026.4.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/4ca03e1f015837694091dd3698f4ef6cd8ecf45d\"\u003e\u003ccode\u003e4ca03e1\u003c/code\u003e\u003c/a\u003e Force rebuild for redoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/ab433ec2a85576947809c9039b62c966d5452694\"\u003e\u003ccode\u003eab433ec\u003c/code\u003e\u003c/a\u003e Merge branch 'pr16'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/f14ea06d1572efe0c840cba36570cf866f6fb069\"\u003e\u003ccode\u003ef14ea06\u003c/code\u003e\u003c/a\u003e update github actions due to deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/50ef330d14f39d5221ae30aa3aa4b9b408e10df3\"\u003e\u003ccode\u003e50ef330\u003c/code\u003e\u003c/a\u003e Fix redoc files \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular-sidecar/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/b714a7ffda691c8a0b06c80e091ce1e5e4f92666\"\u003e\u003ccode\u003eb714a7f\u003c/code\u003e\u003c/a\u003e version bump 2026.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/63be86409f10222db354b736811f877238a68a26\"\u003e\u003ccode\u003e63be864\u003c/code\u003e\u003c/a\u003e Fix: update assets list\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/compare/2026.3.1...2026.4.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.25.2 to 3.29.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.29.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(async): use single-thread executor for lock consistency by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/533\"\u003etox-dev/filelock#533\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): enable stale lock detection on Windows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/534\"\u003etox-dev/filelock#534\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.28.0...3.29.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.28.0...3.29.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.28.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/529\"\u003etox-dev/filelock#529\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.27.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/528\"\u003etox-dev/filelock#528\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling by \u003ca href=\"https://github.com/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\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/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/517\"\u003etox-dev/filelock#517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 fix(ci): restore git credentials for release job by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/520\"\u003etox-dev/filelock#520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/524\"\u003etox-dev/filelock#524\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.25.2...3.26.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.25.2...3.26.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/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e3.29.0 (2026-04-19)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): enable stale lock detection on Windows :pr:\u003ccode\u003e534\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(async): use single-thread executor for lock consistency :pr:\u003ccode\u003e533\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 :pr:\u003ccode\u003e530\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.28.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again :pr:\u003ccode\u003e529\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.1 (2026-04-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling :pr:\u003ccode\u003e518\u003c/code\u003e - by :user:\u003ccode\u003enaarob\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 :pr:\u003ccode\u003e525\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.0 (2026-04-06)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking :pr:\u003ccode\u003e524\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e523\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 :pr:\u003ccode\u003e522\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove persist-credentials: false from release job :pr:\u003ccode\u003e520\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e519\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing :pr:\u003ccode\u003e517\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e516\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e514\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.2 (2026-03-11)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(unix): suppress EIO on close in Docker bind mounts :pr:\u003ccode\u003e513\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.1 (2026-03-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e510\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(win): restore best-effort lock file cleanup on release :pr:\u003ccode\u003e511\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/tox-dev/filelock/commit/469b47f192b0a9f8c8b795d9b9f57212c716959b\"\u003e\u003ccode\u003e469b47f\u003c/code\u003e\u003c/a\u003e Release 3.29.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/e85d07281987e0855ba67c03dfdef342ec1097d5\"\u003e\u003ccode\u003ee85d072\u003c/code\u003e\u003c/a\u003e ✨ feat(soft): enable stale lock detection on Windows (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/534\"\u003e#534\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f5ee1712ced6916b2768812ee378183319339944\"\u003e\u003ccode\u003ef5ee171\u003c/code\u003e\u003c/a\u003e 🐛 fix(async): use single-thread executor for lock consistency (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/533\"\u003e#533\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/2a954588cdf462a786835eeb102240ce79fecc8b\"\u003e\u003ccode\u003e2a95458\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/530\"\u003e#530\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/55de20c0819652362881906fa289feff5a323c19\"\u003e\u003ccode\u003e55de20c\u003c/code\u003e\u003c/a\u003e Release 3.28.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/476b0e4a92776fe530b5d993247342f039004174\"\u003e\u003ccode\u003e476b0e4\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): unbreak release workflow, publish to PyPI again (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/824713edc32b54efd66566907f97c1238502810e\"\u003e\u003ccode\u003e824713e\u003c/code\u003e\u003c/a\u003e ✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/528\"\u003e#528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/9879de9298db93ffba0a9f58d9de75e9e2a00fc1\"\u003e\u003ccode\u003e9879de9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/527\"\u003e#527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4cfab498b6916f89be46152efa4a72e9731be98f\"\u003e\u003ccode\u003e4cfab49\u003c/code\u003e\u003c/a\u003e Release 3.26.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/734c9f26e8107ad24886129fc68865f0b46cf71f\"\u003e\u003ccode\u003e734c9f2\u003c/code\u003e\u003c/a\u003e 🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handli...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.25.2...3.29.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gotenberg-client` from 0.13.1 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/stumpylog/gotenberg-client/releases\"\u003egotenberg-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[BREAKING]: Drop support for Python 3.9\n\u003cul\u003e\n\u003cli\u003eThis modernizes typing annotations and allows adding \u003ccode\u003eslots\u003c/code\u003e to all dataclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA bug in the retry logic which would have raised almost immediately\u003c/li\u003e\n\u003cli\u003eMinor internal class names were spelled incorrectly\u003c/li\u003e\n\u003cli\u003ePDF/A-1b was missing as a PDF output option\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/stumpylog/gotenberg-client/blob/main/CHANGELOG.md\"\u003egotenberg-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.14.0] - 2023-03-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[BREAKING]: Drop support for Python 3.9\n\u003cul\u003e\n\u003cli\u003eThis modernizes typing annotations and allows adding \u003ccode\u003eslots\u003c/code\u003e to all dataclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA bug in the retry logic which would have raised almost immediately\u003c/li\u003e\n\u003cli\u003eMinor internal class names were spelled incorrectly\u003c/li\u003e\n\u003cli\u003ePDF/A-1b was missing as a PDF output option\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/stumpylog/gotenberg-client/commit/adf65d3f73b814720e65fd4fc6e721ae0778642c\"\u003e\u003ccode\u003eadf65d3\u003c/code\u003e\u003c/a\u003e Merge branch 'release/0.14.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/05ad02b067027343e7ac2bbfe0b712c078d18974\"\u003e\u003ccode\u003e05ad02b\u003c/code\u003e\u003c/a\u003e Bumps version to 0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d2b41f058e521c6059a483aa5e72b2e7ffd6b148\"\u003e\u003ccode\u003ed2b41f0\u003c/code\u003e\u003c/a\u003e Updates hooks and resolves zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/c27040d49f92783e4de1292b7bb239429af92e05\"\u003e\u003ccode\u003ec27040d\u003c/code\u003e\u003c/a\u003e Resolves the cached_property\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/e90c4bd3a96bc5700d693c6ce400c9ed2ff60867\"\u003e\u003ccode\u003ee90c4bd\u003c/code\u003e\u003c/a\u003e Adds slots=True to the dataclasses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d06b72da77320996cc8974ad776f4fb1381e7971\"\u003e\u003ccode\u003ed06b72d\u003c/code\u003e\u003c/a\u003e Dropping Python 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/3522ca08f5055681bba509ae903b4e3a246f0ad2\"\u003e\u003ccode\u003e3522ca0\u003c/code\u003e\u003c/a\u003e Bump the actions group with 2 updates (\u003ca href=\"https://redirect.github.com/stumpylog/gotenberg-client/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/3bdcaefa42849fe9bcbc3a2fb0b728f2b42b2bb4\"\u003e\u003ccode\u003e3bdcaef\u003c/code\u003e\u003c/a\u003e Fixes a typo in the universal access mixin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d560579a4829740d9bbaf6dc47fc485521377646\"\u003e\u003ccode\u003ed560579\u003c/code\u003e\u003c/a\u003e AI generated review for some tasks that might be nice\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/7833b99b4b03b7d6a6d37a3e1f42137afddc3b9e\"\u003e\u003ccode\u003e7833b99\u003c/code\u003e\u003c/a\u003e Transitions away from the Codecov test results action\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stumpylog/gotenberg-client/compare/0.13.1...0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imap-tools` from 1.11.1 to 1.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ikvk/imap_tools/releases\"\u003eimap-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.12.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: BaseMailBox.login now quotes username to handle special IMAP characters (e.g. \u003ccode\u003e*\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev1.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/blob/master/docs/release_notes.rst\"\u003eimap-tools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.12.1\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFixed: BaseMailBox.login now quotes username to handle special IMAP characters (e.g. \u003ccode\u003e*\u003c/code\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e1.12.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/commit/4ff405b742191ec5ab360ce5b8efb6aeb6786075\"\u003e\u003ccode\u003e4ff405b\u003c/code\u003e\u003c/a\u003e vers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/6443dd61f6c66bec21078ad79020d7fc456a30ba\"\u003e\u003ccode\u003e6443dd6\u003c/code\u003e\u003c/a\u003e Fixes the username quoting when using login with a username containing charac...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/74083c4d31e94d9f0b5a0504c8a27f7a1525fd5d\"\u003e\u003ccode\u003e74083c4\u003c/code\u003e\u003c/a\u003e doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/4db25623a72277bf02480757fb28f21fc01addd6\"\u003e\u003ccode\u003e4db2562\u003c/code\u003e\u003c/a\u003e doc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/c59a60723b7e6fec353590811ec6ad674110031c\"\u003e\u003ccode\u003ec59a607\u003c/code\u003e\u003c/a\u003e MailMessage.headers - LazyHeaders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/32ddf22fcac2fc80c7ed9ce0a6719d020c9ff57f\"\u003e\u003ccode\u003e32ddf22\u003c/code\u003e\u003c/a\u003e MailMessage.headers docs\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ikvk/imap_tools/compare/v1.11.1...v1.12.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-core` from 0.14.16 to 0.14.21\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.21\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-04-21]\u003c/h2\u003e\n\u003ch3\u003ellama-index-callbacks-honeyhive [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.21]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(core): prevent \u003ccode\u003eKeyError\u003c/code\u003e in \u003ccode\u003eDocumentSummaryIndex.delete_nodes\u003c/code\u003e when invalid node ID is provided (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21067\"\u003e#21067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): handle \u003ccode\u003eValueError\u003c/code\u003e and \u003ccode\u003eTypeError\u003c/code\u003e from structured output failures (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21090\"\u003e#21090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add explicit UTF-8 encoding to persistence layer fs.open() calls (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21111\"\u003e#21111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Breaking Change in Message Block Buffer Resolution (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21339\"\u003e#21339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-huggingface-optimum [0.4.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-nvidia [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(embeddings-nvidia): add http client support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21046\"\u003e#21046\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-oracleai [0.4.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-premai [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-text-embeddings-inference [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-textembed [0.4.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-together [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.6.1]\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/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.21]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix(core): prevent \u003ccode\u003eKeyError\u003c/code\u003e in \u003ccode\u003eDocumentSummaryIndex.delete_nodes\u003c/code\u003e when invalid node ID is provided (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21067\"\u003e#21067\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): handle \u003ccode\u003eValueError\u003c/code\u003e and \u003ccode\u003eTypeError\u003c/code\u003e from structured output failures (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21090\"\u003e#21090\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: add explicit UTF-8 encoding to persistence layer fs.open() calls (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21111\"\u003e#21111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix Breaking Change in Message Block Buffer Resolution (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21339\"\u003e#21339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-huggingface-optimum [0.4.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-nvidia [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat(embeddings-nvidia): add http client support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21046\"\u003e#21046\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-oracleai [0.4.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-premai [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-text-embeddings-inference [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-textembed [0.4.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-together [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.6.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-vertex [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-vertex-endpoint [0.4.0]\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/run-llama/llama_index/commit/931f56eaf25910fb5296f58e6e2f7293e61d148c\"\u003e\u003ccode\u003e931f56e\u003c/code\u003e\u003c/a\u003e Release 0.14.21 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21427\"\u003e#21427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/17fba87d51c28202ad30da6ba63fe6187550a5a6\"\u003e\u003ccode\u003e17fba87\u003c/code\u003e\u003c/a\u003e fix: add explicit UTF-8 encoding to persistence layer fs.open() calls (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21111\"\u003e#21111\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/33f7ba4e3c5e20c6b1a26cae354fa39900e6ffb4\"\u003e\u003ccode\u003e33f7ba4\u003c/code\u003e\u003c/a\u003e Adds Google Gemma models and Bump version to 0.14.6 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21380\"\u003e#21380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/38c17169d0755406d0f216ffad6fa5b66158dc62\"\u003e\u003ccode\u003e38c1716\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pip group across 96 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21381\"\u003e#21381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/7921256cd1e85afe8cf15ef51dccd996e96751a0\"\u003e\u003ccode\u003e7921256\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pip group across 87 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21382\"\u003e#21382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/ffc726f65811f089e4dcea53e456e0256632b07d\"\u003e\u003ccode\u003effc726f\u003c/code\u003e\u003c/a\u003e chore(deps): bump the pip group across 68 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/91fe33e75ce31d3ca447c017a5ea153ed8b38700\"\u003e\u003ccode\u003e91fe33e\u003c/code\u003e\u003c/a\u003e Fix Breaking Change in Message Block Buffer Resolution (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21339\"\u003e#21339\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/10955bf0d24d6b695ed71993112276abf3a8aed6\"\u003e\u003ccode\u003e10955bf\u003c/code\u003e\u003c/a\u003e fix: parse MistralAI structured ThinkChunk/TextChunk without regex (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/20916\"\u003e#20916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/9eb4c2dcb68cdbf1d8b040b3ff13f6ac46e3b118\"\u003e\u003ccode\u003e9eb4c2d\u003c/code\u003e\u003c/a\u003e fix: filter unknown kwargs before VectorStoreQuery construction (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/14557\"\u003e#14557\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21\"\u003e#21\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/a61f2cf3ddbe33c0d45ee1363428885e9e4134cb\"\u003e\u003ccode\u003ea61f2cf\u003c/code\u003e\u003c/a\u003e fix(core): handle \u003ccode\u003eValueError\u003c/code\u003e and \u003ccode\u003eTypeError\u003c/code\u003e from structured output failure...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.16...v0.14.21\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-embeddings-huggingface` from 0.6.1 to 0.7.0\n\nUpdates `llama-index-embeddings-openai` from 0.5.2 to 0.6.0\n\nUpdates `llama-index-llms-ollama` from 0.9.1 to 0.10.1\n\nUpdates `llama-index-llms-openai` from 0.6.26 to 0.7.5\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.3 to 0.6.0\n\nUpdates `nltk` from 3.9.3 to 3.9.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nltk/nltk/blob/develop/ChangeLog\"\u003enltk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion 3.9.4 2026-03-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14\u003c/li\u003e\n\u003cli\u003eFix bug in Levenshtein distance when substitution_cost \u0026gt; 2\u003c/li\u003e\n\u003cli\u003eFix bug in Treebank detokeniser re quote ordering\u003c/li\u003e\n\u003cli\u003eFix bug in Jaro similarity for empty strings\u003c/li\u003e\n\u003cli\u003eSeveral security enhancements\u003c/li\u003e\n\u003cli\u003eFix GHSA-rf74-v2fm-23pw: unbounded recursion in JSONTaggedDecoder\u003c/li\u003e\n\u003cli\u003eImplement TextTiling vocabulary introduction method (Hearst 1997)\u003c/li\u003e\n\u003cli\u003eFix ALINE feature matrix errors and add comprehensive tests\u003c/li\u003e\n\u003cli\u003eSupport multiple VerbNet versions, fix longid/shortid regex for VerbNet ids\u003c/li\u003e\n\u003cli\u003eLet downloader fallback to md5 when sha256 is unavailable\u003c/li\u003e\n\u003cli\u003eSeveral other minor bugfixes and code cleanups\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.4:\nMin-Yen Kan, Eric Kafe, Emily Voss, bowiechen, Hrudhai01,\njancallewaert, Mr-Neutr0n, pollak.peter89, ylwango613,\u003c/p\u003e\n\u003cp\u003eVersion 3.9.3 2026-02-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2025-14009: secure ZIP extraction in nltk.downloader (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3468\"\u003e#3468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/arbitrary reads in nltk.data for protocol-less refs (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3467\"\u003e#3467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/abs paths in corpus readers and FS pointers (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3479\"\u003e#3479\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3480\"\u003e#3480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eValidate external StanfordSegmenter JARs using SHA256 (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3477\"\u003e#3477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd optional sandbox enforcement for filestring() (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3485\"\u003e#3485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMaintenance: downloader/zipped models, CI/tooling updates\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.3:\nChris Clauss, Eric Kafe, HyperPS, purificant, Shivansh-Game, Christopher Smith\u003c/p\u003e\n\u003cp\u003eVersion 3.9.2 2025-10-01\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate download checksums to use SHA256 in built index\u003c/li\u003e\n\u003cli\u003eFix percentage escape in new-style string formatting\u003c/li\u003e\n\u003cli\u003ereplace shortened URLs using goo.gl\u003c/li\u003e\n\u003cli\u003eMake Wordnet interoperable with various taggers and tagged corpora\u003c/li\u003e\n\u003cli\u003eFix saving PerceptronTagger\u003c/li\u003e\n\u003cli\u003eDocument how to reproduce old Wordnet studies\u003c/li\u003e\n\u003cli\u003eproperly initialize Portuguese corpus reader\u003c/li\u003e\n\u003cli\u003esupport for mixed rules conversion into Chomsky Normal Form\u003c/li\u003e\n\u003cli\u003eonly import tkinter if a GUI is needed\u003c/li\u003e\n\u003cli\u003eissue \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/2112\"\u003e#2112\u003c/a\u003e with Corenlp\u003c/li\u003e\n\u003cli\u003enew environment variable NLTK_DOWNLOADER_FORCE_INTERACTIVE_SHELL\u003c/li\u003e\n\u003cli\u003eLesk defaults to most frequent sense in case of ties\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.2:\nJose Cols, Peter de Blanc, GeneralPoxter, Eric Kafe, William LaCroix, Jason Liu,\nSamer Masterson, Mike014, purificant, Andrew Ernest Ritz, samertm, Ikram Ul Haq,\nChristopher Smith, Ryan Mannion\u003c/p\u003e\n\u003cp\u003eVersion 3.9.1 2024-08-19\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/nltk/nltk/commit/ad9c96ba00a16923ffe917eacf63f1707bfa2d08\"\u003e\u003ccode\u003ead9c96b\u003c/code\u003e\u003c/a\u003e Update copyright year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/7edcddfda566627b897397397cc4d10ae91cb86d\"\u003e\u003ccode\u003e7edcddf\u003c/code\u003e\u003c/a\u003e Updates for 3.9.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/67a2736f89b286b028db08bd247134f17a11fc6b\"\u003e\u003ccode\u003e67a2736\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3180\"\u003e#3180\u003c/a\u003e from yzhaoinuw/bug-on-edit_distance_align\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/2b17ac5358a1c8d4b97455766efde0b786e6cdb2\"\u003e\u003ccode\u003e2b17ac5\u003c/code\u003e\u003c/a\u003e Fix edit_distance_align backtrace for high substitution costs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/4b72976a6ff3d180ed4012f11843e611a8f89516\"\u003e\u003ccode\u003e4b72976\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3018\"\u003e#3018\u003c/a\u003e from JuanIMartinezB/bug/shortid-longid\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/8a5619f53a281149e5342b1a00fe05fe2fc6517f\"\u003e\u003ccode\u003e8a5619f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3222\"\u003e#3222\u003c/a\u003e from Syzygy2048/feature/texttiling-vocabulary-introd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/c6574d755e02b6163d9cd1d0b407076940e08864\"\u003e\u003ccode\u003ec6574d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3289\"\u003e#3289\u003c/a\u003e from ihitamandal/codeflash/optimize-windowdiff-2024-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/98ff5d9eaa1a81511873b9aef857944519c28dc4\"\u003e\u003ccode\u003e98ff5d9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3435\"\u003e#3435\u003c/a\u003e from Hrudhai01/fix-3260-detokenize-quotes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/aec4fce1b84ad725b8975f7365b23a4f626572a9\"\u003e\u003ccode\u003eaec4fce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3522\"\u003e#3522\u003c/a\u003e from ekaf/pathsec\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/eec4ee3591cb9cb8b8c2989f08012608c841d532\"\u003e\u003ccode\u003eeec4ee3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3526\"\u003e#3526\u003c/a\u003e from nltk/update-contributing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nltk/nltk/compare/3.9.3...3.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ocrmypdf` from 17.3.0 to 17.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/releases\"\u003eocrmypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev17.4.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed Python API unconditionally overriding \u003ccode\u003ePIL.Image.MAX_IMAGE_PIXELS\u003c/code\u003e\nwhen the caller did not explicitly set \u003ccode\u003emax_image_mpixels\u003c/code\u003e. Host\napplications (e.g. Paperless-NGX) that configure the PIL limit before\ninvoking \u003ccode\u003eocrmypdf.ocr()\u003c/code\u003e now have their setting respected. The CLI\ndefault of 250 megapixels is unchanged. {issue}\u003ccode\u003e1665\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdated uv.lock to avoid pinning a vulnerable version of Pillow. {issue}\u003ccode\u003e1666\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev17.4.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed RTL text extraction order in the fpdf2 renderer. Arabic lam-alef\nligatures and other multi-character CMap entries were garbled by the bidi\nalgorithm during text extraction. {issue}\u003ccode\u003e1655\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ework_folder\u003c/code\u003e not being set in \u003ccode\u003ePdfContext\u003c/code\u003e options when using\nthe Python API. Thanks \u003ca href=\"https://github.com/bluebox-steven\"\u003e\u003ccode\u003e@​bluebox-steven\u003c/code\u003e\u003c/a\u003e. {issue}\u003ccode\u003e1613\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdated Ghostscript JPEG corruption warning to include the detected version\nnumber, confirming the bug persists in Ghostscript 10.7.0.\u003c/li\u003e\n\u003cli\u003eInternal refactoring.\u003c/li\u003e\n\u003cli\u003eCI dependency updates.\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/ocrmypdf/OCRmyPDF/commit/1c89cacfef918ea2487ad014de87b6d578361a7c\"\u003e\u003ccode\u003e1c89cac\u003c/code\u003e\u003c/a\u003e Respect host-set PIL.Image.MAX_IMAGE_PIXELS in Python API\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/commit/89c76b51455b7e7e4158558b4ca7a8eaf31063ef\"\u003e\u003ccode\u003e89c76b5\u003c/code\u003e\u003c/a\u003e v17.4.1 release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/commit/6f2b8408c1c490798775fd9f9cfd9d402f6c0017\"\u003e\u003ccode\u003e6f2b840\u003c/code\u003e\u003c/a\u003e v17.4.0 release notes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://gi...\n\n_Description has been truncated_","html_url":"https://github.com/edsanpemc/paperless-ngx/pull/27","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsanpemc%2Fpaperless-ngx/issues/27","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/27/packages"}},{"old_version":"1.5.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-04-14T23:41:41.000Z","version_change":"1.5.0 → 1.6.0","issue":{"uuid":"4265359014","node_id":"PR_kwDORvGpa87SeJm5","number":25,"state":"open","title":"Chore(deps): Bump the small-changes group across 1 directory with 36 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-14T23:41:41.000Z","updated_at":"2026-04-14T23:41:41.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"small-changes","update_count":36,"packages":[{"name":"dateparser","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"django-guardian","old_version":"3.3.0","new_version":"3.3.1","repository_url":"https://github.com/django-guardian/django-guardian"},{"name":"djangorestframework","old_version":"3.16.1","new_version":"3.17.1","repository_url":"https://github.com/encode/django-rest-framework"},{"name":"drf-spectacular-sidecar","old_version":"2026.3.1","new_version":"2026.4.14","repository_url":"https://github.com/tfranzel/drf-spectacular-sidecar"},{"name":"filelock","old_version":"3.25.2","new_version":"3.28.0","repository_url":"https://github.com/tox-dev/py-filelock"},{"name":"gotenberg-client","old_version":"0.13.1","new_version":"0.14.0","repository_url":"https://github.com/stumpylog/gotenberg-client"},{"name":"imap-tools","old_version":"1.11.1","new_version":"1.12.0","repository_url":"https://github.com/ikvk/imap_tools"},{"name":"llama-index-core","old_version":"0.14.16","new_version":"0.14.20","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-embeddings-huggingface","old_version":"0.6.1","new_version":"0.7.0"},{"name":"llama-index-embeddings-openai","old_version":"0.5.2","new_version":"0.6.0"},{"name":"llama-index-llms-ollama","old_version":"0.9.1","new_version":"0.10.1"},{"name":"llama-index-llms-openai","old_version":"0.6.26","new_version":"0.7.5"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.3","new_version":"0.6.0"},{"name":"nltk","old_version":"3.9.3","new_version":"3.9.4","repository_url":"https://github.com/nltk/nltk"},{"name":"ocrmypdf","old_version":"17.3.0","new_version":"17.4.1","repository_url":"https://github.com/ocrmypdf/OCRmyPDF"},{"name":"openai","old_version":"2.26.0","new_version":"2.31.0","repository_url":"https://github.com/openai/openai-python"},{"name":"rapidfuzz","old_version":"3.14.3","new_version":"3.14.5","repository_url":"https://github.com/rapidfuzz/RapidFuzz"},{"name":"regex","old_version":"2026.2.28","new_version":"2026.4.4","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"sentence-transformers","old_version":"5.2.3","new_version":"5.4.1","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"tika-client","old_version":"0.10.0","new_version":"0.11.0","repository_url":"https://github.com/stumpylog/tika-client"},{"name":"torch","old_version":"2.10.0","new_version":"2.11.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"zensical","old_version":"0.0.26","new_version":"0.0.33","repository_url":"https://github.com/zensical/zensical"},{"name":"faker","old_version":"40.8.0","new_version":"40.13.0","repository_url":"https://github.com/joke2k/faker"},{"name":"pytest","old_version":"9.0.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"pytest-httpx","old_version":"0.36.0","new_version":"0.36.2","repository_url":"https://github.com/Colin-b/pytest_httpx"},{"name":"prek","old_version":"0.3.5","new_version":"0.3.9","repository_url":"https://github.com/j178/prek"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.10","repository_url":"https://github.com/astral-sh/ruff"},{"name":"celery-types","old_version":"0.24.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.1","repository_url":"https://github.com/python/mypy"},{"name":"mypy-baseline","old_version":"0.7.3","new_version":"0.7.4","repository_url":"https://github.com/orsinium-labs/mypy-baseline"},{"name":"pyrefly","old_version":"0.55.0","new_version":"0.61.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"types-dateparser","old_version":"1.3.0.20260206","new_version":"1.4.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pygments","old_version":"2.19.0.20251121","new_version":"2.20.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the small-changes group with 35 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.3.0` | `1.4.0` |\n| [django-guardian](https://github.com/django-guardian/django-guardian) | `3.3.0` | `3.3.1` |\n| [djangorestframework](https://github.com/encode/django-rest-framework) | `3.16.1` | `3.17.1` |\n| [drf-spectacular-sidecar](https://github.com/tfranzel/drf-spectacular-sidecar) | `2026.3.1` | `2026.4.14` |\n| [filelock](https://github.com/tox-dev/py-filelock) | `3.25.2` | `3.28.0` |\n| [gotenberg-client](https://github.com/stumpylog/gotenberg-client) | `0.13.1` | `0.14.0` |\n| [imap-tools](https://github.com/ikvk/imap_tools) | `1.11.1` | `1.12.0` |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.16` | `0.14.20` |\n| llama-index-embeddings-huggingface | `0.6.1` | `0.7.0` |\n| llama-index-embeddings-openai | `0.5.2` | `0.6.0` |\n| llama-index-llms-ollama | `0.9.1` | `0.10.1` |\n| llama-index-llms-openai | `0.6.26` | `0.7.5` |\n| llama-index-vector-stores-faiss | `0.5.3` | `0.6.0` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.3` | `3.9.4` |\n| [ocrmypdf](https://github.com/ocrmypdf/OCRmyPDF) | `17.3.0` | `17.4.1` |\n| [openai](https://github.com/openai/openai-python) | `2.26.0` | `2.31.0` |\n| [rapidfuzz](https://github.com/rapidfuzz/RapidFuzz) | `3.14.3` | `3.14.5` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.4.4` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.3` | `5.4.1` |\n| [tika-client](https://github.com/stumpylog/tika-client) | `0.10.0` | `0.11.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.10.0` | `2.11.0` |\n| [zensical](https://github.com/zensical/zensical) | `0.0.26` | `0.0.33` |\n| [faker](https://github.com/joke2k/faker) | `40.8.0` | `40.13.0` |\n| [pytest](https://github.com/pytest-dev/pytest) | `9.0.2` | `9.0.3` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [pytest-httpx](https://github.com/Colin-b/pytest_httpx) | `0.36.0` | `0.36.2` |\n| [prek](https://github.com/j178/prek) | `0.3.5` | `0.3.9` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.10` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.24.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.1` |\n| [mypy-baseline](https://github.com/orsinium-labs/mypy-baseline) | `0.7.3` | `0.7.4` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.55.0` | `0.61.0` |\n| [types-dateparser](https://github.com/python/typeshed) | `1.3.0.20260206` | `1.4.0.20260408` |\n| [types-pygments](https://github.com/python/typeshed) | `2.19.0.20251121` | `2.20.0.20260408` |\n\n\nUpdates `dateparser` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2026-03-26)\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/commit/60b8a75b1a7e84d875e491e6c730a844646ae91b\"\u003e\u003ccode\u003e60b8a75\u003c/code\u003e\u003c/a\u003e Bump version: 1.3.0 → 1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/d405657bbefd10ec8c1cb3df71ce295ca473f910\"\u003e\u003ccode\u003ed405657\u003c/code\u003e\u003c/a\u003e 1.4.0 release notes and fixes (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/7a3113e3b495dc95e6e238da696433e259f11827\"\u003e\u003ccode\u003e7a3113e\u003c/code\u003e\u003c/a\u003e Add the en-US locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/62710c066b2cb44e508d07532df069b78d52bbf0\"\u003e\u003ccode\u003e62710c0\u003c/code\u003e\u003c/a\u003e Add a security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/341d3080f377c058b35ab39353940ba0f9349724\"\u003e\u003ccode\u003e341d308\u003c/code\u003e\u003c/a\u003e Fix deployment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/5add61cccf258788f9cca748dee3d5094ff65651\"\u003e\u003ccode\u003e5add61c\u003c/code\u003e\u003c/a\u003e Use official publish GitHub action in CI (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e22e62e336cc59b1ac38ea947c1b9b471d420846\"\u003e\u003ccode\u003ee22e62e\u003c/code\u003e\u003c/a\u003e Fix word-number phrases parsing (e.g., 'two days later') (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/8cdcf800ff16a0745b4782359db0c8085961219d\"\u003e\u003ccode\u003e8cdcf80\u003c/code\u003e\u003c/a\u003e Make logo more translucent (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1312\"\u003e#1312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e0939ecdd7ca04a24ca9d9a325224fe7fef7921c\"\u003e\u003ccode\u003ee0939ec\u003c/code\u003e\u003c/a\u003e Replace 'setup.py install' (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/cd5f226454e0ed3fe93164e7eff55b00f57e57c7\"\u003e\u003ccode\u003ecd5f226\u003c/code\u003e\u003c/a\u003e Honor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying year-bias...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `django-guardian` from 3.3.0 to 3.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/django-guardian/django-guardian/releases\"\u003edjango-guardian's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.3.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImprove managers typing and reduce code duplication by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/962\"\u003edjango-guardian/django-guardian#962\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd dependabot configuration by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/964\"\u003edjango-guardian/django-guardian#964\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/965\"\u003edjango-guardian/django-guardian#965\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix possible IndexError when trying to bulk-assign permissions by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/969\"\u003edjango-guardian/django-guardian#969\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update coverage badge to 97.8% 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/django-guardian/django-guardian/pull/970\"\u003edjango-guardian/django-guardian#970\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix indentation in code example by \u003ca href=\"https://github.com/jmwhitworth\"\u003e\u003ccode\u003e@​jmwhitworth\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/971\"\u003edjango-guardian/django-guardian#971\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump astral-sh/setup-uv from 5 to 7 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/975\"\u003edjango-guardian/django-guardian#975\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003erelease process section is added by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/977\"\u003edjango-guardian/django-guardian#977\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e429 document how to migrate from generic object permissions to direct foreign keys by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/978\"\u003edjango-guardian/django-guardian#978\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eIssue966 by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/976\"\u003edjango-guardian/django-guardian#976\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eminor version update by \u003ca href=\"https://github.com/Natgho\"\u003e\u003ccode\u003e@​Natgho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/979\"\u003edjango-guardian/django-guardian#979\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/jmwhitworth\"\u003e\u003ccode\u003e@​jmwhitworth\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/pull/971\"\u003edjango-guardian/django-guardian#971\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-guardian/django-guardian/compare/3.3.0...3.3.1\"\u003ehttps://github.com/django-guardian/django-guardian/compare/3.3.0...3.3.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/django-guardian/django-guardian/commit/55d47bad5f7c8f038f77b8c021cfbcff3d1b9cc3\"\u003e\u003ccode\u003e55d47ba\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/979\"\u003e#979\u003c/a\u003e from django-guardian/version-update-3-3-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/fefaa91fa2f00cfdf71aa6026b1de29930900ee1\"\u003e\u003ccode\u003efefaa91\u003c/code\u003e\u003c/a\u003e minor version update\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/8ea54bb93cc23562f1d93183d6ada8d1469aa2c7\"\u003e\u003ccode\u003e8ea54bb\u003c/code\u003e\u003c/a\u003e Fix Issue 966 (\u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/ec417f9d67f3b374deb20705ad820fe6e4753816\"\u003e\u003ccode\u003eec417f9\u003c/code\u003e\u003c/a\u003e 429 document how to migrate from generic object permissions to direct foreign...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/5667e5b235069f6940760814067a6b237f128b03\"\u003e\u003ccode\u003e5667e5b\u003c/code\u003e\u003c/a\u003e Add release process documentation (\u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/977\"\u003e#977\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/582fc93a93738052218399b5b24061acb699d94a\"\u003e\u003ccode\u003e582fc93\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/975\"\u003e#975\u003c/a\u003e from django-guardian/dependabot/github_actions/github...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/16abffc9e69e0798d5577190bbe912d1ee3cfc4f\"\u003e\u003ccode\u003e16abffc\u003c/code\u003e\u003c/a\u003e Bump astral-sh/setup-uv from 5 to 7 in the github-actions group\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/4dba1aad5777dabf3660d6847a388e890ef49671\"\u003e\u003ccode\u003e4dba1aa\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/971\"\u003e#971\u003c/a\u003e from jmwhitworth/docs/fix-group-model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/3cf3beee1289f7018309f165be9aeba50f729002\"\u003e\u003ccode\u003e3cf3bee\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/django-guardian/django-guardian/issues/970\"\u003e#970\u003c/a\u003e from django-guardian/auto-update-coverage-badge\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/django-guardian/django-guardian/commit/5cbcf7d4ac7bd89399b9a623282a2975a62adc75\"\u003e\u003ccode\u003e5cbcf7d\u003c/code\u003e\u003c/a\u003e Fix indentation in code example\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/django-guardian/django-guardian/compare/3.3.0...3.3.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.16.1 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/encode/django-rest-framework/releases\"\u003edjangorestframework's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.17.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values 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/9928\"\u003eencode/django-rest-framework#9928\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.0...3.17.1\"\u003ehttps://github.com/encode/django-rest-framework/compare/3.17.0...3.17.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.17.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 Python 3.9 by \u003ca href=\"https://github.com/auvipy\"\u003e\u003ccode\u003e@​auvipy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9781\"\u003eencode/django-rest-framework#9781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDrop deprecated coreapi support 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/9895\"\u003eencode/django-rest-framework#9895\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd ability to specify output format for \u003ccode\u003eDurationField\u003c/code\u003e by \u003ca href=\"https://github.com/sevdog\"\u003e\u003ccode\u003e@​sevdog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/8532\"\u003eencode/django-rest-framework#8532\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing decorators: \u003ccode\u003e@versioning_class()\u003c/code\u003e, \u003ccode\u003e@content_negotiation_class()\u003c/code\u003e, \u003ccode\u003e@metadata_class()\u003c/code\u003e for function-based views by \u003ca href=\"https://github.com/qqii\"\u003e\u003ccode\u003e@​qqii\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9719\"\u003eencode/django-rest-framework#9719\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.14 by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9780\"\u003eencode/django-rest-framework#9780\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport \u003ccode\u003eviolation_error_code\u003c/code\u003e and \u003ccode\u003eviolation_error_message\u003c/code\u003e from \u003ccode\u003eUniqueConstraint\u003c/code\u003e in \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e by \u003ca href=\"https://github.com/s-aleshin\"\u003e\u003ccode\u003e@​s-aleshin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9766\"\u003eencode/django-rest-framework#9766\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for \u003ccode\u003eipaddress\u003c/code\u003e objects in \u003ccode\u003eJSONEncoder\u003c/code\u003e by \u003ca href=\"https://github.com/corenting\"\u003e\u003ccode\u003e@​corenting\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9087\"\u003eencode/django-rest-framework#9087\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd optional support to serialize \u003ccode\u003eBigInteger\u003c/code\u003e to string by \u003ca href=\"https://github.com/HoodyH\"\u003e\u003ccode\u003e@​HoodyH\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9775\"\u003eencode/django-rest-framework#9775\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Django 6.0 support by \u003ca href=\"https://github.com/MehrazRumman\"\u003e\u003ccode\u003e@​MehrazRumman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9819\"\u003eencode/django-rest-framework#9819\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent small risk of \u003ccode\u003eToken\u003c/code\u003e overwrite by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9754\"\u003eencode/django-rest-framework#9754\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eUniqueTogetherValidator\u003c/code\u003e validation when condition references a read-only field 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/9764\"\u003eencode/django-rest-framework#9764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix validation on many to many field when \u003ccode\u003edefault=None\u003c/code\u003e by \u003ca href=\"https://github.com/Genarito\"\u003e\u003ccode\u003e@​Genarito\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9790\"\u003eencode/django-rest-framework#9790\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid SPDX license expression in \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/TheFunctionalGuy\"\u003e\u003ccode\u003e@​TheFunctionalGuy\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9799\"\u003eencode/django-rest-framework#9799\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e to ensure a valid \u003ccode\u003edatetime-local\u003c/code\u003e format 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/9365\"\u003eencode/django-rest-framework#9365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mutable default arguments in OrderingFilter methods by \u003ca href=\"https://github.com/killerdevildog\"\u003e\u003ccode\u003e@​killerdevildog\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9742\"\u003eencode/django-rest-framework#9742\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate TokenAdmin to respect USERNAME_FIELD of the user model by \u003ca href=\"https://github.com/m000\"\u003e\u003ccode\u003e@​m000\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9836\"\u003eencode/django-rest-framework#9836\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePreserve ordering in \u003ccode\u003eMultipleChoiceField\u003c/code\u003e by \u003ca href=\"https://github.com/fbozhang\"\u003e\u003ccode\u003e@​fbozhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9735\"\u003eencode/django-rest-framework#9735\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate French translation by \u003ca href=\"https://github.com/SebCorbin\"\u003e\u003ccode\u003e@​SebCorbin\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9770\"\u003eencode/django-rest-framework#9770\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Brazilian Portuguese translations by \u003ca href=\"https://github.com/JVPinheiroReis\"\u003e\u003ccode\u003e@​JVPinheiroReis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9828\"\u003eencode/django-rest-framework#9828\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix and improve French translations by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9896\"\u003eencode/django-rest-framework#9896\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing Russian translation by \u003ca href=\"https://github.com/minorytanaka\"\u003e\u003ccode\u003e@​minorytanaka\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9903\"\u003eencode/django-rest-framework#9903\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate packaging to \u003ccode\u003epyproject.toml\u003c/code\u003e by \u003ca href=\"https://github.com/deronnax\"\u003e\u003ccode\u003e@​deronnax\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9056\"\u003eencode/django-rest-framework#9056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove package data rules from \u003ccode\u003eMANIFEST.in\u003c/code\u003e to \u003ccode\u003epyproject.toml\u003c/code\u003e 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/9825\"\u003eencode/django-rest-framework#9825\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet up release workflow with trusted publisher 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/9852\"\u003eencode/django-rest-framework#9852\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRefactor token generation to use the \u003ccode\u003esecrets\u003c/code\u003e module by \u003ca href=\"https://github.com/mahdirahimi1999\"\u003e\u003ccode\u003e@​mahdirahimi1999\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9760\"\u003eencode/django-rest-framework#9760\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd validation for decorator out-of-order with \u003ccode\u003e@api_view\u003c/code\u003e by \u003ca href=\"https://github.com/kernelshard\"\u003e\u003ccode\u003e@​kernelshard\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9821\"\u003eencode/django-rest-framework#9821\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSwitch to mkdocs material theme for documentation 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/9849\"\u003eencode/django-rest-framework#9849\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/khaledsukkar2\"\u003e\u003ccode\u003e@​khaledsukkar2\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/encode/django-rest-framework/pull/9717\"\u003eencode/django-rest-framework#9717\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/22e231cf2f77b4cfe929de875d958b93916b1a8b\"\u003e\u003ccode\u003e22e231c\u003c/code\u003e\u003c/a\u003e Prepare bug fix release 3.17.1 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9931\"\u003e#9931\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/8e99b53db7b122417580ec2993ac6776b4d858d5\"\u003e\u003ccode\u003e8e99b53\u003c/code\u003e\u003c/a\u003e Add condition to skip pushed tags from forks (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9924\"\u003e#9924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c0407dee6ef8a5603c2d5d34373d724be7b98188\"\u003e\u003ccode\u003ec0407de\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003eHTMLFormRenderer\u003c/code\u003e with empty \u003ccode\u003edatetime\u003c/code\u003e values (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9928\"\u003e#9928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/30d58a75eeef7097f97cdc9f171d2ec741b36d30\"\u003e\u003ccode\u003e30d58a7\u003c/code\u003e\u003c/a\u003e Fix the book sizing in the documentation (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9926\"\u003e#9926\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/6f03b79c057c470524b12e9ac46bc2bb384570e0\"\u003e\u003ccode\u003e6f03b79\u003c/code\u003e\u003c/a\u003e Tweak order of changes in release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/021ab5664b085594876032cf062c1220bc1ca03c\"\u003e\u003ccode\u003e021ab56\u003c/code\u003e\u003c/a\u003e Bump version and update release notes for 3.17.0 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9921\"\u003e#9921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/19ebad70ae560e3f83c0e30af6be7c7df3b5aeec\"\u003e\u003ccode\u003e19ebad7\u003c/code\u003e\u003c/a\u003e Bump mkdocs-material[imaging] from 9.7.4 to 9.7.5 (\u003ca href=\"https://redirect.github.com/encode/django-rest-framework/issues/9923\"\u003e#9923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/f222c55d8a498c9770f2795c6cd34fedffaf043c\"\u003e\u003ccode\u003ef222c55\u003c/code\u003e\u003c/a\u003e Correct requires-python key in pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/7e7de6fceee3ad2e20b0dd93b119b6b00eadd797\"\u003e\u003ccode\u003e7e7de6f\u003c/code\u003e\u003c/a\u003e Remove code fences from release checklist\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/encode/django-rest-framework/commit/c599d309490fe59ae385954ad544a64b58abffd2\"\u003e\u003ccode\u003ec599d30\u003c/code\u003e\u003c/a\u003e Update release process\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/encode/django-rest-framework/compare/3.16.1...3.17.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular-sidecar` from 2026.3.1 to 2026.4.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/05fbf42eca0a97579a884c5264a0e146673d985c\"\u003e\u003ccode\u003e05fbf42\u003c/code\u003e\u003c/a\u003e version bump 2026.4.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/4ca03e1f015837694091dd3698f4ef6cd8ecf45d\"\u003e\u003ccode\u003e4ca03e1\u003c/code\u003e\u003c/a\u003e Force rebuild for redoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/ab433ec2a85576947809c9039b62c966d5452694\"\u003e\u003ccode\u003eab433ec\u003c/code\u003e\u003c/a\u003e Merge branch 'pr16'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/f14ea06d1572efe0c840cba36570cf866f6fb069\"\u003e\u003ccode\u003ef14ea06\u003c/code\u003e\u003c/a\u003e update github actions due to deprecations\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/50ef330d14f39d5221ae30aa3aa4b9b408e10df3\"\u003e\u003ccode\u003e50ef330\u003c/code\u003e\u003c/a\u003e Fix redoc files \u003ca href=\"https://redirect.github.com/tfranzel/drf-spectacular-sidecar/issues/16\"\u003e#16\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/b714a7ffda691c8a0b06c80e091ce1e5e4f92666\"\u003e\u003ccode\u003eb714a7f\u003c/code\u003e\u003c/a\u003e version bump 2026.4.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/63be86409f10222db354b736811f877238a68a26\"\u003e\u003ccode\u003e63be864\u003c/code\u003e\u003c/a\u003e Fix: update assets list\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/compare/2026.3.1...2026.4.14\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `filelock` from 3.25.2 to 3.28.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tox-dev/py-filelock/releases\"\u003efilelock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.28.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/529\"\u003etox-dev/filelock#529\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.27.0...3.28.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.27.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/528\"\u003etox-dev/filelock#528\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.1...3.27.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling by \u003ca href=\"https://github.com/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\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/naarob\"\u003e\u003ccode\u003e@​naarob\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/518\"\u003etox-dev/filelock#518\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\"\u003ehttps://github.com/tox-dev/filelock/compare/3.26.0...3.26.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e3.26.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/517\"\u003etox-dev/filelock#517\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔧 fix(ci): restore git credentials for release job by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/520\"\u003etox-dev/filelock#520\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/tox-dev/filelock/pull/524\"\u003etox-dev/filelock#524\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/tox-dev/filelock/compare/3.25.2...3.26.0\"\u003ehttps://github.com/tox-dev/filelock/compare/3.25.2...3.26.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/tox-dev/filelock/blob/main/docs/changelog.rst\"\u003efilelock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e###########\nChangelog\n###########\u003c/p\u003e\n\u003chr /\u003e\n\u003cp\u003e3.28.0 (2026-04-14)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(ci): unbreak release workflow, publish to PyPI again :pr:\u003ccode\u003e529\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.1 (2026-04-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handling :pr:\u003ccode\u003e518\u003c/code\u003e - by :user:\u003ccode\u003enaarob\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 :pr:\u003ccode\u003e525\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.26.0 (2026-04-06)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(soft): add PID inspection and lock breaking :pr:\u003ccode\u003e524\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e523\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump astral-sh/setup-uv from 7.6.0 to 8.0.0 :pr:\u003ccode\u003e522\u003c/code\u003e - by :user:\u003ccode\u003edependabot[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eRemove persist-credentials: false from release job :pr:\u003ccode\u003e520\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e519\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🔒 ci(workflows): add zizmor security auditing :pr:\u003ccode\u003e517\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e516\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e514\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.2 (2026-03-11)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix(unix): suppress EIO on close in Docker bind mounts :pr:\u003ccode\u003e513\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.1 (2026-03-09)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e510\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e🐛 fix(win): restore best-effort lock file cleanup on release :pr:\u003ccode\u003e511\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate :pr:\u003ccode\u003e508\u003c/code\u003e - by :user:\u003ccode\u003epre-commit-ci[bot]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e📝 docs(logo): add branded project logo :pr:\u003ccode\u003e507\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e3.25.0 (2026-03-01)\u003c/p\u003e\n\u003chr /\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(async): add AsyncReadWriteLock :pr:\u003ccode\u003e506\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/tox-dev/filelock/commit/55de20c0819652362881906fa289feff5a323c19\"\u003e\u003ccode\u003e55de20c\u003c/code\u003e\u003c/a\u003e Release 3.28.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/476b0e4a92776fe530b5d993247342f039004174\"\u003e\u003ccode\u003e476b0e4\u003c/code\u003e\u003c/a\u003e 🐛 fix(ci): unbreak release workflow, publish to PyPI again (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/824713edc32b54efd66566907f97c1238502810e\"\u003e\u003ccode\u003e824713e\u003c/code\u003e\u003c/a\u003e ✨ feat(rw): add SoftReadWriteLock for NFS and HPC clusters (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/528\"\u003e#528\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/9879de9298db93ffba0a9f58d9de75e9e2a00fc1\"\u003e\u003ccode\u003e9879de9\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/527\"\u003e#527\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/4cfab498b6916f89be46152efa4a72e9731be98f\"\u003e\u003ccode\u003e4cfab49\u003c/code\u003e\u003c/a\u003e Release 3.26.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/734c9f26e8107ad24886129fc68865f0b46cf71f\"\u003e\u003ccode\u003e734c9f2\u003c/code\u003e\u003c/a\u003e 🐛 fix(asyncio): add \u003cstrong\u003eexit\u003c/strong\u003e to BaseAsyncFileLock and fix \u003cstrong\u003edel\u003c/strong\u003e loop handli...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/c9f9cb4c63b69d1bcfbcf98fe7c8dc439f51d473\"\u003e\u003ccode\u003ec9f9cb4\u003c/code\u003e\u003c/a\u003e build(deps): bump pypa/gh-action-pypi-publish from 1.13.0 to 1.14.0 (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/525\"\u003e#525\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/ad728d72a3e492297208c16b7c0787f4bfb6ccd0\"\u003e\u003ccode\u003ead728d7\u003c/code\u003e\u003c/a\u003e Release 3.26.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/f8a9849d63f256229d7c6481081c5df58f63e2ba\"\u003e\u003ccode\u003ef8a9849\u003c/code\u003e\u003c/a\u003e ✨ feat(soft): add PID inspection and lock breaking (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/524\"\u003e#524\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tox-dev/filelock/commit/fc53a83fa16c748b687e598f12540b876c642fce\"\u003e\u003ccode\u003efc53a83\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/tox-dev/py-filelock/issues/523\"\u003e#523\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tox-dev/py-filelock/compare/3.25.2...3.28.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gotenberg-client` from 0.13.1 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/stumpylog/gotenberg-client/releases\"\u003egotenberg-client's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.0\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[BREAKING]: Drop support for Python 3.9\n\u003cul\u003e\n\u003cli\u003eThis modernizes typing annotations and allows adding \u003ccode\u003eslots\u003c/code\u003e to all dataclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA bug in the retry logic which would have raised almost immediately\u003c/li\u003e\n\u003cli\u003eMinor internal class names were spelled incorrectly\u003c/li\u003e\n\u003cli\u003ePDF/A-1b was missing as a PDF output option\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/stumpylog/gotenberg-client/blob/main/CHANGELOG.md\"\u003egotenberg-client's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[0.14.0] - 2023-03-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[BREAKING]: Drop support for Python 3.9\n\u003cul\u003e\n\u003cli\u003eThis modernizes typing annotations and allows adding \u003ccode\u003eslots\u003c/code\u003e to all dataclasses\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eA bug in the retry logic which would have raised almost immediately\u003c/li\u003e\n\u003cli\u003eMinor internal class names were spelled incorrectly\u003c/li\u003e\n\u003cli\u003ePDF/A-1b was missing as a PDF output option\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/stumpylog/gotenberg-client/commit/adf65d3f73b814720e65fd4fc6e721ae0778642c\"\u003e\u003ccode\u003eadf65d3\u003c/code\u003e\u003c/a\u003e Merge branch 'release/0.14.0'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/05ad02b067027343e7ac2bbfe0b712c078d18974\"\u003e\u003ccode\u003e05ad02b\u003c/code\u003e\u003c/a\u003e Bumps version to 0.14.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d2b41f058e521c6059a483aa5e72b2e7ffd6b148\"\u003e\u003ccode\u003ed2b41f0\u003c/code\u003e\u003c/a\u003e Updates hooks and resolves zizmor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/c27040d49f92783e4de1292b7bb239429af92e05\"\u003e\u003ccode\u003ec27040d\u003c/code\u003e\u003c/a\u003e Resolves the cached_property\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/e90c4bd3a96bc5700d693c6ce400c9ed2ff60867\"\u003e\u003ccode\u003ee90c4bd\u003c/code\u003e\u003c/a\u003e Adds slots=True to the dataclasses\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d06b72da77320996cc8974ad776f4fb1381e7971\"\u003e\u003ccode\u003ed06b72d\u003c/code\u003e\u003c/a\u003e Dropping Python 3.9 support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/3522ca08f5055681bba509ae903b4e3a246f0ad2\"\u003e\u003ccode\u003e3522ca0\u003c/code\u003e\u003c/a\u003e Bump the actions group with 2 updates (\u003ca href=\"https://redirect.github.com/stumpylog/gotenberg-client/issues/88\"\u003e#88\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/3bdcaefa42849fe9bcbc3a2fb0b728f2b42b2bb4\"\u003e\u003ccode\u003e3bdcaef\u003c/code\u003e\u003c/a\u003e Fixes a typo in the universal access mixin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/d560579a4829740d9bbaf6dc47fc485521377646\"\u003e\u003ccode\u003ed560579\u003c/code\u003e\u003c/a\u003e AI generated review for some tasks that might be nice\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stumpylog/gotenberg-client/commit/7833b99b4b03b7d6a6d37a3e1f42137afddc3b9e\"\u003e\u003ccode\u003e7833b99\u003c/code\u003e\u003c/a\u003e Transitions away from the Codecov test results action\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/stumpylog/gotenberg-client/compare/0.13.1...0.14.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `imap-tools` from 1.11.1 to 1.12.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ikvk/imap_tools/releases\"\u003eimap-tools's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.12.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/blob/master/docs/release_notes.rst\"\u003eimap-tools's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.12.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eChanged: MailMessage.headers now are lazy dict-like mapping - LazyHeaders. It fetches header values when accessed only.\nActually it is braking change, but in most cases it will works with old code.\nThe change saves memory and processor time.\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/ikvk/imap_tools/commit/c59a60723b7e6fec353590811ec6ad674110031c\"\u003e\u003ccode\u003ec59a607\u003c/code\u003e\u003c/a\u003e MailMessage.headers - LazyHeaders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ikvk/imap_tools/commit/32ddf22fcac2fc80c7ed9ce0a6719d020c9ff57f\"\u003e\u003ccode\u003e32ddf22\u003c/code\u003e\u003c/a\u003e MailMessage.headers docs\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ikvk/imap_tools/compare/v1.11.1...v1.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-core` from 0.14.16 to 0.14.20\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.20\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-04-03]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.2.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-agentops [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 50 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21164\"\u003e#21164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-aim [0.4.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-argilla [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-arize-phoenix [0.7.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-honeyhive [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-langfuse [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-literalai [1.4.0]\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/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.20]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 46 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21153\"\u003e#21153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): use async query generation in \u003ccode\u003eQueryFusionRetriever._aretrieve\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21160\"\u003e#21160\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 50 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21164\"\u003e#21164\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003edocs: fix typos, grammar, and formatting inconsistencies (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21218\"\u003e#21218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix: fix extra bracket in data_sources and typo in data_sinks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21251\"\u003e#21251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 47 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21254\"\u003e#21254\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 53 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21255\"\u003e#21255\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate llama-index-workflows dependency to \u0026gt;=2.14.0 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21277\"\u003e#21277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDelete old folders (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21286\"\u003e#21286\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-adapter [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-alephalpha [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-alibabacloud-aisearch [0.4.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-anyscale [0.5.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 21 directories with 2 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21221\"\u003e#21221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-autoembeddings [0.3.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 24 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21219\"\u003e#21219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix vulnerability with nltk (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21275\"\u003e#21275\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-azure-inference [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 58 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21166\"\u003e#21166\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/41a18d9874d2a87430235cd0a5f772711de064f8\"\u003e\u003ccode\u003e41a18d9\u003c/code\u003e\u003c/a\u003e Release 0.14.20 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21290\"\u003e#21290\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/89015f6d6567e25089d89490ef17421c5edcf8b3\"\u003e\u003ccode\u003e89015f6\u003c/code\u003e\u003c/a\u003e chore(deps): bump aiohttp from 3.13.3 to 3.13.4 in /docs/api_reference in the...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/e851dd0c366bf410cf47c82c78c44caf9da4961f\"\u003e\u003ccode\u003ee851dd0\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 22 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21264\"\u003e#21264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/0ac3f16af8c4962b32351229bf7daa6961762ba6\"\u003e\u003ccode\u003e0ac3f16\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 20 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21265\"\u003e#21265\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/0540649e2647e4a869cae207523a87c54a1aa6a5\"\u003e\u003ccode\u003e0540649\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 18 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21266\"\u003e#21266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/5713ddcec9b7b496357d3d1c4cd85c0b9c07cbfd\"\u003e\u003ccode\u003e5713ddc\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 16 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21268\"\u003e#21268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/606b931988e33c51fec5c357c90109c39c7ee74c\"\u003e\u003ccode\u003e606b931\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 15 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21269\"\u003e#21269\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c72f4fb63d98da90587bd77c40443b1a06160fd3\"\u003e\u003ccode\u003ec72f4fb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the uv group across 3 directories with 11 updates (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21291\"\u003e#21291\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/519142086c5a38bb9bd4b0372a7ce89f121cfad1\"\u003e\u003ccode\u003e5191420\u003c/code\u003e\u003c/a\u003e Delete old folders (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21286\"\u003e#21286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c107fc06b1dc5bb5efd9e1b6808a52568be092ed\"\u003e\u003ccode\u003ec107fc0\u003c/code\u003e\u003c/a\u003e fix: fix extra bracket in data_sources and typo in data_sinks (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21251\"\u003e#21251\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.16...v0.14.20\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-embeddings-huggingface` from 0.6.1 to 0.7.0\n\nUpdates `llama-index-embeddings-openai` from 0.5.2 to 0.6.0\n\nUpdates `llama-index-llms-ollama` from 0.9.1 to 0.10.1\n\nUpdates `llama-index-llms-openai` from 0.6.26 to 0.7.5\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.3 to 0.6.0\n\nUpdates `nltk` from 3.9.3 to 3.9.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/nltk/nltk/blob/develop/ChangeLog\"\u003enltk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion 3.9.4 2026-03-24\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eSupport Python 3.14\u003c/li\u003e\n\u003cli\u003eFix bug in Levenshtein distance when substitution_cost \u0026gt; 2\u003c/li\u003e\n\u003cli\u003eFix bug in Treebank detokeniser re quote ordering\u003c/li\u003e\n\u003cli\u003eFix bug in Jaro similarity for empty strings\u003c/li\u003e\n\u003cli\u003eSeveral security enhancements\u003c/li\u003e\n\u003cli\u003eFix GHSA-rf74-v2fm-23pw: unbounded recursion in JSONTaggedDecoder\u003c/li\u003e\n\u003cli\u003eImplement TextTiling vocabulary introduction method (Hearst 1997)\u003c/li\u003e\n\u003cli\u003eFix ALINE feature matrix errors and add comprehensive tests\u003c/li\u003e\n\u003cli\u003eSupport multiple VerbNet versions, fix longid/shortid regex for VerbNet ids\u003c/li\u003e\n\u003cli\u003eLet downloader fallback to md5 when sha256 is unavailable\u003c/li\u003e\n\u003cli\u003eSeveral other minor bugfixes and code cleanups\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.4:\nMin-Yen Kan, Eric Kafe, Emily Voss, bowiechen, Hrudhai01,\njancallewaert, Mr-Neutr0n, pollak.peter89, ylwango613,\u003c/p\u003e\n\u003cp\u003eVersion 3.9.3 2026-02-21\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix CVE-2025-14009: secure ZIP extraction in nltk.downloader (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3468\"\u003e#3468\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/arbitrary reads in nltk.data for protocol-less refs (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3467\"\u003e#3467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBlock path traversal/abs paths in corpus readers and FS pointers (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3479\"\u003e#3479\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3480\"\u003e#3480\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eValidate external StanfordSegmenter JARs using SHA256 (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3477\"\u003e#3477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd optional sandbox enforcement for filestring() (\u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3485\"\u003e#3485\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMaintenance: downloader/zipped models, CI/tooling updates\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.3:\nChris Clauss, Eric Kafe, HyperPS, purificant, Shivansh-Game, Christopher Smith\u003c/p\u003e\n\u003cp\u003eVersion 3.9.2 2025-10-01\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate download checksums to use SHA256 in built index\u003c/li\u003e\n\u003cli\u003eFix percentage escape in new-style string formatting\u003c/li\u003e\n\u003cli\u003ereplace shortened URLs using goo.gl\u003c/li\u003e\n\u003cli\u003eMake Wordnet interoperable with various taggers and tagged corpora\u003c/li\u003e\n\u003cli\u003eFix saving PerceptronTagger\u003c/li\u003e\n\u003cli\u003eDocument how to reproduce old Wordnet studies\u003c/li\u003e\n\u003cli\u003eproperly initialize Portuguese corpus reader\u003c/li\u003e\n\u003cli\u003esupport for mixed rules conversion into Chomsky Normal Form\u003c/li\u003e\n\u003cli\u003eonly import tkinter if a GUI is needed\u003c/li\u003e\n\u003cli\u003eissue \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/2112\"\u003e#2112\u003c/a\u003e with Corenlp\u003c/li\u003e\n\u003cli\u003enew environment variable NLTK_DOWNLOADER_FORCE_INTERACTIVE_SHELL\u003c/li\u003e\n\u003cli\u003eLesk defaults to most frequent sense in case of ties\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to the following contributors to 3.9.2:\nJose Cols, Peter de Blanc, GeneralPoxter, Eric Kafe, William LaCroix, Jason Liu,\nSamer Masterson, Mike014, purificant, Andrew Ernest Ritz, samertm, Ikram Ul Haq,\nChristopher Smith, Ryan Mannion\u003c/p\u003e\n\u003cp\u003eVersion 3.9.1 2024-08-19\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/nltk/nltk/commit/ad9c96ba00a16923ffe917eacf63f1707bfa2d08\"\u003e\u003ccode\u003ead9c96b\u003c/code\u003e\u003c/a\u003e Update copyright year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/7edcddfda566627b897397397cc4d10ae91cb86d\"\u003e\u003ccode\u003e7edcddf\u003c/code\u003e\u003c/a\u003e Updates for 3.9.4 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/67a2736f89b286b028db08bd247134f17a11fc6b\"\u003e\u003ccode\u003e67a2736\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3180\"\u003e#3180\u003c/a\u003e from yzhaoinuw/bug-on-edit_distance_align\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/2b17ac5358a1c8d4b97455766efde0b786e6cdb2\"\u003e\u003ccode\u003e2b17ac5\u003c/code\u003e\u003c/a\u003e Fix edit_distance_align backtrace for high substitution costs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/4b72976a6ff3d180ed4012f11843e611a8f89516\"\u003e\u003ccode\u003e4b72976\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3018\"\u003e#3018\u003c/a\u003e from JuanIMartinezB/bug/shortid-longid\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/8a5619f53a281149e5342b1a00fe05fe2fc6517f\"\u003e\u003ccode\u003e8a5619f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3222\"\u003e#3222\u003c/a\u003e from Syzygy2048/feature/texttiling-vocabulary-introd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/c6574d755e02b6163d9cd1d0b407076940e08864\"\u003e\u003ccode\u003ec6574d7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3289\"\u003e#3289\u003c/a\u003e from ihitamandal/codeflash/optimize-windowdiff-2024-...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/98ff5d9eaa1a81511873b9aef857944519c28dc4\"\u003e\u003ccode\u003e98ff5d9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3435\"\u003e#3435\u003c/a\u003e from Hrudhai01/fix-3260-detokenize-quotes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/aec4fce1b84ad725b8975f7365b23a4f626572a9\"\u003e\u003ccode\u003eaec4fce\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3522\"\u003e#3522\u003c/a\u003e from ekaf/pathsec\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nltk/nltk/commit/eec4ee3591cb9cb8b8c2989f08012608c841d532\"\u003e\u003ccode\u003eeec4ee3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/nltk/nltk/issues/3526\"\u003e#3526\u003c/a\u003e from nltk/update-contributing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nltk/nltk/compare/3.9.3...3.9.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ocrmypdf` from 17.3.0 to 17.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/releases\"\u003eocrmypdf's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev17.4.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed RTL text extraction order in the fpdf2 renderer. Arabic lam-alef\nligatures and other multi-character CMap entries were garbled by the bidi\nalgorithm during text extraction. {issue}\u003ccode\u003e1655\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003ework_folder\u003c/code\u003e not being set in \u003ccode\u003ePdfContext\u003c/code\u003e options when using\nthe Python API. Thanks \u003ca href=\"https://github.com/bluebox-steven\"\u003e\u003ccode\u003e@​bluebox-steven\u003c/code\u003e\u003c/a\u003e. {issue}\u003ccode\u003e1613\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eUpdated Ghostscript JPEG corruption warning to include the detected version\nnumber, confirming the bug persists in Ghostscript 10.7.0.\u003c/li\u003e\n\u003cli\u003eInternal refactoring.\u003c/li\u003e\n\u003cli\u003eCI dependency updates.\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/ocrmypdf/OCRmyPDF/commit/89c76b51455b7e7e4158558b4ca7a8eaf31063ef\"\u003e\u003ccode\u003e89c76b5\u003c/code\u003e\u003c/a\u003e v17.4.1 release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/commit/6f2b8408c1c490798775fd9f9cfd9d402f6c0017\"\u003e\u003ccode\u003e6f2b840\u003c/code\u003e\u003c/a\u003e v17.4.0 release notes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ocrmypdf/OCRmyPDF/compare/v17.3.0...v17.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openai` from 2.26.0 to 2.31.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.31.0\u003c/h2\u003e\n\u003ch2\u003e2.31.0 (2026-04-08)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.30.0...v2.31.0\"\u003ev2.30.0...v2.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add phase field to conversations message (\u003ca href=\"https://github.com/openai/openai-python/commit/3e5834efb39b24e019a29dc54d890c67d18cbb54\"\u003e3e5834e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add web_search_call.results to ResponseIncludable type (\u003ca href=\"https://github.com/openai/openai-python/commit/ffd8741dd38609a5af0159ceb800d8ddba7925f8\"\u003effd8741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add support for short-lived tokens (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/1608\"\u003e#1608\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/22fe7228d4990c197cd721b3ad7931ad05cca5dd\"\u003e22fe722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e support sending raw data over websockets (\u003ca href=\"https://github.com/openai/openai-python/commit/f1bc52ef641dfca6fdf2a5b00ce3b09bff2552f5\"\u003ef1bc52e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e implement indices array format for query and form serialization (\u003ca href=\"https://github.com/openai/openai-python/commit/49194cfa711328216ff131d6f65c9298822a7c51\"\u003e49194cf\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e preserve hardcoded query params when merging with user params (\u003ca href=\"https://github.com/openai/openai-python/commit/92e109c3d9569a942e1919e75977dc13fa015f9a\"\u003e92e109c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e remove web_search_call.results from ResponseIncludable (\u003ca href=\"https://github.com/openai/openai-python/commit/d3cc40165cd86015833d15167cc7712b4102f932\"\u003ed3cc401\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.20.1 (\u003ca href=\"https://github.com/openai/openai-python/commit/d60e2eea7f6916540cd4ba901dceb07051119da4\"\u003ed60e2ee\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.20.2 (\u003ca href=\"https://github.com/openai/openai-python/commit/6508d474332d4e82d9615c0a9a77379f9b5e4412\"\u003e6508d47\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e update file parameter descriptions in vector_stores files and file_batches (\u003ca href=\"https://github.com/openai/openai-python/commit/a9e7ebd505b9ae90514339aa63c6f1984a08cf6b\"\u003ea9e7ebd\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.30.0\u003c/h2\u003e\n\u003ch2\u003e2.30.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.29.0...v2.30.0\"\u003ev2.29.0...v2.30.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add keys field to Click/DoubleClick/Drag/Move/Scroll computer actions (\u003ca href=\"https://github.com/openai/openai-python/commit/ee1bbeddbb38dab817557412dc106354409bb950\"\u003eee1bbed\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e align SDK response types with expanded item schemas (\u003ca href=\"https://github.com/openai/openai-python/commit/f3f258a9d4d19db3fb0c6c35e25ad3cedbe71254\"\u003ef3f258a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esanitize endpoint path params (\u003ca href=\"https://github.com/openai/openai-python/commit/89f66988fde790c0c83ff8b876d1e1b10d616367\"\u003e89f6698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e make type required in ResponseInputMessageItem (\u003ca href=\"https://github.com/openai/openai-python/commit/cfdb1676ea0550840330a58f1a31a40a41a0a53f\"\u003ecfdb167\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e skip lint on metadata-only changes (\u003ca href=\"https://github.com/openai/openai-python/commit/faa93e19a1d5c30c7dd672a08dbbdbb3c0374714\"\u003efaa93e1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.31.0 (2026-04-08)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.30.0...v2.31.0\"\u003ev2.30.0...v2.31.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add phase field to conversations message (\u003ca href=\"https://github.com/openai/openai-python/commit/3e5834efb39b24e019a29dc54d890c67d18cbb54\"\u003e3e5834e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add web_search_call.results to ResponseIncludable type (\u003ca href=\"https://github.com/openai/openai-python/commit/ffd8741dd38609a5af0159ceb800d8ddba7925f8\"\u003effd8741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e add support for short-lived tokens (\u003ca href=\"https://redirect.github.com/openai/openai-python/issues/1608\"\u003e#1608\u003c/a\u003e) (\u003ca href=\"https://github.com/openai/openai-python/commit/22fe7228d4990c197cd721b3ad7931ad05cca5dd\"\u003e22fe722\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eclient:\u003c/strong\u003e support sending raw data over websockets (\u003ca href=\"https://github.com/openai/openai-python/commit/f1bc52ef641dfca6fdf2a5b00ce3b09bff2552f5\"\u003ef1bc52e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e implement indices array format for query and form serialization (\u003ca href=\"h...\n\n_Description has been truncated_","html_url":"https://github.com/edsanpemc/paperless-ngx/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/edsanpemc%2Fpaperless-ngx/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/packages"}},{"old_version":"\u003c2.0.0,\u003e=1.1.3","new_version":"\u003e=1.6.0,\u003c2.0.0","update_type":"minor","path":null,"pr_created_at":"2026-04-13T21:58:43.000Z","version_change":"\u003c2.0.0,\u003e=1.1.3 → \u003e=1.6.0,\u003c2.0.0","issue":{"uuid":"4258128585","node_id":"PR_kwDOLxo-qc7SIRE5","number":36,"state":"closed","title":"Update pytest-env requirement from \u003c2.0.0,\u003e=1.1.3 to \u003e=1.6.0,\u003c2.0.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-04-20T04:52:49.000Z","author_association":null,"state_reason":null,"created_at":"2026-04-13T21:58:43.000Z","updated_at":"2026-04-20T04:52:51.000Z","time_to_close":543246,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"pytest-env","old_version":"\u003c2.0.0,\u003e=1.1.3","new_version":"\u003e=1.6.0,\u003c2.0.0","repository_url":"https://github.com/pytest-dev/pytest-env"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [pytest-env](https://github.com/pytest-dev/pytest-env) to permit the latest version.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.1.3...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/OpenSpeleo/pytool_mnemo_lib/pull/36","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenSpeleo%2Fpytool_mnemo_lib/issues/36","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/36/packages"}},{"old_version":"1.2.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-04-09T01:08:02.000Z","version_change":"1.2.0 → 1.6.0","issue":{"uuid":"4228694549","node_id":"PR_kwDOCEwExM7Q-6r3","number":21486,"state":"open","title":"chore(deps): bump the uv-dependencies group with 19 updates","user":"dependabot[bot]","labels":["development"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-09T01:08:02.000Z","updated_at":"2026-04-09T01:12:55.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"uv-dependencies","update_count":19,"packages":[{"name":"click","old_version":"8.3.1","new_version":"8.3.2","repository_url":"https://github.com/pallets/click"},{"name":"cryptography","old_version":"46.0.6","new_version":"46.0.7","repository_url":"https://github.com/pyca/cryptography"},{"name":"readchar","old_version":"4.2.1","new_version":"4.2.2","repository_url":"https://github.com/magmax/python-readchar"},{"name":"cyclopts","old_version":"4.10.1","new_version":"4.10.2","repository_url":"https://github.com/BrianPugh/cyclopts"},{"name":"pydantic-extra-types","old_version":"2.11.1","new_version":"2.11.2","repository_url":"https://github.com/pydantic/pydantic-extra-types"},{"name":"uvicorn","old_version":"0.42.0","new_version":"0.44.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"whenever","old_version":"0.9.5","new_version":"0.10.0","repository_url":"https://github.com/ariebovenberg/whenever"},{"name":"uv","old_version":"0.11.3","new_version":"0.11.5","repository_url":"https://github.com/astral-sh/uv"},{"name":"prefect-kubernetes","old_version":"0.7.6","new_version":"0.7.7","repository_url":"https://github.com/PrefectHQ/prefect"},{"name":"prefect-redis","old_version":"0.2.9","new_version":"0.2.10","repository_url":"https://github.com/PrefectHQ/prefect"},{"name":"pytest","old_version":"8.4.2","new_version":"9.0.3","repository_url":"https://github.com/pytest-dev/pytest"},{"name":"pytest-asyncio","old_version":"1.0.0","new_version":"0.23.3","repository_url":"https://github.com/pytest-dev/pytest-asyncio"},{"name":"pytest-env","old_version":"1.2.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"setuptools","old_version":"80.10.2","new_version":"82.0.1","repository_url":"https://github.com/pypa/setuptools"},{"name":"respx","old_version":"0.22.0","new_version":"0.23.1","repository_url":"https://github.com/lundberg/respx"},{"name":"ruff","old_version":"0.15.8","new_version":"0.15.9","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-cachetools","old_version":"6.2.0.20260317","new_version":"6.2.0.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-pyyaml","old_version":"6.0.12.20250915","new_version":"6.0.12.20260408","repository_url":"https://github.com/python/typeshed"},{"name":"types-dateparser","old_version":"1.4.0.20260328","new_version":"1.4.0.20260408","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-dependencies group with 19 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [click](https://github.com/pallets/click) | `8.3.1` | `8.3.2` |\n| [cryptography](https://github.com/pyca/cryptography) | `46.0.6` | `46.0.7` |\n| [readchar](https://github.com/magmax/python-readchar) | `4.2.1` | `4.2.2` |\n| [cyclopts](https://github.com/BrianPugh/cyclopts) | `4.10.1` | `4.10.2` |\n| [pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | `2.11.1` | `2.11.2` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.42.0` | `0.44.0` |\n| [whenever](https://github.com/ariebovenberg/whenever) | `0.9.5` | `0.10.0` |\n| [uv](https://github.com/astral-sh/uv) | `0.11.3` | `0.11.5` |\n| [prefect-kubernetes](https://github.com/PrefectHQ/prefect) | `0.7.6` | `0.7.7` |\n| [prefect-redis](https://github.com/PrefectHQ/prefect) | `0.2.9` | `0.2.10` |\n| [pytest](https://github.com/pytest-dev/pytest) | `8.4.2` | `9.0.3` |\n| [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.0.0` | `0.23.3` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.2.0` | `1.6.0` |\n| [setuptools](https://github.com/pypa/setuptools) | `80.10.2` | `82.0.1` |\n| [respx](https://github.com/lundberg/respx) | `0.22.0` | `0.23.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.8` | `0.15.9` |\n| [types-cachetools](https://github.com/python/typeshed) | `6.2.0.20260317` | `6.2.0.20260408` |\n| [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20250915` | `6.0.12.20260408` |\n| [types-dateparser](https://github.com/python/typeshed) | `1.4.0.20260328` | `1.4.0.20260408` |\n\nUpdates `click` from 8.3.1 to 8.3.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.2/\"\u003ehttps://pypi.org/project/click/8.3.2/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-2\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-2\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/29\"\u003ehttps://github.com/pallets/click/milestone/29\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3084\"\u003e#3084\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3152\"\u003e#3152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3199\"\u003e#3199\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3202\"\u003e#3202\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3209\"\u003e#3209\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3212\"\u003e#3212\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3224\"\u003e#3224\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/824\"\u003e#824\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2991\"\u003e#2991\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2993\"\u003e#2993\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3110\"\u003e#3110\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3140\"\u003e#3140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3139\"\u003e#3139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3121\"\u003e#3121\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3201\"\u003e#3201\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3213\"\u003e#3213\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3225\"\u003e#3225\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/blob/main/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.2\u003c/h2\u003e\n\u003cp\u003eReleased 2026-04-02\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of \u003ccode\u003eflag_value\u003c/code\u003e when \u003ccode\u003eis_flag=False\u003c/code\u003e to allow such options to be\nused without an explicit value. :issue:\u003ccode\u003e3084\u003c/code\u003e :pr:\u003ccode\u003e3152\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when using \u003ccode\u003elookup_default()\u003c/code\u003e.\n:issue:\u003ccode\u003e3136\u003c/code\u003e :pr:\u003ccode\u003e3199\u003c/code\u003e :pr:\u003ccode\u003e3202\u003c/code\u003e :pr:\u003ccode\u003e3209\u003c/code\u003e :pr:\u003ccode\u003e3212\u003c/code\u003e :pr:\u003ccode\u003e3224\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003ePrevent \u003ccode\u003e_NamedTextIOWrapper\u003c/code\u003e from closing streams owned by \u003ccode\u003eStreamMixer\u003c/code\u003e.\n:issue:\u003ccode\u003e824\u003c/code\u003e :issue:\u003ccode\u003e2991\u003c/code\u003e :issue:\u003ccode\u003e2993\u003c/code\u003e :issue:\u003ccode\u003e3110\u003c/code\u003e :pr:\u003ccode\u003e3139\u003c/code\u003e :pr:\u003ccode\u003e3140\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eAdd comprehensive tests for \u003ccode\u003eCliRunner\u003c/code\u003e stream lifecycle, covering\nlogging interaction, multi-threaded safety, and sequential invocation\nisolation. Add high-iteration stress tests behind a \u003ccode\u003estress\u003c/code\u003e marker\nwith a dedicated CI job. :pr:\u003ccode\u003e3139\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix callable \u003ccode\u003eflag_value\u003c/code\u003e being instantiated when used as a default via\n\u003ccode\u003edefault=True\u003c/code\u003e. :issue:\u003ccode\u003e3121\u003c/code\u003e :pr:\u003ccode\u003e3201\u003c/code\u003e :pr:\u003ccode\u003e3213\u003c/code\u003e :pr:\u003ccode\u003e3225\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/052c006033729bbb422cbdad0c4fee988ecb5aa5\"\u003e\u003ccode\u003e052c006\u003c/code\u003e\u003c/a\u003e Change update release date.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/502b7ce7b131473ef00a3586e60bb000f33b4c43\"\u003e\u003ccode\u003e502b7ce\u003c/code\u003e\u003c/a\u003e Merge branch 'stable' of \u003ca href=\"https://github.com/pallets/click\"\u003ehttps://github.com/pallets/click\u003c/a\u003e into release-8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/a0a37e411820861d48e21b131fdd840abaf746e0\"\u003e\u003ccode\u003ea0a37e4\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3301\"\u003e#3301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/57be6fc2b40eb40279d022e6aabc983ee0dfb7a9\"\u003e\u003ccode\u003e57be6fc\u003c/code\u003e\u003c/a\u003e Change publish to werkzeug latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/781d6a88bdd30229e72a84cd6753b0235f339679\"\u003e\u003ccode\u003e781d6a8\u003c/code\u003e\u003c/a\u003e Update publish workflows (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3266\"\u003e#3266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/ff795b66ba945239c779b528171f5fe4536cf844\"\u003e\u003ccode\u003eff795b6\u003c/code\u003e\u003c/a\u003e Update precommit pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/dd87ef4f9fa7d6f13e14885e9a6842a21ededebc\"\u003e\u003ccode\u003edd87ef4\u003c/code\u003e\u003c/a\u003e Update github action pins with tox\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/93d3f9d22e90035bc2b51c2183c15bd4a021376f\"\u003e\u003ccode\u003e93d3f9d\u003c/code\u003e\u003c/a\u003e Release version 8.3.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/3299ba1a8a5de34b24a7226a683a837d8a0857e7\"\u003e\u003ccode\u003e3299ba1\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog. (\u003ca href=\"https://redirect.github.com/pallets/click/issues/3264\"\u003e#3264\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pallets/click/commit/b7f62c4d002e5b5bca3ebef6b995b7338740fe6f\"\u003e\u003ccode\u003eb7f62c4\u003c/code\u003e\u003c/a\u003e Add missing PR to changelog.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pallets/click/compare/8.3.1...8.3.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cryptography` from 46.0.6 to 46.0.7\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst\"\u003ecryptography's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e46.0.7 - 2026-04-07\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n* **SECURITY ISSUE**: Fixed an issue where non-contiguous buffers could be\n  passed to APIs that accept Python buffers, which could lead to buffer\n  overflow. **CVE-2026-39892**\n* Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.6.\n\u003cp\u003e.. _v46-0-6:\u003cbr /\u003e\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pyca/cryptography/commit/622d672e429a7cff836a23c5903683dbec1901f5\"\u003e\u003ccode\u003e622d672\u003c/code\u003e\u003c/a\u003e 46.0.7 release (\u003ca href=\"https://redirect.github.com/pyca/cryptography/issues/14602\"\u003e#14602\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pyca/cryptography/compare/46.0.6...46.0.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `readchar` from 4.2.1 to 4.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/magmax/python-readchar/releases\"\u003ereadchar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.2.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix pytest 9 compatibility by \u003ca href=\"https://github.com/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd android as supported platform by \u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mweinelt\"\u003e\u003ccode\u003e@​mweinelt\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/129\"\u003emagmax/python-readchar#129\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Mause\"\u003e\u003ccode\u003e@​Mause\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/magmax/python-readchar/pull/130\"\u003emagmax/python-readchar#130\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ehttps://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/05faadbfd883e80fe8e3ff1f8da97471a3b85262\"\u003e\u003ccode\u003e05faadb\u003c/code\u003e\u003c/a\u003e release v4.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/a9f2384ae26520a9456673b73c05944aae8fd2ca\"\u003e\u003ccode\u003ea9f2384\u003c/code\u003e\u003c/a\u003e Add android as supported platform (\u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/130\"\u003e#130\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/753cb421b5a2cbe3601b1923992ac8b4985839a1\"\u003e\u003ccode\u003e753cb42\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/magmax/python-readchar/issues/129\"\u003e#129\u003c/a\u003e from mweinelt/pytest9-compat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/5165992002f211fe85175bcbb4f9a60d5e90fdac\"\u003e\u003ccode\u003e5165992\u003c/code\u003e\u003c/a\u003e Fix pytest 9 compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magmax/python-readchar/commit/2204f05e47b7e5c6209a49dfde0ad64938e439a5\"\u003e\u003ccode\u003e2204f05\u003c/code\u003e\u003c/a\u003e increment version after release\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/magmax/python-readchar/compare/v4.2.1...v4.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cyclopts` from 4.10.1 to 4.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/BrianPugh/cyclopts/releases\"\u003ecyclopts's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.10.2\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eConvenience Types:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eNormFloat\u003c/code\u003e - A float in the range \u003ccode\u003e[0, 1]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSignedNormFloat\u003c/code\u003e - A float in the range \u003ccode\u003e[-1, 1]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePercentInt\u003c/code\u003e - An int in the range \u003ccode\u003e[0, 100]\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eBy \u003ca href=\"https://github.com/BrianPugh\"\u003e\u003ccode\u003e@​BrianPugh\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BrianPugh/cyclopts/pull/778\"\u003eBrianPugh/cyclopts#778\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix handling of Union'd iterables by \u003ca href=\"https://github.com/BrianPugh\"\u003e\u003ccode\u003e@​BrianPugh\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/BrianPugh/cyclopts/pull/781\"\u003eBrianPugh/cyclopts#781\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/BrianPugh/cyclopts/compare/v4.10.1...v4.10.2\"\u003ehttps://github.com/BrianPugh/cyclopts/compare/v4.10.1...v4.10.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BrianPugh/cyclopts/commit/d003ce3b5f1c14c5d650d49439462ec07d1614b0\"\u003e\u003ccode\u003ed003ce3\u003c/code\u003e\u003c/a\u003e Fix handling of Union'd iterables\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BrianPugh/cyclopts/commit/222b85fb9617967fe16263b9dedde803fdcfc4bd\"\u003e\u003ccode\u003e222b85f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/BrianPugh/cyclopts/issues/778\"\u003e#778\u003c/a\u003e from BrianPugh/more-convenience-types\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BrianPugh/cyclopts/commit/276930bfb20403e9c42dfd40fb6310786af1080a\"\u003e\u003ccode\u003e276930b\u003c/code\u003e\u003c/a\u003e rename PercentageInt to PercentInt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BrianPugh/cyclopts/commit/b9428597a3548b1a340f9355e630faa7c8e2d471\"\u003e\u003ccode\u003eb942859\u003c/code\u003e\u003c/a\u003e NormFloat, SignedNormFloat, PercentageInt\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/BrianPugh/cyclopts/commit/2cbfbb2af31ac240e01d24177155d6fd925037d2\"\u003e\u003ccode\u003e2cbfbb2\u003c/code\u003e\u003c/a\u003e Add a cookbook example showing random tips.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/BrianPugh/cyclopts/compare/v4.10.1...v4.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-extra-types` from 2.11.1 to 2.11.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/releases\"\u003epydantic-extra-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.11.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: accept common timezone abbreviations like EDT in TimeZoneName validator by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/376\"\u003epydantic/pydantic-extra-types#376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct ISO 8601 serialization for negative pendulum Duration values by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/377\"\u003epydantic/pydantic-extra-types#377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/378\"\u003epydantic/pydantic-extra-types#378\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(python): add missing Pendulum Interval wrapper support by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/379\"\u003epydantic/pydantic-extra-types#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(isin): add ISIN type with checksum validation by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/380\"\u003epydantic/pydantic-extra-types#380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(json_schema): add JsonSchema type validated by jsonschema by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/381\"\u003epydantic/pydantic-extra-types#381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔖 Release version 2.11.2 by \u003ca href=\"https://github.com/yezz123\"\u003e\u003ccode\u003e@​yezz123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/382\"\u003epydantic/pydantic-extra-types#382\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/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/376\"\u003epydantic/pydantic-extra-types#376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/379\"\u003epydantic/pydantic-extra-types#379\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-extra-types/compare/v2.11.1...v2.11.2\"\u003ehttps://github.com/pydantic/pydantic-extra-types/compare/v2.11.1...v2.11.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/blob/main/HISTORY.md\"\u003epydantic-extra-types's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.11.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: accept common timezone abbreviations like EDT in TimeZoneName validator by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/376\"\u003epydantic/pydantic-extra-types#376\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: correct ISO 8601 serialization for negative pendulum Duration values by \u003ca href=\"https://github.com/r266-tech\"\u003e\u003ccode\u003e@​r266-tech\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/377\"\u003epydantic/pydantic-extra-types#377\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 3 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/378\"\u003epydantic/pydantic-extra-types#378\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(python): add missing Pendulum Interval wrapper support by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/379\"\u003epydantic/pydantic-extra-types#379\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(isin): add ISIN type with checksum validation by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/380\"\u003epydantic/pydantic-extra-types#380\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(json_schema): add JsonSchema type validated by jsonschema by \u003ca href=\"https://github.com/RedZapdos123\"\u003e\u003ccode\u003e@​RedZapdos123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/381\"\u003epydantic/pydantic-extra-types#381\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔖 Release version 2.11.2  by \u003ca href=\"https://github.com/yezz123\"\u003e\u003ccode\u003e@​yezz123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/382\"\u003epydantic/pydantic-extra-types#382\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/pydantic/pydantic-extra-types/commit/eb519c6bd5c2ffaca88e22755fae846081834e2d\"\u003e\u003ccode\u003eeb519c6\u003c/code\u003e\u003c/a\u003e 🔖 Release version 2.11.2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/382\"\u003e#382\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/b499ce2408154eb135157f60aea566dd740ba335\"\u003e\u003ccode\u003eb499ce2\u003c/code\u003e\u003c/a\u003e feat(json_schema): add JsonSchema type validated by jsonschema (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/381\"\u003e#381\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/11b606d429b09c69ffd6ad50035056c799165dc4\"\u003e\u003ccode\u003e11b606d\u003c/code\u003e\u003c/a\u003e feat(isin): add ISIN type with checksum validation (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/380\"\u003e#380\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/e92351734218ceaa9c164b35673019f898771df4\"\u003e\u003ccode\u003ee923517\u003c/code\u003e\u003c/a\u003e fix(python): add missing Pendulum Interval wrapper support (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/379\"\u003e#379\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/07ff36e6c38d71ff039dd45bbb019c894de9b4de\"\u003e\u003ccode\u003e07ff36e\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group with 3 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/378\"\u003e#378\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/7b75619af608d5936b058eeba7b01addd1e5ff79\"\u003e\u003ccode\u003e7b75619\u003c/code\u003e\u003c/a\u003e fix: correct ISO 8601 serialization for negative pendulum Duration values (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/377\"\u003e#377\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/6ea238fb97113d1ce1e64fa6b30a9fa9c6e1995b\"\u003e\u003ccode\u003e6ea238f\u003c/code\u003e\u003c/a\u003e fix: accept common timezone abbreviations like EDT in TimeZoneName validator ...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/compare/v2.11.1...v2.11.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.42.0 to 0.44.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.44.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio by \u003ca href=\"https://github.com/Kludex\"\u003e\u003ccode\u003e@​Kludex\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2888\"\u003eKludex/uvicorn#2888\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.43.0...0.44.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.43.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.42.0...0.43.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.44.0 (April 6, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImplement websocket keepalive pings for websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2888\"\u003e#2888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.43.0 (April 3, 2026)\u003c/h2\u003e\n\u003cp\u003eYou can quit Uvicorn now. We heard you, \u003ca href=\"https://github.com/pamelafox\"\u003e\u003ccode\u003e@​pamelafox\u003c/code\u003e\u003c/a\u003e - all 47 of your Ctrl+C's (thanks for flagging it, and thanks to \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e for the fix 🙏). \u003ca href=\"https://x.com/pamelafox/status/2039097686155227623\"\u003eSee the tweet\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEmit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for streaming responses (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2829\"\u003e#2829\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\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/edb54c43c0321c0b41eee1473f3f4cf145e8927f\"\u003e\u003ccode\u003eedb54c4\u003c/code\u003e\u003c/a\u003e Version 0.44.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2890\"\u003e#2890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/029be08867fe899cde6fd31a3ba75fffca7bd9ae\"\u003e\u003ccode\u003e029be08\u003c/code\u003e\u003c/a\u003e Implement websocket keepalive pings for websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2888\"\u003e#2888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/8d397c73191b49c6d5280098d7c09dbe474e00bf\"\u003e\u003ccode\u003e8d397c7\u003c/code\u003e\u003c/a\u003e Version 0.43.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2885\"\u003e#2885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/587042d68ff6c813ec0d8cfafaa820ebe7229d23\"\u003e\u003ccode\u003e587042d\u003c/code\u003e\u003c/a\u003e 🐛 Emit \u003ccode\u003ehttp.disconnect\u003c/code\u003e ASGI \u003ccode\u003ereceive()\u003c/code\u003e event on server shutting down for s...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/c9a75fb67b2e969253a41ef4ad447e013eee879e\"\u003e\u003ccode\u003ec9a75fb\u003c/code\u003e\u003c/a\u003e chore(deps): bump the github-actions group with 3 updates (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2878\"\u003e#2878\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/84fd578224e36766efb056585cb6cc5171270089\"\u003e\u003ccode\u003e84fd578\u003c/code\u003e\u003c/a\u003e chore(deps): bump pygments from 2.19.2 to 2.20.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2877\"\u003e#2877\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/cd52d34b55d898180a65cfc01a6a88aac54c65c3\"\u003e\u003ccode\u003ecd52d34\u003c/code\u003e\u003c/a\u003e Use native \u003ccode\u003econtext\u003c/code\u003e parameter for \u003ccode\u003ecreate_task\u003c/code\u003e on Python 3.11+ (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2859\"\u003e#2859\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/5211880320b2e99a532eb121808039404da234ab\"\u003e\u003ccode\u003e5211880\u003c/code\u003e\u003c/a\u003e Drop cast in ASGI types (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2875\"\u003e#2875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1cb8e747e2817ee46a4c0d44139e46b3b1f8fab6\"\u003e\u003ccode\u003e1cb8e74\u003c/code\u003e\u003c/a\u003e Add websocket 500 fallback header test (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2874\"\u003e#2874\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/28efbb24bd590f1f943cbc2bf84f197268a8c6d8\"\u003e\u003ccode\u003e28efbb2\u003c/code\u003e\u003c/a\u003e chore(deps-dev): bump cryptography from 46.0.5 to 46.0.6 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2873\"\u003e#2873\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.42.0...0.44.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `whenever` from 0.9.5 to 0.10.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ariebovenberg/whenever/releases\"\u003ewhenever's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.10.0\u003c/h2\u003e\n\u003cp\u003eA big release with several breaking changes and improvements. Highlights are the new delta API, customizable string formatting and parsing, and \u003ccode\u003esince()\u003c/code\u003e/\u003ccode\u003euntil()\u003c/code\u003e methods for calculating differences between datetimes. See the full list below.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eDateTimeDelta\u003c/code\u003e and \u003ccode\u003eDateDelta\u003c/code\u003e have been replaced by \u003ccode\u003eItemizedDelta\u003c/code\u003e and \u003ccode\u003eItemizedDateDelta\u003c/code\u003e, respectively. The helper functions for creating calendar deltas (\u003ccode\u003eyears()\u003c/code\u003e, \u003ccode\u003emonths()\u003c/code\u003e, \u003ccode\u003eweeks()\u003c/code\u003e, \u003ccode\u003edays()\u003c/code\u003e) have also been deprecated.\u003c/p\u003e\n\u003cp\u003eThe new deltas are fully un-normalized, meaning \u0026quot;90 minutes\u0026quot; and \u0026quot;1 hour and 30 minutes\u0026quot; are distinct values. They implement the \u003ccode\u003eMapping\u003c/code\u003e interface and support a rich set of operations including \u003ccode\u003eadd()\u003c/code\u003e, \u003ccode\u003esubtract()\u003c/code\u003e, \u003ccode\u003etotal()\u003c/code\u003e, \u003ccode\u003ein_units()\u003c/code\u003e, \u003ccode\u003ereplace()\u003c/code\u003e, and \u003ccode\u003esign()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: the \u0026quot;partially\u0026quot; normalized approach was confusing to users. A fully un-normalized approach also better fits the new API for calculating deltas between datetimes. This approach is also more consistent with other libraries, and allows for more control over formatting and parsing of deltas.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003eDateDelta(...)\u003c/code\u003e with \u003ccode\u003eItemizedDateDelta(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eDateTimeDelta(...)\u003c/code\u003e with \u003ccode\u003eItemizedDelta(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eyears()\u003c/code\u003e, \u003ccode\u003emonths()\u003c/code\u003e, \u003ccode\u003eweeks()\u003c/code\u003e, \u003ccode\u003edays()\u003c/code\u003e helper functions with \u003ccode\u003eItemizedDateDelta(years=...)\u003c/code\u003e, etc. Or, if passing to a datetime method, use keyword arguments directly (e.g. \u003ccode\u003edt.add(years=1, months=2)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e.in_months_days()\u003c/code\u003e and \u003ccode\u003e.in_months_days_secs_nanos()\u003c/code\u003e with \u003ccode\u003e.in_units(['months', 'days'])\u003c/code\u003e and \u003ccode\u003e.in_units(['months', 'days', 'seconds', 'nanoseconds'])\u003c/code\u003e, respectively.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eDate\u003c/code\u003e \u003ccode\u003e+\u003c/code\u003e/\u003ccode\u003e-\u003c/code\u003e operators with \u003ccode\u003eDateDelta\u003c/code\u003e are deprecated; use \u003ccode\u003eadd()\u003c/code\u003e/\u003ccode\u003esubtract()\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eDate\u003c/code\u003e \u003ccode\u003e-\u003c/code\u003e operator between two dates is deprecated; use \u003ccode\u003esince()\u003c/code\u003e or \u003ccode\u003esubtract()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003eignore_dst\u003c/code\u003e parameter (which was used to enable DST-unsafe operations) has been replaced by a warnings mechanism that allows users to suppress or escalate DST-related warnings using per-method keyword arguments or Python's standard warning filters.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: The \u003ccode\u003eignore_dst\u003c/code\u003e parameter was a source of confusion, and made the \u003ccode\u003eOffsetDateTime\u003c/code\u003e APIs less compatible.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003eignore_dst=True\u003c/code\u003e with the appropriate keyword argument:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eOffsetDateTime\u003c/code\u003e methods: \u003ccode\u003estale_offset_ok=True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePlainDateTime\u003c/code\u003e methods: \u003ccode\u003enaive_arithmetic_ok=True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eTimeDelta\u003c/code\u003e methods: \u003ccode\u003edays_assumed_24h_ok=True\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAlternatively, use Python's \u003ccode\u003ewarnings.filterwarnings()\u003c/code\u003e to suppress \u003ccode\u003eStaleOffsetWarning\u003c/code\u003e, \u003ccode\u003eNaiveArithmeticWarning\u003c/code\u003e, or \u003ccode\u003eDaysAssumed24HoursWarning\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eignore_dst\u003c/code\u003e is still accepted (with a deprecation warning) and will be removed in a future release.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eBehavior of an edge case is changed: disambiguation of non-existent times as a result of calendar arithmetic (or \u003ccode\u003ereplace()\u003c/code\u003e) no longer tries to reuse the previous offset. This change also fixes a rare bug in case a timezone transition skips an entire day (like the Samoa timezone did in 2011) (\u003ca href=\"https://redirect.github.com/ariebovenberg/whenever/issues/252\"\u003e#252\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: Unlike the case of repeated times, reusing the previous offset for non-existent times doesn't have the advantage of preventing unexpected jumps in time. The new behavior is consistent with other libraries.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eDropped Python 3.9 support\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: Python 3.9 is EOL since October 2025. Python 3.9 only accounts for less than 0.1% of downloads.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved \u003ccode\u003eformat_common_iso()\u003c/code\u003e and \u003ccode\u003eparse_common_iso()\u003c/code\u003e methods. Use \u003ccode\u003eformat_iso()\u003c/code\u003e and \u003ccode\u003eparse_iso()\u003c/code\u003e instead. These have been deprecated since 0.9.0.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003eround()\u003c/code\u003e methods are stricter about keyword-only and positional-only arguments.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eDeprecated\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eTimeDelta.in_hours()\u003c/code\u003e, \u003ccode\u003e.in_minutes()\u003c/code\u003e, \u003ccode\u003e.in_seconds()\u003c/code\u003e, \u003ccode\u003e.in_milliseconds()\u003c/code\u003e, \u003ccode\u003e.in_microseconds()\u003c/code\u003e, \u003ccode\u003e.in_nanoseconds()\u003c/code\u003e, \u003ccode\u003e.in_days_of_24h()\u003c/code\u003e, and \u003ccode\u003e.in_hrs_mins_secs_nanos()\u003c/code\u003e. Use \u003ccode\u003etotal()\u003c/code\u003e or \u003ccode\u003ein_units()\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eDate.days_since()\u003c/code\u003e and \u003ccode\u003eDate.days_until()\u003c/code\u003e. Use \u003ccode\u003esince()\u003c/code\u003e and \u003ccode\u003euntil()\u003c/code\u003e with \u003ccode\u003etotal='days'\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epy_date()\u003c/code\u003e, \u003ccode\u003epy_time()\u003c/code\u003e, \u003ccode\u003epy_datetime()\u003c/code\u003e, and \u003ccode\u003epy_timedelta()\u003c/code\u003e. Use the new \u003ccode\u003eto_stdlib()\u003c/code\u003e method instead, which provides a consistent name across all types.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003efrom_py_date()\u003c/code\u003e, \u003ccode\u003efrom_py_time()\u003c/code\u003e, \u003ccode\u003efrom_py_datetime()\u003c/code\u003e, and \u003ccode\u003efrom_py_timedelta()\u003c/code\u003e. Use the constructor directly instead (e.g. \u003ccode\u003eDate(datetime.date(...))\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eparse_strptime()\u003c/code\u003e methods on \u003ccode\u003eOffsetDateTime\u003c/code\u003e and \u003ccode\u003ePlainDateTime\u003c/code\u003e. Use the new \u003ccode\u003eparse()\u003c/code\u003e method instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/ariebovenberg/whenever/blob/main/CHANGELOG.md\"\u003ewhenever's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.10.0 (2026-04-05)\u003c/h2\u003e\n\u003cp\u003eA big release with several breaking changes and improvements. Highlights\nare the new delta API, customizable string formatting and parsing,\nand \u003ccode\u003esince()\u003c/code\u003e/\u003ccode\u003euntil()\u003c/code\u003e methods for calculating differences between datetimes.\nSee the full list below.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBreaking changes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eDateTimeDelta\u003c/code\u003e and \u003ccode\u003eDateDelta\u003c/code\u003e have been replaced by\n\u003ccode\u003eItemizedDelta\u003c/code\u003e and \u003ccode\u003eItemizedDateDelta\u003c/code\u003e, respectively.\nThe helper functions for creating calendar deltas\n(\u003ccode\u003eyears()\u003c/code\u003e, \u003ccode\u003emonths()\u003c/code\u003e, \u003ccode\u003eweeks()\u003c/code\u003e, \u003ccode\u003edays()\u003c/code\u003e) have also been deprecated.\u003c/p\u003e\n\u003cp\u003eThe new deltas are fully un-normalized,\nmeaning \u0026quot;90 minutes\u0026quot; and \u0026quot;1 hour and 30 minutes\u0026quot; are distinct values.\nThey implement the \u003ccode\u003eMapping\u003c/code\u003e interface and support a rich set of operations\nincluding \u003ccode\u003eadd()\u003c/code\u003e, \u003ccode\u003esubtract()\u003c/code\u003e, \u003ccode\u003etotal()\u003c/code\u003e, \u003ccode\u003ein_units()\u003c/code\u003e, \u003ccode\u003ereplace()\u003c/code\u003e,\nand \u003ccode\u003esign()\u003c/code\u003e.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: the \u0026quot;partially\u0026quot; normalized approach was confusing to users.\nA fully un-normalized approach also better fits the new API for calculating deltas\nbetween datetimes. This approach is also more consistent with other\nlibraries, and allows for more control over formatting and parsing of deltas.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003eDateDelta(...)\u003c/code\u003e with \u003ccode\u003eItemizedDateDelta(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eDateTimeDelta(...)\u003c/code\u003e with \u003ccode\u003eItemizedDelta(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eyears()\u003c/code\u003e, \u003ccode\u003emonths()\u003c/code\u003e, \u003ccode\u003eweeks()\u003c/code\u003e, \u003ccode\u003edays()\u003c/code\u003e helper functions\nwith \u003ccode\u003eItemizedDateDelta(years=...)\u003c/code\u003e, etc. Or, if passing to a\ndatetime method, use keyword arguments directly (e.g. \u003ccode\u003edt.add(years=1, months=2)\u003c/code\u003e).\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003e.in_months_days()\u003c/code\u003e and \u003ccode\u003e.in_months_days_secs_nanos()\u003c/code\u003e\nwith \u003ccode\u003e.in_units(['months', 'days'])\u003c/code\u003e and \u003ccode\u003e.in_units(['months', 'days', 'seconds', 'nanoseconds'])\u003c/code\u003e, respectively.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eDate\u003c/code\u003e \u003ccode\u003e+\u003c/code\u003e/\u003ccode\u003e-\u003c/code\u003e operators with \u003ccode\u003eDateDelta\u003c/code\u003e are deprecated;\nuse \u003ccode\u003eadd()\u003c/code\u003e/\u003ccode\u003esubtract()\u003c/code\u003e instead.\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003eDate\u003c/code\u003e \u003ccode\u003e-\u003c/code\u003e operator between two dates is deprecated;\nuse \u003ccode\u003esince()\u003c/code\u003e or \u003ccode\u003esubtract()\u003c/code\u003e instead.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eThe \u003ccode\u003eignore_dst\u003c/code\u003e parameter (which was used to enable DST-unsafe operations)\nhas been replaced by a warnings mechanism that allows users to\nsuppress or escalate DST-related warnings\nusing per-method keyword arguments or Python's standard warning filters.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eRationale\u003c/strong\u003e: The \u003ccode\u003eignore_dst\u003c/code\u003e parameter was a source of confusion,\nand made the \u003ccode\u003eOffsetDateTime\u003c/code\u003e APIs less compatible.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration\u003c/strong\u003e:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eReplace \u003ccode\u003eignore_dst=True\u003c/code\u003e with the appropriate keyword argument:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eOffsetDateTime\u003c/code\u003e methods: \u003ccode\u003estale_offset_ok=True\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003ePlainDateTime\u003c/code\u003e methods: \u003ccode\u003enaive_arithmetic_ok=True\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/71d6fd3ec5c35ee1b8e4cf6eb42d042c3d89a2f6\"\u003e\u003ccode\u003e71d6fd3\u003c/code\u003e\u003c/a\u003e prepare next release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/21807b57e593e00d3f63e73797527d16bc7bb9a0\"\u003e\u003ccode\u003e21807b5\u003c/code\u003e\u003c/a\u003e docs improvements, fix nth_weekday limitation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/102f54cd63a24fb173c781aee1793b3648897837\"\u003e\u003ccode\u003e102f54c\u003c/code\u003e\u003c/a\u003e support deltas in Instant.add/subtract, update arithmetic docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/bb0c433da2b0380ca66085098328b487008a176e\"\u003e\u003ccode\u003ebb0c433\u003c/code\u003e\u003c/a\u003e clean up test/docs gaps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/88584e5f5fbfb3cc03e9d0468577e3c9086afaef\"\u003e\u003ccode\u003e88584e5\u003c/code\u003e\u003c/a\u003e extend leap second support to custom format parsing and docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/93d37e12d822655548f5a83effe4548bea3e2eea\"\u003e\u003ccode\u003e93d37e1\u003c/code\u003e\u003c/a\u003e fix: resolve CI failures after rebase\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/37531baf3ab8b7ac8e33d57fa5d12050453ebc4c\"\u003e\u003ccode\u003e37531ba\u003c/code\u003e\u003c/a\u003e fix(time): handle leap seconds in time parsing\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/dd81af3bbec54525b57c7bb49c7df9a705cc6cd9\"\u003e\u003ccode\u003edd81af3\u003c/code\u003e\u003c/a\u003e fix: partial CR changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/cf6fe9d7160a5f814346ea72043ff328337cf77f\"\u003e\u003ccode\u003ecf6fe9d\u003c/code\u003e\u003c/a\u003e feat(test): getting new leap second functionality to 100% test coverage\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ariebovenberg/whenever/commit/939a7fe4ced89e670b1cdd9ac763d900e36b588f\"\u003e\u003ccode\u003e939a7fe\u003c/code\u003e\u003c/a\u003e fix: fixing bug derived from colon suffix check for leap second parsing\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ariebovenberg/whenever/compare/0.9.5...0.10.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uv` from 0.11.3 to 0.11.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/uv/releases\"\u003euv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.11.5\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-08.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd CPython 3.13.13, 3.14.4, and 3.15.0a8 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18908\"\u003e#18908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ebuild_system.requires\u003c/code\u003e error message (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18911\"\u003e#18911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove trailing path separators in path normalization (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18915\"\u003e#18915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error messages for unsupported or invalid TLS certificates (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18924\"\u003e#18924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude-newer\u003c/code\u003e to \u003ccode\u003e[[tool.uv.index]]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18839\"\u003e#18839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003euv audit\u003c/code\u003e: add context/warnings for ignored vulnerabilities (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18905\"\u003e#18905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNormalize persisted fork markers before lock equality checks (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18612\"\u003e#18612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear junction properly when uninstalling Python versions on Windows (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18815\"\u003e#18815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReport error cleanly instead of panicking on TLS certificate error (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18904\"\u003e#18904\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove the legacy \u003ccode\u003ePIP_COMPATIBILITY.md\u003c/code\u003e redirect file (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18928\"\u003e#18928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003euv init example-bare --bare\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18822\"\u003e#18822\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18925\"\u003e#18925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall uv 0.11.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/uv/releases/download/0.11.5/uv-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/uv/releases/download/0.11.5/uv-installer.ps1 | iex\u0026quot;\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eDownload uv 0.11.5\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFile\u003c/th\u003e\n\u003cth\u003ePlatform\u003c/th\u003e\n\u003cth\u003eChecksum\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003c/table\u003e\n\u003c!-- 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/uv/blob/main/CHANGELOG.md\"\u003euv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.11.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-08.\u003c/p\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd CPython 3.13.13, 3.14.4, and 3.15.0a8 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18908\"\u003e#18908\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ebuild_system.requires\u003c/code\u003e error message (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18911\"\u003e#18911\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove trailing path separators in path normalization (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18915\"\u003e#18915\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImprove error messages for unsupported or invalid TLS certificates (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18924\"\u003e#18924\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003eexclude-newer\u003c/code\u003e to \u003ccode\u003e[[tool.uv.index]]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18839\"\u003e#18839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003euv audit\u003c/code\u003e: add context/warnings for ignored vulnerabilities (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18905\"\u003e#18905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNormalize persisted fork markers before lock equality checks (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18612\"\u003e#18612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eClear junction properly when uninstalling Python versions on Windows (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18815\"\u003e#18815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReport error cleanly instead of panicking on TLS certificate error (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18904\"\u003e#18904\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove the legacy \u003ccode\u003ePIP_COMPATIBILITY.md\u003c/code\u003e redirect file (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18928\"\u003e#18928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003euv init example-bare --bare\u003c/code\u003e examples (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18822\"\u003e#18822\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18925\"\u003e#18925\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.11.4\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-04-07.\u003c/p\u003e\n\u003ch3\u003eEnhancements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003e--upgrade-group\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18266\"\u003e#18266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMerge repeated archive URL hashes by version ID (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18841\"\u003e#18841\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRequire all direct URL hash algorithms to match (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18842\"\u003e#18842\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid panics in environment finding via cycle detection (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18828\"\u003e#18828\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnforce direct URL hashes for \u003ccode\u003epyproject.toml\u003c/code\u003e dependencies (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18786\"\u003e#18786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eError on \u003ccode\u003e--locked\u003c/code\u003e and \u003ccode\u003e--frozen\u003c/code\u003e when script lockfile is missing (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18832\"\u003e#18832\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003euv export\u003c/code\u003e extra resolution for workspace member and conflicting extras (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18888\"\u003e#18888\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eInclude conflicts defined in virtual workspace root (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18886\"\u003e#18886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRecompute relative \u003ccode\u003eexclude-newer\u003c/code\u003e values during \u003ccode\u003euv tree --outdated\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18899\"\u003e#18899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003e--exclude-newer\u003c/code\u003e in \u003ccode\u003euv tool list --outdated\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/pull/18861\"\u003e#18861\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/uv/commit/95eaa68c8df627eb915bc355831fd7d169d91fe3\"\u003e\u003ccode\u003e95eaa68\u003c/code\u003e\u003c/a\u003e Bump version to 0.11.5 (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18930\"\u003e#18930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/f6d67d57c1a9f17f7ab233654b55e061eb4bfd10\"\u003e\u003ccode\u003ef6d67d5\u003c/code\u003e\u003c/a\u003e Improve certificate loading error messages (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18924\"\u003e#18924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/39b83c30e0cdaed833e88564878376f9361987d2\"\u003e\u003ccode\u003e39b83c3\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexclude-newer\u003c/code\u003e to \u003ccode\u003e[[tool.uv.index]]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18839\"\u003e#18839\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/7924ba5b1419345dc5b9a9a16e6bcba2b59a41a6\"\u003e\u003ccode\u003e7924ba5\u003c/code\u003e\u003c/a\u003e uv audit: add context/warnings for ignored vulnerabilities (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18905\"\u003e#18905\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/a352ce01eab5f19bbd5929f2a5f346187552ee7c\"\u003e\u003ccode\u003ea352ce0\u003c/code\u003e\u003c/a\u003e Remove the legacy PIP_COMPATIBILITY.md redirect file (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18928\"\u003e#18928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/33b633891181f768568bfc3196039d368417fe98\"\u003e\u003ccode\u003e33b6338\u003c/code\u003e\u003c/a\u003e Normalize persisted fork markers before lock equality checks (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18612\"\u003e#18612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/6a203d9c1da7a4d44fcde984467830c73cc1c3b2\"\u003e\u003ccode\u003e6a203d9\u003c/code\u003e\u003c/a\u003e Clear junction properly when uninstalling Python versions on Windows (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18815\"\u003e#18815\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/6af38bb1bea1a71218e3e1d667818d59f20884aa\"\u003e\u003ccode\u003e6af38bb\u003c/code\u003e\u003c/a\u003e Update bare suffix in subsequent\u003ccode\u003e--bare\u003c/code\u003e init documentation as well (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18925\"\u003e#18925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/5aca743f0ebc309b0a34f154dfafd9e76ba9f304\"\u003e\u003ccode\u003e5aca743\u003c/code\u003e\u003c/a\u003e uv init example-bare --bare (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18822\"\u003e#18822\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/uv/commit/6a3331fe106e5979503180ef717f238876cd2d84\"\u003e\u003ccode\u003e6a3331f\u003c/code\u003e\u003c/a\u003e Create a \u0026quot;deployment\u0026quot; for the release-gate job (\u003ca href=\"https://redirect.github.com/astral-sh/uv/issues/18920\"\u003e#18920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/uv/compare/0.11.3...0.11.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prefect-kubernetes` from 0.7.6 to 0.7.7\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/b9b03fc4ec00d332d62434df6b067604f44f8812\"\u003e\u003ccode\u003eb9b03fc\u003c/code\u003e\u003c/a\u003e fix: set worker attribution env vars in the worker process itself (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21365\"\u003e#21365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/e207113fe2460b5d9d29df8a1f6dcc14074e2035\"\u003e\u003ccode\u003ee207113\u003c/code\u003e\u003c/a\u003e feat(prefect-redis): add url field to RedisMessagingSettings (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21210\"\u003e#21210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/fcbac206040d74c5c5473525207b144f98cbf80e\"\u003e\u003ccode\u003efcbac20\u003c/code\u003e\u003c/a\u003e docs: Add release notes for \u003ccode\u003eprefect-aws==0.7.7\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21355\"\u003e#21355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/8c7310ae671aef92f47d02910359b02b26bbfdf6\"\u003e\u003ccode\u003e8c7310a\u003c/code\u003e\u003c/a\u003e Add exponential backoff retries for ECS task definition registration (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21354\"\u003e#21354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/ab39bf0e11ffe0ca0cf11cb44add19a9efb13eb8\"\u003e\u003ccode\u003eab39bf0\u003c/code\u003e\u003c/a\u003e feat(prefect-aws): Log ECS task ARN after task creation (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21342\"\u003e#21342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/82713863e2577237c7bf6a721873b8f414e4800a\"\u003e\u003ccode\u003e8271386\u003c/code\u003e\u003c/a\u003e Docs: remove unused catalog files (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21323\"\u003e#21323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/f76299fd680a8462a340cd56aef1f7b2e88d3ea4\"\u003e\u003ccode\u003ef76299f\u003c/code\u003e\u003c/a\u003e Add opt-in BuildKit/buildx support via python-on-whales (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21286\"\u003e#21286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/4b67d3fe05baeb421deccd78eee82b13bbe616f2\"\u003e\u003ccode\u003e4b67d3f\u003c/code\u003e\u003c/a\u003e Fix Docker worker \u003ccode\u003e_pull_image\u003c/code\u003e silently swallowing pull errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21310\"\u003e#21310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/faae6a54c5e28c19aa80428d5fd7f0eef95ece66\"\u003e\u003ccode\u003efaae6a5\u003c/code\u003e\u003c/a\u003e Remove internal Runner usage from bundle execution and CLI paths (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21252\"\u003e#21252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/53b3c44f672f9a246086a28b1368b938ca1679e4\"\u003e\u003ccode\u003e53b3c44\u003c/code\u003e\u003c/a\u003e Preserve casing of Kubernetes label keys (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21259\"\u003e#21259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/prefect/compare/prefect-kubernetes-0.7.6...prefect-kubernetes-0.7.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `prefect-redis` from 0.2.9 to 0.2.10\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/b9b03fc4ec00d332d62434df6b067604f44f8812\"\u003e\u003ccode\u003eb9b03fc\u003c/code\u003e\u003c/a\u003e fix: set worker attribution env vars in the worker process itself (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21365\"\u003e#21365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/e207113fe2460b5d9d29df8a1f6dcc14074e2035\"\u003e\u003ccode\u003ee207113\u003c/code\u003e\u003c/a\u003e feat(prefect-redis): add url field to RedisMessagingSettings (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21210\"\u003e#21210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/fcbac206040d74c5c5473525207b144f98cbf80e\"\u003e\u003ccode\u003efcbac20\u003c/code\u003e\u003c/a\u003e docs: Add release notes for \u003ccode\u003eprefect-aws==0.7.7\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21355\"\u003e#21355\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/8c7310ae671aef92f47d02910359b02b26bbfdf6\"\u003e\u003ccode\u003e8c7310a\u003c/code\u003e\u003c/a\u003e Add exponential backoff retries for ECS task definition registration (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21354\"\u003e#21354\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/ab39bf0e11ffe0ca0cf11cb44add19a9efb13eb8\"\u003e\u003ccode\u003eab39bf0\u003c/code\u003e\u003c/a\u003e feat(prefect-aws): Log ECS task ARN after task creation (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21342\"\u003e#21342\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/82713863e2577237c7bf6a721873b8f414e4800a\"\u003e\u003ccode\u003e8271386\u003c/code\u003e\u003c/a\u003e Docs: remove unused catalog files (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21323\"\u003e#21323\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/f76299fd680a8462a340cd56aef1f7b2e88d3ea4\"\u003e\u003ccode\u003ef76299f\u003c/code\u003e\u003c/a\u003e Add opt-in BuildKit/buildx support via python-on-whales (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21286\"\u003e#21286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/4b67d3fe05baeb421deccd78eee82b13bbe616f2\"\u003e\u003ccode\u003e4b67d3f\u003c/code\u003e\u003c/a\u003e Fix Docker worker \u003ccode\u003e_pull_image\u003c/code\u003e silently swallowing pull errors (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21310\"\u003e#21310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/faae6a54c5e28c19aa80428d5fd7f0eef95ece66\"\u003e\u003ccode\u003efaae6a5\u003c/code\u003e\u003c/a\u003e Remove internal Runner usage from bundle execution and CLI paths (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21252\"\u003e#21252\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PrefectHQ/prefect/commit/53b3c44f672f9a246086a28b1368b938ca1679e4\"\u003e\u003ccode\u003e53b3c44\u003c/code\u003e\u003c/a\u003e Preserve casing of Kubernetes label keys (\u003ca href=\"https://redirect.github.com/PrefectHQ/prefect/issues/21259\"\u003e#21259\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PrefectHQ/prefect/compare/prefect-redis-0.2.9...prefect-redis-0.2.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest` from 8.4.2 to 9.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest/releases\"\u003epytest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.0.3\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.3 (2026-04-07)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12444\"\u003e#12444\u003c/a\u003e: Fixed \u003ccode\u003epytest.approx\u003c/code\u003e which now correctly takes into account \u003ccode\u003e~collections.abc.Mapping\u003c/code\u003e keys order to compare them.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13634\"\u003e#13634\u003c/a\u003e: Blocking a \u003ccode\u003econftest.py\u003c/code\u003e file using the \u003ccode\u003e-p no:\u003c/code\u003e option is now explicitly disallowed.\u003c/p\u003e\n\u003cp\u003ePreviously this resulted in an internal assertion failure during plugin loading.\u003c/p\u003e\n\u003cp\u003ePytest now raises a clear \u003ccode\u003eUsageError\u003c/code\u003e explaining that conftest files are not plugins and cannot be disabled via \u003ccode\u003e-p\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13734\"\u003e#13734\u003c/a\u003e: Fixed crash when a test raises an exceptiongroup with \u003ccode\u003e__tracebackhide__ = True\u003c/code\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14195\"\u003e#14195\u003c/a\u003e: Fixed an issue where non-string messages passed to \u003c!-- raw HTML omitted --\u003eunittest.TestCase.subTest()\u003c!-- raw HTML omitted --\u003e were not printed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e: Fixed use of insecure temporary directory (CVE-2025-71176).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImproved documentation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13388\"\u003e#13388\u003c/a\u003e: Clarified documentation for \u003ccode\u003e-p\u003c/code\u003e vs \u003ccode\u003ePYTEST_PLUGINS\u003c/code\u003e plugin loading and fixed an incorrect \u003ccode\u003e-p\u003c/code\u003e example.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13731\"\u003e#13731\u003c/a\u003e: Clarified that capture fixtures (e.g. \u003ccode\u003ecapsys\u003c/code\u003e and \u003ccode\u003ecapfd\u003c/code\u003e) take precedence over the \u003ccode\u003e-s\u003c/code\u003e / \u003ccode\u003e--capture=no\u003c/code\u003e command-line options in \u003ccode\u003eAccessing captured output from a test function \u0026lt;accessing-captured-output\u0026gt;\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14088\"\u003e#14088\u003c/a\u003e: Clarified that the default \u003ccode\u003epytest_collection\u003c/code\u003e hook sets \u003ccode\u003esession.items\u003c/code\u003e before it calls \u003ccode\u003epytest_collection_finish\u003c/code\u003e, not after.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14255\"\u003e#14255\u003c/a\u003e: TOML integer log levels must be quoted: Updating reference documentation.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eContributor-facing changes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12689\"\u003e#12689\u003c/a\u003e: The test reports are now published to Codecov from GitHub Actions.\nThe test statistics is visible \u003ca href=\"https://app.codecov.io/gh/pytest-dev/pytest/tests\"\u003eon the web interface\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003e-- by \u003ccode\u003ealeguy02\u003c/code\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e9.0.2\u003c/h2\u003e\n\u003ch1\u003epytest 9.0.2 (2025-12-06)\u003c/h1\u003e\n\u003ch2\u003eBug fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13896\"\u003e#13896\u003c/a\u003e: The terminal progress feature added in pytest 9.0.0 has been disabled by default, except on Windows, due to compatibility issues with some terminal emulators.\u003c/p\u003e\n\u003cp\u003eYou may enable it again by passing \u003ccode\u003e-p terminalprogress\u003c/code\u003e. We may enable it by default again once compatibility improves in the future.\u003c/p\u003e\n\u003cp\u003eAdditionally, when the environment variable \u003ccode\u003eTERM\u003c/code\u003e is \u003ccode\u003edumb\u003c/code\u003e, the escape codes are no longer emitted, even if the plugin is enabled.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13904\"\u003e#13904\u003c/a\u003e: Fixed the TOML type of the \u003ccode\u003etmp_path_retention_count\u003c/code\u003e settings in the API reference from number to string.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/13946\"\u003e#13946\u003c/a\u003e: The private \u003ccode\u003econfig.inicfg\u003c/code\u003e attribute was changed in a breaking manner in pytest 9.0.0.\nDue to its usage in the ecosystem, it is now restored to working order using a compatibility shim.\nIt will be deprecated in pytest 9.1 and removed in pytest 10.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/a7d58d7a21b78581e636bbbdea13c66ad1657c1e\"\u003e\u003ccode\u003ea7d58d7\u003c/code\u003e\u003c/a\u003e Prepare release version 9.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/089d98199c253d8f89a040243bc4f2aa6cd5ab22\"\u003e\u003ccode\u003e089d981\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14366\"\u003e#14366\u003c/a\u003e from bluetech/revert-14193-backport\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/8127eaf4ab7f6b2fdd0dc1b38343ec97aeef05ac\"\u003e\u003ccode\u003e8127eaf\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Fix: assertrepr_compare respects dict insertion order (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14050\"\u003e#14050\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14193\"\u003e#14193\u003c/a\u003e)\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/99a7e6029e7a6e8d53e5df114b1346e035370241\"\u003e\u003ccode\u003e99a7e60\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14363\"\u003e#14363\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/95d8423bd...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/ddee02a578da30dd43aedc39c1c1f1aaadfcee95\"\u003e\u003ccode\u003eddee02a\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14343\"\u003e#14343\u003c/a\u003e from bluetech/cve-2025-71176-simple\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/74eac6916fee34726cb194f16c516e96fbd29619\"\u003e\u003ccode\u003e74eac69\u003c/code\u003e\u003c/a\u003e doc: Update training info (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14298\"\u003e#14298\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14301\"\u003e#14301\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/f92dee777cfdb77d1c43633d02766ddf1f07c869\"\u003e\u003ccode\u003ef92dee7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14267\"\u003e#14267\u003c/a\u003e from pytest-dev/patchback/backports/9.0.x/d6fa26c62...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/7ee58acc8777c31ac6cf388d01addf5a414a7439\"\u003e\u003ccode\u003e7ee58ac\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/12378\"\u003e#12378\u003c/a\u003e from Pierre-Sassoulas/fix-implicit-str-concat-and-d...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/37da870d37e3a2f5177cae075c7b9ae279432bf8\"\u003e\u003ccode\u003e37da870\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14259\"\u003e#14259\u003c/a\u003e from mitre88/patch-4 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14268\"\u003e#14268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest/commit/c34bfa3b7acb65b594707c714f1d8461b0304eed\"\u003e\u003ccode\u003ec34bfa3\u003c/code\u003e\u003c/a\u003e Add explanation for string context diffs (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14257\"\u003e#14257\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest/issues/14266\"\u003e#14266\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest/compare/8.4.2...9.0.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-asyncio` from 1.0.0 to 0.23.3\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/260b79185b198bad96a8fb2abc607a91ad8a5490\"\u003e\u003ccode\u003e260b791\u003c/code\u003e\u003c/a\u003e [docs] Prepare release of v0.23.3.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/6a253e20fb174b6750075a6cfdd9409e4c6221f5\"\u003e\u003ccode\u003e6a253e2\u003c/code\u003e\u003c/a\u003e [docs] Shorten changelog by combining multiple issues.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/e2cbb906c5124df131abe39c447c5486aae913be\"\u003e\u003ccode\u003ee2cbb90\u003c/code\u003e\u003c/a\u003e [docs] Mention correct issue in changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/0c522bff1525e77ff75691ee7530c71fe63e2775\"\u003e\u003ccode\u003e0c522bf\u003c/code\u003e\u003c/a\u003e [fix] Fixes a bug that caused an internal pytest error when using ImportWarni...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/31c7e6f9acda156a7aabf23d18e88c23f5f897a4\"\u003e\u003ccode\u003e31c7e6f\u003c/code\u003e\u003c/a\u003e Build(deps): Bump coverage from 7.3.3 to 7.3.4 in /dependencies/default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/38d5c7eed0d5193752043631aabde287d0627127\"\u003e\u003ccode\u003e38d5c7e\u003c/code\u003e\u003c/a\u003e Build(deps): Bump sphinx-rtd-theme in /dependencies/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/650ec5875dcefc4eb4c1b2b0ba792aa643cd0823\"\u003e\u003ccode\u003e650ec58\u003c/code\u003e\u003c/a\u003e Build(deps): Bump babel from 2.13.1 to 2.14.0 in /dependencies/docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/0166a7e55fd5ac31afdaffd7dd54e77003f6cc30\"\u003e\u003ccode\u003e0166a7e\u003c/code\u003e\u003c/a\u003e Build(deps): Bump typing-extensions in /dependencies/default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/3a15f3039c2b0101b73af651e8b9c667b1a51434\"\u003e\u003ccode\u003e3a15f30\u003c/code\u003e\u003c/a\u003e Build(deps): Bump coverage from 7.3.2 to 7.3.3 in /dependencies/default\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/commit/28e91f00cd59d8aca364e6041f898cde8239b4e6\"\u003e\u003ccode\u003e28e91f0\u003c/code\u003e\u003c/a\u003e Build(deps): Bump hypothesis in /dependencies/default\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-asyncio/compare/v1.0.0...v0.23.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.2.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for...\n\n_Description has been truncated_","html_url":"https://github.com/PrefectHQ/prefect/pull/21486","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/PrefectHQ%2Fprefect/issues/21486","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/21486/packages"}},{"old_version":"1.5.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-04-08T14:40:51.000Z","version_change":"1.5.0 → 1.6.0","issue":{"uuid":"4225371183","node_id":"PR_kwDOG1Zs187Q1yDs","number":12540,"state":"open","title":"Chore(deps): Bump the utilities-minor group across 1 directory with 19 updates","user":"dependabot[bot]","labels":["non-trivial","backend","dependencies"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-08T14:40:51.000Z","updated_at":"2026-05-09T06:00:50.214Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Chore(deps): Bump","group_name":"utilities-minor","update_count":19,"packages":[{"name":"dateparser","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/scrapinghub/dateparser"},{"name":"drf-spectacular-sidecar","old_version":"2026.3.1","new_version":"2026.4.1","repository_url":"https://github.com/tfranzel/drf-spectacular-sidecar"},{"name":"llama-index-embeddings-huggingface","old_version":"0.6.1","new_version":"0.7.0"},{"name":"llama-index-embeddings-openai","old_version":"0.5.2","new_version":"0.6.0"},{"name":"llama-index-llms-ollama","old_version":"0.9.1","new_version":"0.10.1"},{"name":"llama-index-llms-openai","old_version":"0.6.26","new_version":"0.7.5"},{"name":"llama-index-vector-stores-faiss","old_version":"0.5.3","new_version":"0.6.0"},{"name":"openai","old_version":"2.26.0","new_version":"2.30.0","repository_url":"https://github.com/openai/openai-python"},{"name":"regex","old_version":"2026.2.28","new_version":"2026.3.32","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"sentence-transformers","old_version":"5.2.3","new_version":"5.3.0","repository_url":"https://github.com/huggingface/sentence-transformers"},{"name":"torch","old_version":"2.10.0","new_version":"2.11.0","repository_url":"https://github.com/pytorch/pytorch"},{"name":"faker","old_version":"40.8.0","new_version":"40.12.0","repository_url":"https://github.com/joke2k/faker"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"celery-types","old_version":"0.24.0","new_version":"0.26.0","repository_url":"https://github.com/sbdchd/celery-types"},{"name":"mypy","old_version":"1.19.1","new_version":"1.20.0","repository_url":"https://github.com/python/mypy"},{"name":"pyrefly","old_version":"0.55.0","new_version":"0.59.0","repository_url":"https://github.com/facebook/pyrefly"},{"name":"types-dateparser","old_version":"1.3.0.20260206","new_version":"1.4.0.20260328","repository_url":"https://github.com/python/typeshed"}],"path":null,"ecosystem":"pip"},"body":"Bumps the utilities-minor group with 18 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [dateparser](https://github.com/scrapinghub/dateparser) | `1.3.0` | `1.4.0` |\n| [drf-spectacular-sidecar](https://github.com/tfranzel/drf-spectacular-sidecar) | `2026.3.1` | `2026.4.1` |\n| llama-index-embeddings-huggingface | `0.6.1` | `0.7.0` |\n| llama-index-embeddings-openai | `0.5.2` | `0.6.0` |\n| llama-index-llms-ollama | `0.9.1` | `0.10.1` |\n| llama-index-llms-openai | `0.6.26` | `0.7.5` |\n| llama-index-vector-stores-faiss | `0.5.3` | `0.6.0` |\n| [openai](https://github.com/openai/openai-python) | `2.26.0` | `2.30.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2026.2.28` | `2026.3.32` |\n| [sentence-transformers](https://github.com/huggingface/sentence-transformers) | `5.2.3` | `5.3.0` |\n| [torch](https://github.com/pytorch/pytorch) | `2.10.0` | `2.11.0` |\n| [faker](https://github.com/joke2k/faker) | `40.8.0` | `40.12.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [celery-types](https://github.com/sbdchd/celery-types) | `0.24.0` | `0.26.0` |\n| [mypy](https://github.com/python/mypy) | `1.19.1` | `1.20.0` |\n| [pyrefly](https://github.com/facebook/pyrefly) | `0.55.0` | `0.59.0` |\n| [types-dateparser](https://github.com/python/typeshed) | `1.3.0.20260206` | `1.4.0.20260328` |\n\n\nUpdates `dateparser` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/scrapinghub/dateparser/releases\"\u003edateparser's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/blob/master/HISTORY.rst\"\u003edateparser's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2026-03-26)\u003c/h2\u003e\n\u003cp\u003eSecurity fixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemove import-time loading of timezone offset data from pickle to prevent\nunsafe deserialization from packaged data\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eeval()\u003c/code\u003e use when parsing \u003ccode\u003eno_word_spacing\u003c/code\u003e with strict boolean\nparsing to prevent code execution from locale metadata (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1056\"\u003e#1056\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eNew features:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for expressions like \u0026quot;N {interval} from now\u0026quot; in English (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1271\"\u003e#1271\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for the \u003ccode\u003een-US\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eHonor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying with a\nyear-biased \u003ccode\u003eDATE_ORDER\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1298\"\u003e#1298\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix parsing word-number relative phrases such as \u0026quot;two days later\u0026quot; (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAllow md5hash to work in FIPS environments (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1267\"\u003e#1267\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eImprovements:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Bosnian Cyrillic (ijekavica) date translations (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1293\"\u003e#1293\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a new browser-based demo to the project documentation (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1306\"\u003e#1306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate installation documentation to replace \u003ccode\u003esetup.py install\u003c/code\u003e guidance\n(\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a project security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\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/scrapinghub/dateparser/commit/60b8a75b1a7e84d875e491e6c730a844646ae91b\"\u003e\u003ccode\u003e60b8a75\u003c/code\u003e\u003c/a\u003e Bump version: 1.3.0 → 1.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/d405657bbefd10ec8c1cb3df71ce295ca473f910\"\u003e\u003ccode\u003ed405657\u003c/code\u003e\u003c/a\u003e 1.4.0 release notes and fixes (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1319\"\u003e#1319\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/7a3113e3b495dc95e6e238da696433e259f11827\"\u003e\u003ccode\u003e7a3113e\u003c/code\u003e\u003c/a\u003e Add the en-US locale (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/62710c066b2cb44e508d07532df069b78d52bbf0\"\u003e\u003ccode\u003e62710c0\u003c/code\u003e\u003c/a\u003e Add a security policy (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1318\"\u003e#1318\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/341d3080f377c058b35ab39353940ba0f9349724\"\u003e\u003ccode\u003e341d308\u003c/code\u003e\u003c/a\u003e Fix deployment\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/5add61cccf258788f9cca748dee3d5094ff65651\"\u003e\u003ccode\u003e5add61c\u003c/code\u003e\u003c/a\u003e Use official publish GitHub action in CI (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1309\"\u003e#1309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e22e62e336cc59b1ac38ea947c1b9b471d420846\"\u003e\u003ccode\u003ee22e62e\u003c/code\u003e\u003c/a\u003e Fix word-number phrases parsing (e.g., 'two days later') (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1316\"\u003e#1316\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/8cdcf800ff16a0745b4782359db0c8085961219d\"\u003e\u003ccode\u003e8cdcf80\u003c/code\u003e\u003c/a\u003e Make logo more translucent (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1312\"\u003e#1312\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/e0939ecdd7ca04a24ca9d9a325224fe7fef7921c\"\u003e\u003ccode\u003ee0939ec\u003c/code\u003e\u003c/a\u003e Replace 'setup.py install' (\u003ca href=\"https://redirect.github.com/scrapinghub/dateparser/issues/1310\"\u003e#1310\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/scrapinghub/dateparser/commit/cd5f226454e0ed3fe93164e7eff55b00f57e57c7\"\u003e\u003ccode\u003ecd5f226\u003c/code\u003e\u003c/a\u003e Honor \u003ccode\u003eREQUIRE_PARTS\u003c/code\u003e for ambiguous month-number inputs by retrying year-bias...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/scrapinghub/dateparser/compare/v1.3.0...v1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `drf-spectacular-sidecar` from 2026.3.1 to 2026.4.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/commit/b714a7ffda691c8a0b06c80e091ce1e5e4f92666\"\u003e\u003ccode\u003eb714a7f\u003c/code\u003e\u003c/a\u003e version bump 2026.4.1\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/tfranzel/drf-spectacular-sidecar/compare/2026.3.1...2026.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-embeddings-huggingface` from 0.6.1 to 0.7.0\n\nUpdates `llama-index-embeddings-openai` from 0.5.2 to 0.6.0\n\nUpdates `llama-index-llms-ollama` from 0.9.1 to 0.10.1\n\nUpdates `llama-index-llms-openai` from 0.6.26 to 0.7.5\n\nUpdates `llama-index-vector-stores-faiss` from 0.5.3 to 0.6.0\n\nUpdates `openai` from 2.26.0 to 2.30.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/openai/openai-python/releases\"\u003eopenai's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.30.0\u003c/h2\u003e\n\u003ch2\u003e2.30.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.29.0...v2.30.0\"\u003ev2.29.0...v2.30.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add keys field to Click/DoubleClick/Drag/Move/Scroll computer actions (\u003ca href=\"https://github.com/openai/openai-python/commit/ee1bbeddbb38dab817557412dc106354409bb950\"\u003eee1bbed\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e align SDK response types with expanded item schemas (\u003ca href=\"https://github.com/openai/openai-python/commit/f3f258a9d4d19db3fb0c6c35e25ad3cedbe71254\"\u003ef3f258a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esanitize endpoint path params (\u003ca href=\"https://github.com/openai/openai-python/commit/89f66988fde790c0c83ff8b876d1e1b10d616367\"\u003e89f6698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e make type required in ResponseInputMessageItem (\u003ca href=\"https://github.com/openai/openai-python/commit/cfdb1676ea0550840330a58f1a31a40a41a0a53f\"\u003ecfdb167\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e skip lint on metadata-only changes (\u003ca href=\"https://github.com/openai/openai-python/commit/faa93e19a1d5c30c7dd672a08dbbdbb3c0374714\"\u003efaa93e1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update gitignore (\u003ca href=\"https://github.com/openai/openai-python/commit/c468477f1546579618865a726e35a685cffeacd9\"\u003ec468477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.4 (\u003ca href=\"https://github.com/openai/openai-python/commit/f350af86c13ade0237778010d264c55fda443354\"\u003ef350af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.5 (\u003ca href=\"https://github.com/openai/openai-python/commit/5c0340128fc1a416e2dfdc6ab4b05f1e954e8482\"\u003e5c03401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.6 (\u003ca href=\"https://github.com/openai/openai-python/commit/b6353b8411d31dcc95875d801ce9e90a21e0fd52\"\u003eb6353b8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.7 (\u003ca href=\"https://github.com/openai/openai-python/commit/1d654bea74ac9c3d43302587f98f33cfff502e48\"\u003e1d654be\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e switch from prism to steady (\u003ca href=\"https://github.com/openai/openai-python/commit/4a82035669b739d16a0e85d4ded778d51e061948\"\u003e4a82035\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.29.0\u003c/h2\u003e\n\u003ch2\u003e2.29.0 (2026-03-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.28.0...v2.29.0\"\u003ev2.28.0...v2.29.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e 5.4 nano and mini model slugs (\u003ca href=\"https://github.com/openai/openai-python/commit/3b456661f77ca3196aceb5ab3350664a63481114\"\u003e3b45666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add /v1/videos endpoint to batches create method (\u003ca href=\"https://github.com/openai/openai-python/commit/c0e7a161a996854021e9eb69ea2a60ca0d08047f\"\u003ec0e7a16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add defer_loading field to ToolFunction (\u003ca href=\"https://github.com/openai/openai-python/commit/3167595432bdda2f90721901d30ad316db49323e\"\u003e3167595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add in and nin operators to ComparisonFilter type (\u003ca href=\"https://github.com/openai/openai-python/commit/664f02b051af84e1ca3fa313981ec72fdea269b3\"\u003e664f02b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e bump minimum typing-extensions version (\u003ca href=\"https://github.com/openai/openai-python/commit/a2fb2ca55142c6658a18be7bd1392a01f5a83f35\"\u003ea2fb2ca\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epydantic:\u003c/strong\u003e do not pass \u003ccode\u003eby_alias\u003c/code\u003e unless set (\u003ca href=\"https://github.com/openai/openai-python/commit/8ebe8fbcb011c6a005a715cae50c6400a8596ee0\"\u003e8ebe8fb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/openai/openai-python/blob/main/CHANGELOG.md\"\u003eopenai's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.30.0 (2026-03-25)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.29.0...v2.30.0\"\u003ev2.29.0...v2.30.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add keys field to Click/DoubleClick/Drag/Move/Scroll computer actions (\u003ca href=\"https://github.com/openai/openai-python/commit/ee1bbeddbb38dab817557412dc106354409bb950\"\u003eee1bbed\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e align SDK response types with expanded item schemas (\u003ca href=\"https://github.com/openai/openai-python/commit/f3f258a9d4d19db3fb0c6c35e25ad3cedbe71254\"\u003ef3f258a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esanitize endpoint path params (\u003ca href=\"https://github.com/openai/openai-python/commit/89f66988fde790c0c83ff8b876d1e1b10d616367\"\u003e89f6698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etypes:\u003c/strong\u003e make type required in ResponseInputMessageItem (\u003ca href=\"https://github.com/openai/openai-python/commit/cfdb1676ea0550840330a58f1a31a40a41a0a53f\"\u003ecfdb167\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eci:\u003c/strong\u003e skip lint on metadata-only changes (\u003ca href=\"https://github.com/openai/openai-python/commit/faa93e19a1d5c30c7dd672a08dbbdbb3c0374714\"\u003efaa93e1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003einternal:\u003c/strong\u003e update gitignore (\u003ca href=\"https://github.com/openai/openai-python/commit/c468477f1546579618865a726e35a685cffeacd9\"\u003ec468477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.4 (\u003ca href=\"https://github.com/openai/openai-python/commit/f350af86c13ade0237778010d264c55fda443354\"\u003ef350af8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.5 (\u003ca href=\"https://github.com/openai/openai-python/commit/5c0340128fc1a416e2dfdc6ab4b05f1e954e8482\"\u003e5c03401\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.6 (\u003ca href=\"https://github.com/openai/openai-python/commit/b6353b8411d31dcc95875d801ce9e90a21e0fd52\"\u003eb6353b8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e bump steady to v0.19.7 (\u003ca href=\"https://github.com/openai/openai-python/commit/1d654bea74ac9c3d43302587f98f33cfff502e48\"\u003e1d654be\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRefactors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003etests:\u003c/strong\u003e switch from prism to steady (\u003ca href=\"https://github.com/openai/openai-python/commit/4a82035669b739d16a0e85d4ded778d51e061948\"\u003e4a82035\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.29.0 (2026-03-17)\u003c/h2\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/openai/openai-python/compare/v2.28.0...v2.29.0\"\u003ev2.28.0...v2.29.0\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e 5.4 nano and mini model slugs (\u003ca href=\"https://github.com/openai/openai-python/commit/3b456661f77ca3196aceb5ab3350664a63481114\"\u003e3b45666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add /v1/videos endpoint to batches create method (\u003ca href=\"https://github.com/openai/openai-python/commit/c0e7a161a996854021e9eb69ea2a60ca0d08047f\"\u003ec0e7a16\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add defer_loading field to ToolFunction (\u003ca href=\"https://github.com/openai/openai-python/commit/3167595432bdda2f90721901d30ad316db49323e\"\u003e3167595\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eapi:\u003c/strong\u003e add in and nin operators to ComparisonFilter type (\u003ca href=\"https://github.com/openai/openai-python/commit/664f02b051af84e1ca3fa313981ec72fdea269b3\"\u003e664f02b\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e bump minimum typing-extensions version (\u003ca href=\"https://github.com/openai/openai-python/commit/a2fb2ca55142c6658a18be7bd1392a01f5a83f35\"\u003ea2fb2ca\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003epydantic:\u003c/strong\u003e do not pass \u003ccode\u003eby_alias\u003c/code\u003e unless set (\u003ca href=\"https://github.com/openai/openai-python/commit/8ebe8fbcb011c6a005a715cae50c6400a8596ee0\"\u003e8ebe8fb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChores\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/openai/openai-python/commit/5ae2cc10e4140d36aa236fa7c0bc5ce5ff190a01\"\u003e\u003ccode\u003e5ae2cc1\u003c/code\u003e\u003c/a\u003e release: 2.30.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/6e772ae791759b25de83313614e0fb26eba895b7\"\u003e\u003ccode\u003e6e772ae\u003c/code\u003e\u003c/a\u003e fix(api): align SDK response types with expanded item schemas\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/cd72fba37866bfdddd4a84420afe2ff397279582\"\u003e\u003ccode\u003ecd72fba\u003c/code\u003e\u003c/a\u003e feat(api): add keys field to Click/DoubleClick/Drag/Move/Scroll computer actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/4f43fe371037415ace13981a277917366b6fc24e\"\u003e\u003ccode\u003e4f43fe3\u003c/code\u003e\u003c/a\u003e chore(tests): bump steady to v0.19.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/23bc02703bbb9497eadd5d56497d5d6954372a62\"\u003e\u003ccode\u003e23bc027\u003c/code\u003e\u003c/a\u003e chore(ci): skip lint on metadata-only changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/e3c59bf1ac8533a1be831a6d166f9f7abeabf8e0\"\u003e\u003ccode\u003ee3c59bf\u003c/code\u003e\u003c/a\u003e chore(tests): bump steady to v0.19.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/56ad9ca089394e535d7df52fe48d544e54086ddc\"\u003e\u003ccode\u003e56ad9ca\u003c/code\u003e\u003c/a\u003e fix(types): make type required in ResponseInputMessageItem\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/78c764bdf483a0c48789bfdefe6299830d5abde0\"\u003e\u003ccode\u003e78c764b\u003c/code\u003e\u003c/a\u003e chore(internal): update gitignore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/634b74edd4aaa07a74f9ee30241410d61624264f\"\u003e\u003ccode\u003e634b74e\u003c/code\u003e\u003c/a\u003e chore(tests): bump steady to v0.19.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/openai/openai-python/commit/c8c9508899b2119cc69e006403d09cbad7f616e4\"\u003e\u003ccode\u003ec8c9508\u003c/code\u003e\u003c/a\u003e chore(tests): bump steady to v0.19.4\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/openai/openai-python/compare/v2.26.0...v2.30.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `regex` from 2026.2.28 to 2026.3.32\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mrabarnett/mrab-regex/blob/hg/changelog.txt\"\u003eregex's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eVersion: 2026.3.32\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed segfault.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.31\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug again.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.30\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed bug.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eFixed version.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.3.27\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eVarious fixes, including ones to improve free-threading support.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.28\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eReplaced atomic operations with mutex on pattern object for free-threaded Python.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.2.26\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003ePR [#598](https://github.com/mrabarnett/mrab-regex/issues/598): Fix race condition in storage caching with atomic operations.\n\u003cp\u003eReplaced use of PyUnicode_GET_LENGTH with PyUnicode_GetLength.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.2.19\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eAdded \\z as alias of \\Z, like in re module.\n\u003cp\u003eAdded prefixmatch as alias of match, like in re module.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2026.1.15\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eRe-uploaded.\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eVersion: 2026.1.14\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eGit issue 596: Specifying {e\u0026lt;=0} causes ca 210× slow-down.\n\u003cp\u003eAdded RISC-V wheels.\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003cp\u003eVersion: 2025.11.3\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eGit issue 594: Support relative PARNO in recursive subpatterns.\n\u003c/code\u003e\u003c/pre\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/5d51c75da03116e08bb6fb537fae6d8c804cc92c\"\u003e\u003ccode\u003e5d51c75\u003c/code\u003e\u003c/a\u003e Fixed segfault.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2aff2db5542ec5b58705be6ddb7b69a99d3e38a8\"\u003e\u003ccode\u003e2aff2db\u003c/code\u003e\u003c/a\u003e Fixed bug again.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/16af8aed2b3211e90588d2ac96f7c588ed477b2c\"\u003e\u003ccode\u003e16af8ae\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/2356563bbfd51b3986320a866c35a50b89833949\"\u003e\u003ccode\u003e2356563\u003c/code\u003e\u003c/a\u003e Fixed bug.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/f579e8ff60e2993a11cf4fd96748e4b7866c9fed\"\u003e\u003ccode\u003ef579e8f\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/55315a0497722898bed8286a596a64db698f498e\"\u003e\u003ccode\u003e55315a0\u003c/code\u003e\u003c/a\u003e Fixed version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrabarnett/mrab-regex/commit/923d78e39b8ff92db67606be3bfbc2e595b6475a\"\u003e\u003ccode\u003e923d78e\u003c/code\u003e\u003c/a\u003e Various fixes, including ones to improve free-threading support.\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mrabarnett/mrab-regex/compare/2026.2.28...2026.3.32\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sentence-transformers` from 5.2.3 to 5.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/huggingface/sentence-transformers/releases\"\u003esentence-transformers's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.3.0 - Improved Contrastive Learning, New Losses, and Transformers v5 Compatibility\u003c/h2\u003e\n\u003cp\u003eThis minor version brings several improvements to contrastive learning: \u003ccode\u003eMultipleNegativesRankingLoss\u003c/code\u003e now supports alternative InfoNCE formulations (symmetric, GTE-style) and optional hardness weighting for harder negatives. Two new losses are introduced, \u003ccode\u003eGlobalOrthogonalRegularizationLoss\u003c/code\u003e for embedding space regularization and \u003ccode\u003eCachedSpladeLoss\u003c/code\u003e for memory-efficient SPLADE training. The release also adds a faster hashed batch sampler, fixes \u003ccode\u003eGroupByLabelBatchSampler\u003c/code\u003e for triplet losses, and ensures full compatibility with the latest Transformers v5 versions.\u003c/p\u003e\n\u003cp\u003eInstall this version with\u003c/p\u003e\n\u003cpre lang=\"bash\"\u003e\u003ccode\u003e# Training + Inference\r\npip install sentence-transformers[train]==5.3.0\r\n\u003ch1\u003eInference only, use one of:\u003c/h1\u003e\n\u003cp\u003epip install sentence-transformers==5.3.0\npip install sentence-transformers[onnx-gpu]==5.3.0\npip install sentence-transformers[onnx]==5.3.0\npip install sentence-transformers[openvino]==5.3.0\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003ch2\u003eUpdated MultipleNegativesRankingLoss (a.k.a. InfoNCE)\u003c/h2\u003e\n\u003cp\u003e\u003ccode\u003eMultipleNegativesRankingLoss\u003c/code\u003e received two major upgrades: support for alternative InfoNCE formulations from the literature, and optional hardness weighting to up-weight harder negatives.\u003c/p\u003e\n\u003ch3\u003eSupport other InfoNCE variants (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3607\"\u003e#3607\u003c/a\u003e)\u003c/h3\u003e\n\u003cp\u003e\u003ccode\u003eMultipleNegativesRankingLoss\u003c/code\u003e now supports several well-known contrastive loss variants from the literature through new \u003ccode\u003edirections\u003c/code\u003e and \u003ccode\u003epartition_mode\u003c/code\u003e parameters. Previously, this loss only supported the standard forward direction (query → doc). You can now configure which similarity interactions are included in the loss:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e\u0026quot;query_to_doc\u0026quot;\u003c/code\u003e (default): For each query, its matched document should score higher than all other documents.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e\u0026quot;doc_to_query\u0026quot;\u003c/code\u003e: The symmetric reverse — for each document, its matched query should score higher than all other queries.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e\u0026quot;query_to_query\u0026quot;\u003c/code\u003e: For each query, all other queries should score lower than its matched document.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e\u0026quot;doc_to_doc\u0026quot;\u003c/code\u003e: For each document, all other documents should score lower than its matched query.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe \u003ccode\u003epartition_mode\u003c/code\u003e controls how scores are normalized: \u003ccode\u003e\u0026quot;joint\u0026quot;\u003c/code\u003e computes a single softmax over all directions, while \u003ccode\u003e\u0026quot;per_direction\u0026quot;\u003c/code\u003e computes a separate softmax per direction and averages the losses.\u003c/p\u003e\n\u003cp\u003eThese combine to reproduce several loss formulations from the literature:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eStandard InfoNCE\u003c/strong\u003e (default, unchanged behavior):\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eloss = MultipleNegativesRankingLoss(model)\r\n# equivalent to directions=(\u0026quot;query_to_doc\u0026quot;,), partition_mode=\u0026quot;joint\u0026quot;\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eSymmetric InfoNCE\u003c/strong\u003e (\u003ca href=\"https://arxiv.org/abs/2310.19923\"\u003eGünther et al. 2024\u003c/a\u003e) — adds the reverse direction so both queries and documents are trained to find their match:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eloss = MultipleNegativesRankingLoss(\r\n    model,\r\n    directions=(\u0026quot;query_to_doc\u0026quot;, \u0026quot;doc_to_query\u0026quot;),\r\n    partition_mode=\u0026quot;per_direction\u0026quot;,\r\n)\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cstrong\u003eGTE improved contrastive loss\u003c/strong\u003e (\u003ca href=\"https://arxiv.org/abs/2308.03281\"\u003eLi et al. 2023\u003c/a\u003e) — adds same-type negatives (query \u0026lt;-\u0026gt; query, doc \u0026lt;-\u0026gt; doc) for a stronger training signal, especially useful with pairs-only data:\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003eloss = MultipleNegativesRankingLoss(\r\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/ce48ecc77f8c7ed97c8fcc3cd99fde6071206680\"\u003e\u003ccode\u003ece48ecc\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into v5.3-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/cec08f89aabaa11a1675529fb7b11618c8255622\"\u003e\u003ccode\u003ecec08f8\u003c/code\u003e\u003c/a\u003e Fix citation for EmbeddingGemma paper (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3687\"\u003e#3687\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/c29b3a69f7eca78d613fc2e465989ee880216c8d\"\u003e\u003ccode\u003ec29b3a6\u003c/code\u003e\u003c/a\u003e Release v5.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/55c13de47ea9475b1416a34af36716cc477bd95f\"\u003e\u003ccode\u003e55c13de\u003c/code\u003e\u003c/a\u003e Prep docs main page for v5.3.0 (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3686\"\u003e#3686\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/72e75f7868700a768f6c57fb16e76b18df250f72\"\u003e\u003ccode\u003e72e75f7\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003etests\u003c/code\u003e] Add slow reproduction tests for most common models (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/237e44151758a9b4eb86b1ecd73152884073549a\"\u003e\u003ccode\u003e237e441\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003efix\u003c/code\u003e] Fix model card generation with set_transform with new column names (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/7f180b4b7146af66e2b043cdaa89bf87babe28bc\"\u003e\u003ccode\u003e7f180b4\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003efeat\u003c/code\u003e] Add hardness-weighted contrastive learning to losses (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3667\"\u003e#3667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/58900864d51cde2f918885587709b2466938422c\"\u003e\u003ccode\u003e5890086\u003c/code\u003e\u003c/a\u003e Disallow query_to_query/doc_to_doc with partition_mode=\u0026quot;per_direction\u0026quot; due to...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/6518c36671294b2125506f0d382d04102f739c91\"\u003e\u003ccode\u003e6518c36\u003c/code\u003e\u003c/a\u003e CE trainer: Removed IterableDataset from train and eval dataset type hints (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/huggingface/sentence-transformers/commit/1e0e84cbfb5483ffe1a5ff7db459c67a61487f3f\"\u003e\u003ccode\u003e1e0e84c\u003c/code\u003e\u003c/a\u003e Add tips for adjusting batch size to improve processing speed (\u003ca href=\"https://redirect.github.com/huggingface/sentence-transformers/issues/3672\"\u003e#3672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/huggingface/sentence-transformers/compare/v5.2.3...v5.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `torch` from 2.10.0 to 2.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytorch/pytorch/releases\"\u003etorch's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003ePyTorch 2.11.0 Release Notes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#highlights\"\u003eHighlights\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#backwards-incompatible-changes\"\u003eBackwards Incompatible Changes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#deprecations\"\u003eDeprecations\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#new-features\"\u003eNew Features\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#improvements\"\u003eImprovements\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#bug-fixes\"\u003eBug fixes\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#performance\"\u003ePerformance\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#documentation\"\u003eDocumentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#developers\"\u003eDevelopers\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/blob/HEAD/#security\"\u003eSecurity\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eHighlights\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003eFor more details about these highlighted features, you can look at the \u003ca href=\"https://pytorch.org/blog/pytorch-2-11-release-blog/\"\u003erelease blogpost\u003c/a\u003e. Below are the full release notes for this release.\u003c/p\u003e\n\u003ch1\u003eBackwards Incompatible Changes\u003c/h1\u003e\n\u003ch2\u003eRelease Engineering\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/pytorch/pytorch/commit/70d99e998b4955e0049d13a98d77ae1b14db1f45\"\u003e\u003ccode\u003e70d99e9\u003c/code\u003e\u003c/a\u003e [release only] Increase timeout for rocm libtorch and manywheel builds (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/178006\"\u003e#178006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/3e05c5a9ca8aacd0d137541876f8bf4cfca7e940\"\u003e\u003ccode\u003e3e05c5a\u003c/code\u003e\u003c/a\u003e [MPS] Properly handle conjugated tensors in bmm (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/178010\"\u003e#178010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/db741c72097871e384b22ee6fff1d6083adf23cc\"\u003e\u003ccode\u003edb741c7\u003c/code\u003e\u003c/a\u003e [MPS] fix compiling of SDPA producing nan results (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/178009\"\u003e#178009\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/483b55d84c74b92b3c2c67be4b9b7c7359ec2bbc\"\u003e\u003ccode\u003e483b55d\u003c/code\u003e\u003c/a\u003e Update pytorch_sphinx_theme2 version to 0.4.6 (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/177616\"\u003e#177616\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/7f2cdeb75b76bf07bb73776444bbb94456adbfa0\"\u003e\u003ccode\u003e7f2cdeb\u003c/code\u003e\u003c/a\u003e [windows][smoke test] Add an option to install cuda if required cuda/cudnn on...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/76fd07897dd9126df160e9723d97511b79888087\"\u003e\u003ccode\u003e76fd078\u003c/code\u003e\u003c/a\u003e [release-only] Fix libtorch builds. Fix lint (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/177299\"\u003e#177299\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/fa384de31efe6548e694758d47ff295f2c2edb57\"\u003e\u003ccode\u003efa384de\u003c/code\u003e\u003c/a\u003e [Inductor][MPS] Fix half-precision type mismatches in Metal shader codegen (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/036b25f5a29dc58cbc62e7b976efb860ff128c3f\"\u003e\u003ccode\u003e036b25f\u003c/code\u003e\u003c/a\u003e Let stable::from_blob accept a lambda as deleter (cherry-pick) (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/176440\"\u003e#176440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/41f8e3e0381395e1669ca4bc6e36a7872d25cdcd\"\u003e\u003ccode\u003e41f8e3e\u003c/code\u003e\u003c/a\u003e [CI] Stop using G3 runners (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/177161\"\u003e#177161\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytorch/pytorch/commit/e2fa2953033020ad7e0f823ec534044fac15a3c7\"\u003e\u003ccode\u003ee2fa295\u003c/code\u003e\u003c/a\u003e [CD] Unpin cuda-bindings dependencies (\u003ca href=\"https://redirect.github.com/pytorch/pytorch/issues/177159\"\u003e#177159\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytorch/pytorch/compare/v2.10.0...v2.11.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.8.0 to 40.12.0\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.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md\"\u003eCHANGELOG.md\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/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.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\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.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\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.10.0...v40.11.0\"\u003ev40.11.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider. Thanks \u003ca href=\"https://github.com/raphael-s\"\u003e\u003ccode\u003e@​raphael-s\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.9.0...v40.10.0\"\u003ev40.10.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/rodrigobnogueira\"\u003e\u003ccode\u003e@​rodrigobnogueira\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.8.1...v40.9.0\"\u003ev40.9.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider. Thanks \u003ca href=\"https://github.com/filipemattar\"\u003e\u003ccode\u003e@​filipemattar\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.8.0...v40.8.1\"\u003ev40.8.1 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mutable default providers. Thanks \u003ca href=\"https://github.com/Dhi13man\"\u003e\u003ccode\u003e@​Dhi13man\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/joke2k/faker/commit/fb98b618de62795b0b2300d7a6cf2d149d9044e0\"\u003e\u003ccode\u003efb98b61\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.1 → 40.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/00b920fd333450874c107f962052f521407c061c\"\u003e\u003ccode\u003e00b920f\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bd75873b6825855d6f3bbc2f4804b17fc6b1c1cc\"\u003e\u003ccode\u003ebd75873\u003c/code\u003e\u003c/a\u003e Restore parameters stripped out by the AI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f4bb94a922bcce17b61d9035eecb6260c66bf694\"\u003e\u003ccode\u003ef4bb94a\u003c/code\u003e\u003c/a\u003e exclude the \u003ccode\u003escripts\u003c/code\u003e directory from the MANIFEST.in file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ebfd067f7c6d113e8f23cf27a1dfcd043d41ed30\"\u003e\u003ccode\u003eebfd067\u003c/code\u003e\u003c/a\u003e Sort test cases alphabetically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5d09c06ef54394a81c517a301216cb27ab7e20b\"\u003e\u003ccode\u003ea5d09c0\u003c/code\u003e\u003c/a\u003e Add address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/db42f6477ea15d754889a9e030b3c3d29872d947\"\u003e\u003ccode\u003edb42f64\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.0 → 40.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5b9f98629cb842dfe352879aaf0628bc10a643d\"\u003e\u003ccode\u003ea5b9f98\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/01cb8d0f90fac0799f90e1295e8d4ab67c4fc070\"\u003e\u003ccode\u003e01cb8d0\u003c/code\u003e\u003c/a\u003e fix: rebind deepcopy proxies to copied Faker instances (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2340\"\u003e#2340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/53314fc7d3fba03fed38bb1053a395fdfb50e35f\"\u003e\u003ccode\u003e53314fc\u003c/code\u003e\u003c/a\u003e Bump version: 40.10.0 → 40.11.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.8.0...v40.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `celery-types` from 0.24.0 to 0.26.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sbdchd/celery-types/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy` from 1.19.1 to 1.20.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 1.20\u003c/h2\u003e\n\u003cp\u003eWe’ve just uploaded mypy 1.20.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\u003ePlanned Changes to Defaults and Flags in Mypy 2.0\u003c/h3\u003e\n\u003cp\u003eAs a reminder, we are planning to enable \u003ccode\u003e--local-partial-types\u003c/code\u003e by default in mypy 2.0, which\nwill likely be the next feature release. This will often require at least minor code changes. This\noption is implicitly enabled by mypy daemon, so this makes the behavior of daemon and non-daemon\nmodes consistent.\u003c/p\u003e\n\u003cp\u003eNote that this release improves the compatibility of \u003ccode\u003e--local-partial-types\u003c/code\u003e significantly to\nmake the switch easier (see below for more).\u003c/p\u003e\n\u003cp\u003eThis can also be configured in a mypy configuration file (use \u003ccode\u003eFalse\u003c/code\u003e to disable):\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003elocal_partial_types = True\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-local-partial-types\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWe will also enable \u003ccode\u003e--strict-bytes\u003c/code\u003e by default in mypy 2.0. This usually requires at most\nminor code changes to adopt. For more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-strict-bytes\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eFinally, \u003ccode\u003e--allow-redefinition-new\u003c/code\u003e will be renamed to \u003ccode\u003e--allow-redefinition\u003c/code\u003e. If you want\nto continue using the older \u003ccode\u003e--allow-redefinition\u003c/code\u003e semantics which are less flexible (e.g.\nlimited support for conditional redefinitions), you can switch to \u003ccode\u003e--allow-redefinition-old\u003c/code\u003e,\nwhich is currently supported as an alias to the legacy \u003ccode\u003e--allow-redefinition\u003c/code\u003e behavior.\nTo use \u003ccode\u003e--allow-redefinition\u003c/code\u003e in the upcoming mypy 2.0, you can't use \u003ccode\u003e--no-local-partial-types\u003c/code\u003e.\nFor more information, refer to the\n\u003ca href=\"https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-allow-redefinition-new\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eBetter Type Narrowing\u003c/h3\u003e\n\u003cp\u003eMypy's implementation of narrowing has been substantially reworked. Mypy will now narrow more\naggressively, more consistently, and more correctly. In particular, you are likely to notice new\nnarrowing behavior in equality expressions (\u003ccode\u003e==\u003c/code\u003e), containment expressions (\u003ccode\u003ein\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/python/mypy/commit/770d3ca4997032dc3a1c4f0b468e9f58e8f38505\"\u003e\u003ccode\u003e770d3ca\u003c/code\u003e\u003c/a\u003e Remove +dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/4738ffafc56a0d175cba06e893ffa62e756fc7e0\"\u003e\u003ccode\u003e4738ffa\u003c/code\u003e\u003c/a\u003e Changelog updates for 1.20 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21109\"\u003e#21109\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b4f07a717c3a239a9c77808c5550fff5f2638c96\"\u003e\u003ccode\u003eb4f07a7\u003c/code\u003e\u003c/a\u003e Use 'native-parser' instead of 'native-parse' for optional dependency (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21115\"\u003e#21115\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/7bec7b7f791790b1c925cdcc573ced564fbbf065\"\u003e\u003ccode\u003e7bec7b7\u003c/code\u003e\u003c/a\u003e [mypyc] Document librt and librt.base64 (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21114\"\u003e#21114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c4825969450385cf3eb91a4fc02f273b369bc301\"\u003e\u003ccode\u003ec482596\u003c/code\u003e\u003c/a\u003e --allow-redefinition-new is no longer experimental (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21110\"\u003e#21110\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/c916ca3fa79d9324dcbe130b18e24e2b5e2d1eb5\"\u003e\u003ccode\u003ec916ca3\u003c/code\u003e\u003c/a\u003e sdist: include \u003ccode\u003emisc/{diff-cache,apply-cache-diff}.py\u003c/code\u003e for `mypy/test/test_di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/b137e4ed41d6178f6dbd0e609db56b8c1ad5384a\"\u003e\u003ccode\u003eb137e4e\u003c/code\u003e\u003c/a\u003e [mypyc] Speed up native-to-native imports within the same group (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21101\"\u003e#21101\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/978b711c21adadf5dae4db80127ddf270d79af5f\"\u003e\u003ccode\u003e978b711\u003c/code\u003e\u003c/a\u003e [mypyc] Fix range loop variable off-by-one after loop exit (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/67ada30918d1a32e1935e9ac468113e0aa002b79\"\u003e\u003ccode\u003e67ada30\u003c/code\u003e\u003c/a\u003e [stubtest] Check runtime availability of private types not marked `@type_chec...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy/commit/bdef6ef8734af07cab1bf0acadc1d8ab9add93c3\"\u003e\u003ccode\u003ebdef6ef\u003c/code\u003e\u003c/a\u003e librt cache tests: build respecting MYPY_TEST_PREFIX (\u003ca href=\"https://redirect.github.com/python/mypy/issues/21097\"\u003e#21097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy/compare/v1.19.1...v1.20.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyrefly` from 0.55.0 to 0.59.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/facebook/pyrefly/releases\"\u003epyrefly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePyrefly v0.59.0\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eStatus : Beta\u003c/strong\u003e\u003cbr /\u003e\n\u003cem\u003e\u003cstrong\u003eRelease date:\u003c/strong\u003e March 30, 2026\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003ePyrefly v0.59.0 bundles \u003cstrong\u003e153 commits\u003c/strong\u003e from \u003cstrong\u003e20 contributors\u003c/strong\u003e.\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e✨ New \u0026amp; Improved\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth align=\"left\"\u003eArea\u003c/th\u003e\n\u003cth align=\"left\"\u003eWhat’s new\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003eType Checking\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- You can now use \u003ccode\u003ewhile...else\u003c/code\u003e statements with returns in the \u003ccode\u003eelse\u003c/code\u003e clause without triggering a false positive \u003ccode\u003emissing-explicit-return\u003c/code\u003e error.  \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Pyrefly now correctly handles type inference for nested empty dictionaries when constructing TypedDict instances, avoiding \u003ccode\u003eimplicit-any\u003c/code\u003e errors. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Error messages now highlight related code with inline labels; for example, an unsupported * operation will show the types of both operands directly in the source snippet\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003eLanguage Server\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- LSP hover information for classes now displays constructor signature and docstring. \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Support additional LSP functionality for notebooks, including find-references and rename.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"left\"\u003e\u003cstrong\u003ePerformance\u003c/strong\u003e\u003c/td\u003e\n\u003ctd align=\"left\"\u003e- Faster typechecking in large pythonc codebases, up to 2x faster on recent benchmarks on real world projects \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Reduced CPU usage through smarter caching of module resolution results \u003c!-- raw HTML omitted --\u003e\u003c!-- raw HTML omitted --\u003e- Improved performance of the LSP server by reducing redundant workspace diagnostic publishes.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003chr /\u003e\n\u003ch2\u003e🐛 bug fixes\u003c/h2\u003e\n\u003cp\u003eWe closed 16 bug issues this release 👏\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2026\"\u003e#2026\u003c/a\u003e: Fixed an issue where recursive bounded generics were incorrectly reported as \u003ccode\u003eobject\u003c/code\u003e, ensuring accurate type checking.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2812\"\u003e#2812\u003c/a\u003e: Resolved a false positive \u003ccode\u003einvalid-type-var\u003c/code\u003e error when persisting the \u003ccode\u003eget\u003c/code\u003e method of a fully-annotated \u003ccode\u003edict\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2804\"\u003e#2804\u003c/a\u003e: Fixed an \u003ccode\u003eimplicit-any\u003c/code\u003e false positive that occurred with TypedDict items, improving code readability.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2868\"\u003e#2868\u003c/a\u003e: Pyrefly now correctly recognizes \u003ccode\u003ewhile...else\u003c/code\u003e statements with returns in the \u003ccode\u003eelse\u003c/code\u003e clause as exhaustive.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2814\"\u003e#2814\u003c/a\u003e: Enhanced hover information for \u003ccode\u003edatetime.datetime\u003c/code\u003e imports to display constructor signatures and docstrings.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2896\"\u003e#2896\u003c/a\u003e: Fixed a \u003ccode\u003ebad-argument-type\u003c/code\u003e error that occurred when using double-underscore arguments.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2893\"\u003e#2893\u003c/a\u003e: Pyrefly now correctly handles dict Literal key types as subtypes of str key types.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2865\"\u003e#2865\u003c/a\u003e: Resolved an issue where tuple subclasses with overridden \u003ccode\u003e__getitem__\u003c/code\u003e were not recognized.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2871\"\u003e#2871\u003c/a\u003e: Fixed a false positive error when using \u003ccode\u003eisinstance\u003c/code\u003e with \u003ccode\u003etype | X\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eAnd more! \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2444\"\u003e#2444\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/1270\"\u003e#1270\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2900\"\u003e#2900\u003c/a\u003e,  \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2862\"\u003e#2862\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2853\"\u003e#2853\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThank-you to all our contributors who found these bugs and reported them! Did you know this is one of the most helpful contributions you can make to an open-source project? If you find any bugs in Pyrefly we want to know about them! Please open a bug report issue \u003ca href=\"https://github.com/facebook/pyrefly/issues\"\u003ehere\u003c/a\u003e\u003c/p\u003e\n\u003chr /\u003e\n\u003ch2\u003e📦 Upgrade\u003c/h2\u003e\n\u003cpre lang=\"shell\"\u003e\u003ccode\u003epip install --upgrade pyrefly==0.59.0\r\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch3\u003eHow to safely upgrade your codebase\u003c/h3\u003e\n\u003cp\u003eUpgrading the version of Pyrefly you're using or a third-party library you depend on can reveal new type errors in your code. Fixing them all at once is often unrealistic. We've written scripts to help you temporarily silence them. After upgrading, follow these steps:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\u003ccode\u003epyrefly check --suppress-errors\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003erun your code formatter of choice\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epyrefly check --remove-unused-ignores\u003c/code\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/f634064b2d32e19cc534348f4c373daba759e863\"\u003e\u003ccode\u003ef634064\u003c/code\u003e\u003c/a\u003e Update pyrefly version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/98d0c5051766e060e34448cfb8f4e3e432ce450e\"\u003e\u003ccode\u003e98d0c50\u003c/code\u003e\u003c/a\u003e Fix annotated legacy TypeVar/ParamSpec/TypeVarTuple not working as type annot...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/28fcfa726b76711bdbe02d9de167c48eb3a6c90a\"\u003e\u003ccode\u003e28fcfa7\u003c/code\u003e\u003c/a\u003e fix Upward Find for venv \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/759\"\u003e#759\u003c/a\u003e (\u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2791\"\u003e#2791\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/61598ef45e2818b1435610218b7559f7a03872b1\"\u003e\u003ccode\u003e61598ef\u003c/code\u003e\u003c/a\u003e Clamp LSP positions to line length per spec to fix completion after trailing dot\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/4e1e19bd7f664d0a621cb31df1458259f89a9ad5\"\u003e\u003ccode\u003e4e1e19b\u003c/code\u003e\u003c/a\u003e Reject Self return annotation when \u003ccode\u003eself\u003c/code\u003e param is some other Type Var\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/a0a6b6ea4965351b7b58afd2af6cce9c61471738\"\u003e\u003ccode\u003ea0a6b6e\u003c/code\u003e\u003c/a\u003e Add GitHub Action for automated release creation and Discord notification\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/2a362511d3882f8ac51d451900faead5c0bcc2a9\"\u003e\u003ccode\u003e2a36251\u003c/code\u003e\u003c/a\u003e Automate release notes process\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/b039f06ffee30ff6e524cdb284bb9c7a8adb82af\"\u003e\u003ccode\u003eb039f06\u003c/code\u003e\u003c/a\u003e Reclassify unresolved imports as Implicit Any instead of Explicit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/3d82c1cc1dc9eb0c88d7ae1f357ab596c84adcac\"\u003e\u003ccode\u003e3d82c1c\u003c/code\u003e\u003c/a\u003e Add failing test for annotated variable type erasure with Any (github \u003ca href=\"https://redirect.github.com/facebook/pyrefly/issues/2227\"\u003e#2227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebook/pyrefly/commit/47f51ae73d9638e58caeb3859294663b251e93ec\"\u003e\u003ccode\u003e47f51ae\u003c/code\u003e\u003c/a\u003e Track tensor fancy indexing in multi-axis subscripts\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/facebook/pyrefly/compare/0.55.0...0.59.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-channels` from 4.3.0.20250822 to 4.3.0.20260408\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-dateparser` from 1.3.0.20260206 to 1.4.0.20260328\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","html_url":"https://github.com/paperless-ngx/paperless-ngx/pull/12540","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/paperless-ngx%2Fpaperless-ngx/issues/12540","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/12540/packages"}},{"old_version":"1.2.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-04-06T08:53:32.000Z","version_change":"1.2.0 → 1.6.0","issue":{"uuid":"4210638429","node_id":"PR_kwDOGIc7h87QJ-2b","number":1116,"state":"open","title":"chore(deps-dev): bump pytest-env from 1.2.0 to 1.6.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-06T08:53:32.000Z","updated_at":"2026-05-25T00:55:43.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev)","packages":[{"name":"pytest-env","old_version":"1.2.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pytest-env](https://github.com/pytest-dev/pytest-env) from 1.2.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 build(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/192\"\u003epytest-dev/pytest-env#192\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.2.0...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n","html_url":"https://github.com/jenstroeger/python-package-template/pull/1116","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/jenstroeger%2Fpython-package-template/issues/1116","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/1116/packages"}},{"old_version":"1.2.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-04-02T00:23:09.000Z","version_change":"1.2.0 → 1.6.0","issue":{"uuid":"4190641159","node_id":"PR_kwDON6-Iwc7PaYvc","number":383,"state":"open","title":"chore(deps): bump the pip group across 1 directory with 13 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":4,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-04-02T00:23:09.000Z","updated_at":"2026-04-17T05:08:48.143Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"pip","update_count":13,"packages":[{"name":"fastapi","old_version":"0.128.0","new_version":"0.135.3","repository_url":"https://github.com/fastapi/fastapi"},{"name":"uvicorn","old_version":"0.40.0","new_version":"0.42.0","repository_url":"https://github.com/Kludex/uvicorn"},{"name":"sqlalchemy","old_version":"2.0.46","new_version":"2.0.48","repository_url":"https://github.com/sqlalchemy/sqlalchemy"},{"name":"pydantic-settings","old_version":"2.12.0","new_version":"2.13.1","repository_url":"https://github.com/pydantic/pydantic-settings"},{"name":"requests","old_version":"2.33.0","new_version":"2.33.1","repository_url":"https://github.com/psf/requests"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"alembic","old_version":"1.18.3","new_version":"1.18.4","repository_url":"https://github.com/sqlalchemy/alembic"},{"name":"boto3","old_version":"1.42.41","new_version":"1.42.81","repository_url":"https://github.com/boto/boto3"},{"name":"markdown","old_version":"3.10.1","new_version":"3.10.2","repository_url":"https://github.com/Python-Markdown/markdown"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"faker","old_version":"40.1.2","new_version":"40.12.0","repository_url":"https://github.com/joke2k/faker"},{"name":"pytest-env","old_version":"1.2.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"bump-my-version","old_version":"1.2.6","new_version":"1.3.0","repository_url":"https://github.com/callowayproject/bump-my-version"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 13 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.128.0` | `0.135.3` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.40.0` | `0.42.0` |\n| [sqlalchemy](https://github.com/sqlalchemy/sqlalchemy) | `2.0.46` | `2.0.48` |\n| [pydantic-settings](https://github.com/pydantic/pydantic-settings) | `2.12.0` | `2.13.1` |\n| [requests](https://github.com/psf/requests) | `2.33.0` | `2.33.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [alembic](https://github.com/sqlalchemy/alembic) | `1.18.3` | `1.18.4` |\n| [boto3](https://github.com/boto/boto3) | `1.42.41` | `1.42.81` |\n| [markdown](https://github.com/Python-Markdown/markdown) | `3.10.1` | `3.10.2` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [faker](https://github.com/joke2k/faker) | `40.1.2` | `40.12.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.2.0` | `1.6.0` |\n| [bump-my-version](https://github.com/callowayproject/bump-my-version) | `1.2.6` | `1.3.0` |\n\n\nUpdates `fastapi` from 0.128.0 to 0.135.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.135.3\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for \u003ccode\u003e@app.vibe()\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15280\"\u003e#15280\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/advanced/vibe/\"\u003eVibe Coding\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✏️ Fix typo for \u003ccode\u003eclient_secret\u003c/code\u003e in OAuth2 form docstrings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14946\"\u003e#14946\u003c/a\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15279\"\u003e#15279\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump orjson from 3.11.7 to 3.11.8. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15276\"\u003e#15276\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump ruff from 0.15.0 to 0.15.8. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15277\"\u003e#15277\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15274\"\u003e#15274\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump fastmcp from 2.14.5 to 3.2.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15267\"\u003e#15267\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15270\"\u003e#15270\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump requests from 2.32.5 to 2.33.0. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15228\"\u003e#15228\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👷 Add ty check to \u003ccode\u003elint.sh\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15136\"\u003e#15136\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.2\u003c/h2\u003e\n\u003ch3\u003eUpgrades\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆️ Increase lower bound to \u003ccode\u003epydantic \u0026gt;=2.9.0.\u003c/code\u003e and fix the test suite. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15139\"\u003e#15139\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Add missing last release notes dates. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15202\"\u003e#15202\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update docs for contributors and team members regarding translation PRs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15200\"\u003e#15200\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Fix code blocks in reference docs overflowing table width. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15094\"\u003e#15094\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix duplicated words in docstrings. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15116\"\u003e#15116\u003c/a\u003e by \u003ca href=\"https://github.com/AhsanSheraz\"\u003e\u003ccode\u003e@​AhsanSheraz\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add docs for \u003ccode\u003epyproject.toml\u003c/code\u003e with \u003ccode\u003eentrypoint\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15075\"\u003e#15075\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update links in docs to no longer use the classes external-link and internal-link. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15061\"\u003e#15061\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🔨 Add JS and CSS handling for automatic \u003ccode\u003etarget=_blank\u003c/code\u003e for links in docs. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15063\"\u003e#15063\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e💄 Update styles for internal and external links in new tab. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15058\"\u003e#15058\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝  Add documentation for the FastAPI VS Code extension. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15008\"\u003e#15008\u003c/a\u003e by \u003ca href=\"https://github.com/savannahostrowski\"\u003e\u003ccode\u003e@​savannahostrowski\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Fix doctrings for \u003ccode\u003emax_digits\u003c/code\u003e and \u003ccode\u003edecimal_places\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14944\"\u003e#14944\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add dates to release notes. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15001\"\u003e#15001\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eTranslations\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🌐 Update translations for zh (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15177\"\u003e#15177\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15178\"\u003e#15178\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh-hant (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15176\"\u003e#15176\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for zh (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15175\"\u003e#15175\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ja (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15171\"\u003e#15171\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15170\"\u003e#15170\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for tr (update-outdated). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15172\"\u003e#15172\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e🌐 Update translations for ko (add-missing). PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15168\"\u003e#15168\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/1f442c454f2f74c7419f83c203e6333955399528\"\u003e\u003ccode\u003e1f442c4\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.135.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8f5d1577b471f389f6cdea878d40a1497fda7746\"\u003e\u003ccode\u003e8f5d157\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/428452a710338334ae11043a48b06d52d9b3edba\"\u003e\u003ccode\u003e428452a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/70580da818722cce68b7a88928d67bd0f64f42c5\"\u003e\u003ccode\u003e70580da\u003c/code\u003e\u003c/a\u003e ✨ Add support for \u003ccode\u003e@app.vibe()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15280\"\u003e#15280\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6ee87478d821171139264cd9cd17cbd2232934ce\"\u003e\u003ccode\u003e6ee8747\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/3e72c09a2abfe9e1b55eede6a297cb1847126e49\"\u003e\u003ccode\u003e3e72c09\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15279\"\u003e#15279\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/96df35f7a4337d612811483d8ade74f91cce2d61\"\u003e\u003ccode\u003e96df35f\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/6c8112555bd86f21cfee8500140dca094ad26e20\"\u003e\u003ccode\u003e6c81125\u003c/code\u003e\u003c/a\u003e ⬆ Bump orjson from 3.11.7 to 3.11.8 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15276\"\u003e#15276\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/428f82c93616b52aee2fcee03484a855135c07e5\"\u003e\u003ccode\u003e428f82c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/5599c59b9e7112109f04b63a58034fb95833f514\"\u003e\u003ccode\u003e5599c59\u003c/code\u003e\u003c/a\u003e ⬆ Bump ruff from 0.15.0 to 0.15.8 (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15277\"\u003e#15277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.128.0...0.135.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `uvicorn` from 0.40.0 to 0.42.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/releases\"\u003euvicorn's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 0.42.0\u003c/h2\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eEscape brackets and backslash in httptools \u003ccode\u003eHEADER_RE\u003c/code\u003e regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix multiple issues in websockets sans-io implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2825\"\u003eKludex/uvicorn#2825\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.41.0...0.42.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.41.0...0.42.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003eVersion 0.41.0\u003c/h2\u003e\n\u003ch2\u003eAdded\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--limit-max-requests-jitter\u003c/code\u003e to stagger worker restarts (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd socket path to \u003ccode\u003escope[\u0026quot;server\u0026quot;]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2561\"\u003e#2561\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanged\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eLifespanOn.error_occured\u003c/code\u003e to \u003ccode\u003eerror_occurred\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2776\"\u003e#2776\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore permission denied errors in watchfiles reloader (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2817\"\u003e#2817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure lifespan shutdown runs when \u003ccode\u003eshould_exit\u003c/code\u003e is set during startup (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2812\"\u003e#2812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce the log level of 'request limit exceeded' messages (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2788\"\u003e#2788\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003ch2\u003eNew Contributors\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/t-kawasumi\"\u003e\u003ccode\u003e@​t-kawasumi\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2776\"\u003eKludex/uvicorn#2776\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fardyn\"\u003e\u003ccode\u003e@​fardyn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2800\"\u003eKludex/uvicorn#2800\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ewie\"\u003e\u003ccode\u003e@​ewie\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2807\"\u003eKludex/uvicorn#2807\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/shevron\"\u003e\u003ccode\u003e@​shevron\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2788\"\u003eKludex/uvicorn#2788\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jonashaag\"\u003e\u003ccode\u003e@​jonashaag\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Kludex/uvicorn/pull/2707\"\u003eKludex/uvicorn#2707\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.40.0...0.41.0\"\u003ehttps://github.com/Kludex/uvicorn/compare/0.40.0...0.41.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Kludex/uvicorn/blob/main/docs/release-notes.md\"\u003euvicorn's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.42.0 (March 16, 2026)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse \u003ccode\u003ebytearray\u003c/code\u003e for request body accumulation to avoid O(n^2) allocation on fragmented bodies (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEscape brackets and backslash in httptools \u003ccode\u003eHEADER_RE\u003c/code\u003e regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix multiple issues in websockets sans-io implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.41.0 (February 16, 2026)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003e--limit-max-requests-jitter\u003c/code\u003e to stagger worker restarts (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2707\"\u003e#2707\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd socket path to \u003ccode\u003escope[\u0026quot;server\u0026quot;]\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2561\"\u003e#2561\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRename \u003ccode\u003eLifespanOn.error_occured\u003c/code\u003e to \u003ccode\u003eerror_occurred\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2776\"\u003e#2776\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIgnore permission denied errors in watchfiles reloader (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2817\"\u003e#2817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eEnsure lifespan shutdown runs when \u003ccode\u003eshould_exit\u003c/code\u003e is set during startup (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2812\"\u003e#2812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce the log level of 'request limit exceeded' messages (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2788\"\u003e#2788\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/02bed6f8c38e74f684bb0e572977a9bfdc1f6fea\"\u003e\u003ccode\u003e02bed6f\u003c/code\u003e\u003c/a\u003e Version 0.42.0 (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2852\"\u003e#2852\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d8f25013161d8206e129e39bf48432d3a85e1744\"\u003e\u003ccode\u003ed8f2501\u003c/code\u003e\u003c/a\u003e chore: pre-create Config objects in benchmarks to measure protocol hot paths ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/9dbb7836bb0fdb446d083ecd8dc5a2a95bb96b98\"\u003e\u003ccode\u003e9dbb783\u003c/code\u003e\u003c/a\u003e Add WebSocket protocol benchmarks for wsproto and websockets-sansio (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2849\"\u003e#2849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/b3c69da8c1a36e1834e614abe38243671e156077\"\u003e\u003ccode\u003eb3c69da\u003c/code\u003e\u003c/a\u003e Use bytearray for request body accumulation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2845\"\u003e#2845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/3f3ebee20f46504a3f7279dd72f9c24ce9070b11\"\u003e\u003ccode\u003e3f3ebee\u003c/code\u003e\u003c/a\u003e Disable \u003ccode\u003epytest-xdist\u003c/code\u003e for CodSpeed benchmark runs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2847\"\u003e#2847\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/d072de754f825bee4710363dd49d41efd5285dcc\"\u003e\u003ccode\u003ed072de7\u003c/code\u003e\u003c/a\u003e Add fragmented body benchmark for chunked body accumulation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2846\"\u003e#2846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/e300c2c75d71bea6f8d1799ca6f182f1e5583aaa\"\u003e\u003ccode\u003ee300c2c\u003c/code\u003e\u003c/a\u003e Add CodSpeed benchmark suite for HTTP protocol hot paths (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2844\"\u003e#2844\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/1fa697651bacf10d72f74de104ead814ce6fcdc0\"\u003e\u003ccode\u003e1fa6976\u003c/code\u003e\u003c/a\u003e Escape brackets and backslash in httptools HEADER_RE regex (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2824\"\u003e#2824\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/59ec1de7a4f07afbd139812f033f3af8b784de74\"\u003e\u003ccode\u003e59ec1de\u003c/code\u003e\u003c/a\u003e Fix multiple issues in websockets sansio implementation (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2825\"\u003e#2825\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Kludex/uvicorn/commit/2fc0efcdd958abd3adbe6ea19682408d6b2e1b18\"\u003e\u003ccode\u003e2fc0efc\u003c/code\u003e\u003c/a\u003e Clarify Windows asyncio event loop selection in docs (\u003ca href=\"https://redirect.github.com/Kludex/uvicorn/issues/2843\"\u003e#2843\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Kludex/uvicorn/compare/0.40.0...0.42.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `sqlalchemy` from 2.0.46 to 2.0.48\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/releases\"\u003esqlalchemy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.0.48\u003c/h1\u003e\n\u003cp\u003eReleased: March 2, 2026\u003c/p\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [bug]\u003c/strong\u003e Fixed a critical issue in \u003ccode\u003eEngine\u003c/code\u003e where connections created in\nconjunction with the \u003ccode\u003eDialectEvents.do_connect()\u003c/code\u003e event listeners\nwould receive shared, mutable collections for the connection arguments,\nleading to a variety of potential issues including unlimited growth of the\nargument list as well as elements within the parameter dictionary being\nshared among concurrent connection calls.  In particular this could impact\ndo_connect routines making use of complex mutable authentication\nstructures.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13144\"\u003e#13144\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e2.0.47\u003c/h1\u003e\n\u003cp\u003eReleased: February 24, 2026\u003c/p\u003e\n\u003ch2\u003eorm\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[orm] [bug]\u003c/strong\u003e Fixed issue when using ORM mappings with Python 3.14's \u003ca href=\"https://peps.python.org/pep-0649\"\u003ePEP 649\u003c/a\u003e feature\nthat no longer requires \u0026quot;future annotations\u0026quot;, where the ORM's introspection\nof the \u003ccode\u003e__init__\u003c/code\u003e method of mapped classes would fail if non-present\nidentifiers in annotations were present.  The vendored \u003ccode\u003egetfullargspec()\u003c/code\u003e\nmethod has been amended to use \u003ccode\u003eFormat.FORWARDREF\u003c/code\u003e under Python 3.14 to\nprevent resolution of names that aren't present.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13104\"\u003e#13104\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eengine\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[engine] [usecase]\u003c/strong\u003e The connection object returned by \u003ccode\u003e_engine.Engine.raw_connection()\u003c/code\u003e\nnow supports the context manager protocol, automatically returning the\nconnection to the pool when exiting the context.\u003c/p\u003e\n\u003cp\u003eReferences: \u003ca href=\"https://www.sqlalchemy.org/trac/ticket/13116\"\u003e#13116\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003epostgresql\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e[postgresql] [bug]\u003c/strong\u003e Fixed an issue in the PostgreSQL dialect where foreign key constraint\nreflection would incorrectly swap or fail to capture \u003ccode\u003eonupdate\u003c/code\u003e and\n\u003ccode\u003eondelete\u003c/code\u003e values when these clauses appeared in a different order than\nexpected in the constraint definition. This issue primarily affected\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/sqlalchemy/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-settings` from 2.12.0 to 2.13.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-settings/releases\"\u003epydantic-settings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: Deterministic alias selection when using validate_by_name by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/707\"\u003epydantic/pydantic-settings#707\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd deep merge functionality to config file sources by \u003ca href=\"https://github.com/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/698\"\u003epydantic/pydantic-settings#698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for AWS Secrets Manager VersionId parameter by \u003ca href=\"https://github.com/jcyamacho\"\u003e\u003ccode\u003e@​jcyamacho\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/708\"\u003epydantic/pydantic-settings#708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebugfix: Return \u003ccode\u003eNone\u003c/code\u003e for inaccessible GCP Secret Manager secrets by \u003ca href=\"https://github.com/zaphod72\"\u003e\u003ccode\u003e@​zaphod72\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/712\"\u003epydantic/pydantic-settings#712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBugfix for cli_kebab_case=\u0026quot;all\u0026quot; and CliImplicitFlag[bool] by \u003ca href=\"https://github.com/Digity101\"\u003e\u003ccode\u003e@​Digity101\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/702\"\u003epydantic/pydantic-settings#702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpack type alisases when looking for \u003ccode\u003eNoDecode\u003c/code\u003e by \u003ca href=\"https://github.com/tselepakis\"\u003e\u003ccode\u003e@​tselepakis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/695\"\u003epydantic/pydantic-settings#695\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCliToggleFlag and CliDualFlag by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/717\"\u003epydantic/pydantic-settings#717\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix for CLI duplicate enum field values. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/722\"\u003epydantic/pydantic-settings#722\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efixed load nested config from env by \u003ca href=\"https://github.com/Sube-py\"\u003e\u003ccode\u003e@​Sube-py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/723\"\u003epydantic/pydantic-settings#723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-Path files support (for example Traversable) and open files using Path.open method by \u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/724\"\u003epydantic/pydantic-settings#724\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd one more traversable test by \u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/725\"\u003epydantic/pydantic-settings#725\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI fix fox external list args. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/727\"\u003epydantic/pydantic-settings#727\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: handle case-insensitive retrieval in GoogleSecretManagerSettingsSource by \u003ca href=\"https://github.com/ezwiefel\"\u003e\u003ccode\u003e@​ezwiefel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/730\"\u003epydantic/pydantic-settings#730\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI test fixes for help text formatting. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/735\"\u003epydantic/pydantic-settings#735\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAvoid conflicts with the \u003ccode\u003eNAME\u003c/code\u003e environment variable in WSL by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/747\"\u003epydantic/pydantic-settings#747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: When restoring init kwargs, use deterministic order by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/746\"\u003epydantic/pydantic-settings#746\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd env_prefix_target by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/749\"\u003epydantic/pydantic-settings#749\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u003ccode\u003e(default: …)\u003c/code\u003e in the help message for \u003ccode\u003eCliToggleFlag\u003c/code\u003e by \u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/740\"\u003epydantic/pydantic-settings#740\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for CLI serialize styles. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/755\"\u003epydantic/pydantic-settings#755\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for overriding default help on CLI internal parser. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/758\"\u003epydantic/pydantic-settings#758\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI format_help method support by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/759\"\u003epydantic/pydantic-settings#759\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat(gcp): support SecretVersion annotation for per-field secret versioning by \u003ca href=\"https://github.com/ezwiefel\"\u003e\u003ccode\u003e@​ezwiefel\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/763\"\u003epydantic/pydantic-settings#763\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003esnake_case_conversion\u003c/code\u003e with \u003ccode\u003eenv_prefix\u003c/code\u003e for Azure Key Vault source by \u003ca href=\"https://github.com/cstarkers\"\u003e\u003ccode\u003e@​cstarkers\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/762\"\u003epydantic/pydantic-settings#762\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: Only override preferred_key when no value was found by \u003ca href=\"https://github.com/chbndrhnns\"\u003e\u003ccode\u003e@​chbndrhnns\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/767\"\u003epydantic/pydantic-settings#767\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate deps by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/768\"\u003epydantic/pydantic-settings#768\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI coerce numeric types. by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/769\"\u003epydantic/pydantic-settings#769\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI Union Discriminator Choices in Help by \u003ca href=\"https://github.com/kschwab\"\u003e\u003ccode\u003e@​kschwab\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/764\"\u003epydantic/pydantic-settings#764\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd nested path support for yaml_config_section (fixes \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/772\"\u003e#772\u003c/a\u003e) by \u003ca href=\"https://github.com/hugo-romero-mm\"\u003e\u003ccode\u003e@​hugo-romero-mm\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/773\"\u003epydantic/pydantic-settings#773\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePrepare release 2.13.0 by \u003ca href=\"https://github.com/hramezani\"\u003e\u003ccode\u003e@​hramezani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/777\"\u003epydantic/pydantic-settings#777\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/pmeier\"\u003e\u003ccode\u003e@​pmeier\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/698\"\u003epydantic/pydantic-settings#698\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jcyamacho\"\u003e\u003ccode\u003e@​jcyamacho\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/708\"\u003epydantic/pydantic-settings#708\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zaphod72\"\u003e\u003ccode\u003e@​zaphod72\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/712\"\u003epydantic/pydantic-settings#712\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Digity101\"\u003e\u003ccode\u003e@​Digity101\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/702\"\u003epydantic/pydantic-settings#702\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sube-py\"\u003e\u003ccode\u003e@​Sube-py\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/723\"\u003epydantic/pydantic-settings#723\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mahenzon\"\u003e\u003ccode\u003e@​mahenzon\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/724\"\u003epydantic/pydantic-settings#724\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kzrnm\"\u003e\u003ccode\u003e@​kzrnm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/747\"\u003epydantic/pydantic-settings#747\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cstarkers\"\u003e\u003ccode\u003e@​cstarkers\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/762\"\u003epydantic/pydantic-settings#762\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hugo-romero-mm\"\u003e\u003ccode\u003e@​hugo-romero-mm\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/pull/773\"\u003epydantic/pydantic-settings#773\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.0\"\u003ehttps://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/e87d12df0f42f7f72a3eb6d830cfbfb1d68b4496\"\u003e\u003ccode\u003ee87d12d\u003c/code\u003e\u003c/a\u003e v2.13.1 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/790\"\u003e#790\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/acf8c14f5ec314799f5bd0d3f6a1591c4ed2ec97\"\u003e\u003ccode\u003eacf8c14\u003c/code\u003e\u003c/a\u003e Fix JSON decoding for parameterized PEP 695 type aliases (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/780\"\u003e#780\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/58b236a36473e01bfe42e5f75d39d46721e0593d\"\u003e\u003ccode\u003e58b236a\u003c/code\u003e\u003c/a\u003e Fix AttributeError with nested env vars for dict fields (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/785\"\u003e#785\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/786\"\u003e#786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/4933f06402ed55e32bcdcefd6c8f59ffe1fefd24\"\u003e\u003ccode\u003e4933f06\u003c/code\u003e\u003c/a\u003e Fix CLI parsing error for set field types since 2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/787\"\u003e#787\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/788\"\u003e#788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/bd0ebe6215cf215d716e33d833cc2589a1d00a17\"\u003e\u003ccode\u003ebd0ebe6\u003c/code\u003e\u003c/a\u003e Fix RecursionError with self-referential models in CliApp (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/783\"\u003e#783\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/eb7840e9f59a7969b23afdbcc4e5081e037736d8\"\u003e\u003ccode\u003eeb7840e\u003c/code\u003e\u003c/a\u003e Fix regression for bool fields since 2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/784\"\u003e#784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/198e71cf0cd570501535de7ae93a70953150f073\"\u003e\u003ccode\u003e198e71c\u003c/code\u003e\u003c/a\u003e Prepare release 2.13.0 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/777\"\u003e#777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/de71e84057b63b251ec84883b5e2ae886f82084f\"\u003e\u003ccode\u003ede71e84\u003c/code\u003e\u003c/a\u003e Add nested path support for yaml_config_section (fixes \u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/772\"\u003e#772\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/773\"\u003e#773\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/0f8f951b89b137bd563ce74dac016ba2c4cdc7a2\"\u003e\u003ccode\u003e0f8f951\u003c/code\u003e\u003c/a\u003e CLI Union Discriminator Choices in Help (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/764\"\u003e#764\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-settings/commit/ce9804c4620d38f0c3b3c1e3ebe10d934fd4ba2e\"\u003e\u003ccode\u003ece9804c\u003c/code\u003e\u003c/a\u003e CLI coerce numeric types. (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-settings/issues/769\"\u003e#769\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-settings/compare/v2.12.0...v2.13.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `requests` from 2.33.0 to 2.33.1\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.33.1\u003c/h2\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\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/ferdnyc\"\u003e\u003ccode\u003e@​ferdnyc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/psf/requests/pull/7277\"\u003epsf/requests#7277\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#2331-2026-03-30\"\u003ehttps://github.com/psf/requests/blob/main/HISTORY.md#2331-2026-03-30\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/requests/blob/main/HISTORY.md\"\u003erequests's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.33.1 (2026-03-30)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eBugfixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed test cleanup for CVE-2026-25645 to avoid leaving unnecessary\nfiles in the tmp directory. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed Content-Type header parsing for malformed values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved error consistency for malformed header values. (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\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/111d2b77790bf49943c0dfa09b365371c24aec7e\"\u003e\u003ccode\u003e111d2b7\u003c/code\u003e\u003c/a\u003e v2.33.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/f0198e6dfc431a2293dc16e1b1e8fcddc910a7f3\"\u003e\u003ccode\u003ef0198e6\u003c/code\u003e\u003c/a\u003e Fix malformed value parsing for Content-Type (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7309\"\u003e#7309\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/bc7dd0fc4d56e808bcdd85ac2d797b3107c89259\"\u003e\u003ccode\u003ebc7dd0f\u003c/code\u003e\u003c/a\u003e Fix cosmetic header validity parsing regex (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7308\"\u003e#7308\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/4443b1a847b190010c2972a658924b98b5db6360\"\u003e\u003ccode\u003e4443b1a\u003c/code\u003e\u003c/a\u003e Fix unintended test extra (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7306\"\u003e#7306\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/389eea58dfb2f2ee096421a812e3af29c0298951\"\u003e\u003ccode\u003e389eea5\u003c/code\u003e\u003c/a\u003e Cleanup extracted file after extract_zipped_path test (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7305\"\u003e#7305\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/requests/commit/7407309c8a8a73aa2f4337184025d440bbedab7a\"\u003e\u003ccode\u003e7407309\u003c/code\u003e\u003c/a\u003e Packaging: DRY out extras definition (\u003ca href=\"https://redirect.github.com/psf/requests/issues/7277\"\u003e#7277\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/psf/requests/compare/v2.33.0...v2.33.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `python-dotenv` from 1.2.1 to 1.2.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/releases\"\u003epython-dotenv's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.2\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (#)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/607\"\u003etheskumar/python-dotenv#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e#790c5\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by \u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eskip 000 permission tests for root user by \u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/checkout from 5 to 6 in the github-actions group by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/593\"\u003etheskumar/python-dotenv#593\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Windows testing to CI by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/604\"\u003etheskumar/python-dotenv#604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove workflow efficiency with best practices by \u003ca href=\"https://github.com/theskumar\"\u003e\u003ccode\u003e@​theskumar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/609\"\u003etheskumar/python-dotenv#609\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove the use of \u003ccode\u003esh\u003c/code\u003e in tests by \u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/612\"\u003etheskumar/python-dotenv#612\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/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/590\"\u003etheskumar/python-dotenv#590\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/burnout-projects\"\u003e\u003ccode\u003e@​burnout-projects\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/561\"\u003etheskumar/python-dotenv#561\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cpackham-atlnz\"\u003e\u003ccode\u003e@​cpackham-atlnz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/597\"\u003etheskumar/python-dotenv#597\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/theskumar/python-dotenv/blob/main/CHANGELOG.md\"\u003epython-dotenv's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[1.2.2] - 2026-03-01\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport for Python 3.14, including the free-threaded (3.14t) build. (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edotenv run\u003c/code\u003e command now forwards flags directly to the specified command by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/607\"\u003e#607\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImproved documentation clarity regarding override behavior and the reference page.\u003c/li\u003e\n\u003cli\u003eUpdated PyPy support to version 3.11.\u003c/li\u003e\n\u003cli\u003eDocumentation for FIFO file support.\u003c/li\u003e\n\u003cli\u003eDropped Support for Python 3.9.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImproved \u003ccode\u003eset_key\u003c/code\u003e and \u003ccode\u003eunset_key\u003c/code\u003e behavior when interacting with symlinks by [\u003ca href=\"https://github.com/bbc2\"\u003e\u003ccode\u003e@​bbc2\u003c/code\u003e\u003c/a\u003e] in [790c5c0]\u003c/li\u003e\n\u003cli\u003eCorrected the license specifier and added missing Python 3.14 classifiers in package metadata by [\u003ca href=\"https://github.com/JYOuyang\"\u003e\u003ccode\u003e@​JYOuyang\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/590\"\u003e#590\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBreaking Changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e and \u003ccode\u003edotenv.unset_key\u003c/code\u003e used to follow symlinks in some\nsituations. This is no longer the case. For that behavior to be restored in\nall cases, \u003ccode\u003efollow_symlinks=True\u003c/code\u003e should be used.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIn the CLI, \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e used to follow symlinks in some situations. This\nis no longer the case.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003edotenv.set_key\u003c/code\u003e, \u003ccode\u003edotenv.unset_key\u003c/code\u003e and the CLI commands \u003ccode\u003eset\u003c/code\u003e and \u003ccode\u003eunset\u003c/code\u003e\nused to reset the file mode of the modified .env file to \u003ccode\u003e0o600\u003c/code\u003e in some\nsituations. This is no longer the case: The original mode of the file is now\npreserved. Is the file needed to be created or wasn't a regular file, mode\n\u003ccode\u003e0o600\u003c/code\u003e is used.\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/theskumar/python-dotenv/commit/36004e0e34be7665ff2b11a8a4005144f76f176d\"\u003e\u003ccode\u003e36004e0\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.1 → 1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eb202520e5933c9daf42501e1e42fdb0144002c8\"\u003e\u003ccode\u003eeb20252\u003c/code\u003e\u003c/a\u003e docs: update changelog for v1.2.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311\"\u003e\u003ccode\u003e790c5c0\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/43340da220fb4ca4f95357bbe21a3c7f8f1278b1\"\u003e\u003ccode\u003e43340da\u003c/code\u003e\u003c/a\u003e Remove the use of \u003ccode\u003esh\u003c/code\u003e in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/612\"\u003e#612\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/09d7cee32459e7abdcb5c9d8122a552589c06a9c\"\u003e\u003ccode\u003e09d7cee\u003c/code\u003e\u003c/a\u003e docs: clarify override behavior and document FIFO support (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/610\"\u003e#610\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/c8de2887c00198c22842c5ae5e92d1747467363c\"\u003e\u003ccode\u003ec8de288\u003c/code\u003e\u003c/a\u003e ci: improve workflow efficiency with best practices (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/609\"\u003e#609\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/7bd9e3dbfedc0983ad7d56d5570013035242bdf4\"\u003e\u003ccode\u003e7bd9e3d\u003c/code\u003e\u003c/a\u003e Add Windows testing to CI (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/604\"\u003e#604\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1baaf04f336072e0ee324d5df9563ec767f14f81\"\u003e\u003ccode\u003e1baaf04\u003c/code\u003e\u003c/a\u003e Drop Python 3.9 support and update to PyPy 3.11 (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/608\"\u003e#608\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/4a22cf8993804aeede0c20b75bb1a29d3a99e9dc\"\u003e\u003ccode\u003e4a22cf8\u003c/code\u003e\u003c/a\u003e ci: enable testing on Python 3.14t (free-threaded) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/588\"\u003e#588\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/e2e8e776b42e382ae38b44d3982dd649e7507dd4\"\u003e\u003ccode\u003ee2e8e77\u003c/code\u003e\u003c/a\u003e Fix license specifier (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/597\"\u003e#597\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.2.1...v1.2.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `alembic` from 1.18.3 to 1.18.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/sqlalchemy/alembic/releases\"\u003ealembic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e1.18.4\u003c/h1\u003e\n\u003cp\u003eReleased: February 10, 2026\u003c/p\u003e\n\u003ch2\u003ebug\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003e[bug] [operations]\u003c/strong\u003e Reverted the behavior of \u003ccode\u003eOperations.add_column()\u003c/code\u003e that would\nautomatically render the \u0026quot;PRIMARY KEY\u0026quot; keyword inline when a\n\u003ccode\u003eColumn\u003c/code\u003e with \u003ccode\u003eprimary_key=True\u003c/code\u003e is added. The automatic\nbehavior, added in version 1.18.2, is now opt-in via the new\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter. This\nchange restores the ability to render a PostgreSQL SERIAL column, which is\nrequired to be \u003ccode\u003eprimary_key=True\u003c/code\u003e, while not impacting the ability to\nrender a separate primary key constraint. This also provides consistency\nwith the \u003ccode\u003eOperations.add_column.inline_references\u003c/code\u003e parameter and\ngives users explicit control over SQL generation.\u003c/p\u003e\n\u003cp\u003eTo render PRIMARY KEY inline, use the\n\u003ccode\u003eOperations.add_column.inline_primary_key\u003c/code\u003e parameter set to\n\u003ccode\u003eTrue\u003c/code\u003e:\u003c/p\u003e\n\u003cp\u003eop.add_column(\n\u0026quot;my_table\u0026quot;,\nColumn(\u0026quot;id\u0026quot;, Integer, primary_key=True),\ninline_primary_key=True\n)References: \u003ca href=\"https://redirect.github.com/sqlalchemy/alembic/issues/1232\"\u003e#1232\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sqlalchemy/alembic/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.42.41 to 1.42.81\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/a70b9fd264bc254bcf168c37e2371285b96239d9\"\u003e\u003ccode\u003ea70b9fd\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.81'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e65b71f091a7f343569690deae3d8ed2f43cce79\"\u003e\u003ccode\u003ee65b71f\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.81\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/087a4f3fb3604b9ae283ea0e1e5ceb191cb25fdb\"\u003e\u003ccode\u003e087a4f3\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0553641c190c026a98b0b4d281e349437a555c38\"\u003e\u003ccode\u003e0553641\u003c/code\u003e\u003c/a\u003e Add the GitHub CI script for pull request build (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4748\"\u003e#4748\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d66479d40f800c50151b5588ab8ca4ed5089f919\"\u003e\u003ccode\u003ed66479d\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.80'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/d4e6d42c7631652419daf8a1f3174869d294938c\"\u003e\u003ccode\u003ed4e6d42\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.80' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/e930bfca66b1e1dad26b6c0cf387da899e576f1f\"\u003e\u003ccode\u003ee930bfc\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.80\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/2596b719bb280b17481bb9d2e6eb0741177577df\"\u003e\u003ccode\u003e2596b71\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/617e6fb2eddc9ceeede55935e33fceed47a6ccb7\"\u003e\u003ccode\u003e617e6fb\u003c/code\u003e\u003c/a\u003e Bump github/codeql-action from 4.34.1 to 4.35.1 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9c5880d12fa855229dcb041f87c59586593535ad\"\u003e\u003ccode\u003e9c5880d\u003c/code\u003e\u003c/a\u003e Bump pygments from 2.18.0 to 2.20.0 (\u003ca href=\"https://redirect.github.com/boto/boto3/issues/4747\"\u003e#4747\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.42.41...1.42.81\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `markdown` from 3.10.1 to 3.10.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Python-Markdown/markdown/releases\"\u003emarkdown's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease 3.10.2\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\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/Python-Markdown/markdown/blob/master/docs/changelog.md\"\u003emarkdown's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[3.10.2] - 2026-02-09\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix a regression related to comment handling (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1590\"\u003e#1590\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003eMore reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/Python-Markdown/markdown/issues/1593\"\u003e#1593\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/e7a0efb3a7c36d6b8005403122705662bc17c904\"\u003e\u003ccode\u003ee7a0efb\u003c/code\u003e\u003c/a\u003e Bump version to 3.10.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/630183336bda57c258becc3ed229105481876a7e\"\u003e\u003ccode\u003e6301833\u003c/code\u003e\u003c/a\u003e Document HTML sanitation policy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/7f29f1a69d236f5bb11645c2fa03fcf701487c8c\"\u003e\u003ccode\u003e7f29f1a\u003c/code\u003e\u003c/a\u003e More reliable fix for \u003ccode\u003e\u0026lt;/\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Python-Markdown/markdown/commit/c4386475a6b6daea43b7d7717add4271adc9a3c1\"\u003e\u003ccode\u003ec438647\u003c/code\u003e\u003c/a\u003e Fix regression of special comments\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/Python-Markdown/markdown/compare/3.10.1...3.10.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.1.2 to 40.12.0\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.12.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.12.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.7.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.6.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.5.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.5.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.5.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.5.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.4.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.4.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.3.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.3.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.2.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.2.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.1.3\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.1.3/CHANGELOG.md\"\u003eCHANGELOG.md\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/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.11.1...v40.12.0\"\u003ev40.12.0 - 2026-03-30\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e). Thanks \u003ca href=\"https://github.com/othmane099\"\u003e\u003ccode\u003e@​othmane099\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.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\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.10.0...v40.11.0\"\u003ev40.11.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider. Thanks \u003ca href=\"https://github.com/raphael-s\"\u003e\u003ccode\u003e@​raphael-s\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.9.0...v40.10.0\"\u003ev40.10.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/rodrigobnogueira\"\u003e\u003ccode\u003e@​rodrigobnogueira\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.8.1...v40.9.0\"\u003ev40.9.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider. Thanks \u003ca href=\"https://github.com/filipemattar\"\u003e\u003ccode\u003e@​filipemattar\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.8.0...v40.8.1\"\u003ev40.8.1 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mutable default providers. Thanks \u003ca href=\"https://github.com/Dhi13man\"\u003e\u003ccode\u003e@​Dhi13man\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.7.0...v40.8.0\"\u003ev40.8.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd free email domains to \u003ccode\u003ehu_HU\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/majorzoltan80\"\u003e\u003ccode\u003e@​majorzoltan80\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.6.0...v40.7.0\"\u003ev40.7.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove Polish address grammar: categorize street types and prefixes. Thanks \u003ca href=\"https://github.com/Francooo2221\"\u003e\u003ccode\u003e@​Francooo2221\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.5.1...v40.6.0\"\u003ev40.6.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd country names to \u003ccode\u003ehe_IL\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/Moo64c\"\u003e\u003ccode\u003e@​Moo64c\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.5.0...v40.5.1\"\u003ev40.5.1 - 2026-02-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003e_get_local_timezone()\u003c/code\u003e missing \u003ccode\u003ereturn\u003c/code\u003e statement. Thanks \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\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.4.0...v40.5.0\"\u003ev40.5.0 - 2026-02-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd missing formats and remove duplicates in \u003ccode\u003euser_name_formats\u003c/code\u003e. Thanks \u003ca href=\"https://github.com/WannaFight\"\u003e\u003ccode\u003e@​WannaFight\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.3.0...v40.4.0\"\u003ev40.4.0 - 2026-02-06\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd passport and \u003ccode\u003ecie\u003c/code\u003e for \u003ccode\u003eit_IT\u003c/code\u003e. Thanks \u003ca href=\"https://github.com/ElektroDuck\"\u003e\u003ccode\u003e@​ElektroDuck\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.2.0...v40.3.0\"\u003ev40.3.0 - 2026-02-06\u003c/a\u003e\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/joke2k/faker/commit/fb98b618de62795b0b2300d7a6cf2d149d9044e0\"\u003e\u003ccode\u003efb98b61\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.1 → 40.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/00b920fd333450874c107f962052f521407c061c\"\u003e\u003ccode\u003e00b920f\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/bd75873b6825855d6f3bbc2f4804b17fc6b1c1cc\"\u003e\u003ccode\u003ebd75873\u003c/code\u003e\u003c/a\u003e Restore parameters stripped out by the AI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/f4bb94a922bcce17b61d9035eecb6260c66bf694\"\u003e\u003ccode\u003ef4bb94a\u003c/code\u003e\u003c/a\u003e exclude the \u003ccode\u003escripts\u003c/code\u003e directory from the MANIFEST.in file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ebfd067f7c6d113e8f23cf27a1dfcd043d41ed30\"\u003e\u003ccode\u003eebfd067\u003c/code\u003e\u003c/a\u003e Sort test cases alphabetically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5d09c06ef54394a81c517a301216cb27ab7e20b\"\u003e\u003ccode\u003ea5d09c0\u003c/code\u003e\u003c/a\u003e Add address providers for \u003ccode\u003ear_DZ\u003c/code\u003e and \u003ccode\u003efr_DZ\u003c/code\u003e locales (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2341\"\u003e#2341\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/db42f6477ea15d754889a9e030b3c3d29872d947\"\u003e\u003ccode\u003edb42f64\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.0 → 40.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5b9f98629cb842dfe352879aaf0628bc10a643d\"\u003e\u003ccode\u003ea5b9f98\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/01cb8d0f90fac0799f90e1295e8d4ab67c4fc070\"\u003e\u003ccode\u003e01cb8d0\u003c/code\u003e\u003c/a\u003e fix: rebind deepcopy proxies to copied Faker instances (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2340\"\u003e#2340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/53314fc7d3fba03fed38bb1053a395fdfb50e35f\"\u003e\u003ccode\u003e53314fc\u003c/code\u003e\u003c/a\u003e Bump version: 40.10.0 → 40.11.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.1.2...v40.12.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.2.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https:...\n\n_Description has been truncated_","html_url":"https://github.com/amazeeio/amazee.ai/pull/383","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/amazeeio%2Famazee.ai/issues/383","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/383/packages"}},{"old_version":"1.5.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-03-31T00:27:09.000Z","version_change":"1.5.0 → 1.6.0","issue":{"uuid":"4174843425","node_id":"PR_kwDOQFtGkc7Oyl9u","number":353,"state":"open","title":"build(deps-dev): bump the development group across 7 directories with 6 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-31T00:27:09.000Z","updated_at":"2026-03-31T00:38:18.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps-dev): bump","group_name":"development","update_count":6,"packages":[{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"plotly","old_version":"6.5.2","new_version":"6.6.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.7","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-confluent-kafka","old_version":"1.4.0","new_version":"1.4.1","repository_url":"https://github.com/benbenbang/types-confluent-kafka"},{"name":"matpowercaseframes","old_version":"2.0.1","new_version":"2.0.3","repository_url":"https://github.com/UGM-EPSLab/matpowercaseframes"}],"path":null,"ecosystem":"pip"},"body":"Bumps the development group with 4 updates in the / directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [ruff](https://github.com/astral-sh/ruff), [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka) and [mike](https://github.com/jimporter/mike).\nBumps the development group with 4 updates in the /packages/contingency_analysis_pkg directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [plotly](https://github.com/plotly/plotly.py), [ruff](https://github.com/astral-sh/ruff) and [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka).\nBumps the development group with 4 updates in the /packages/dc_solver_pkg directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [plotly](https://github.com/plotly/plotly.py), [ruff](https://github.com/astral-sh/ruff) and [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka).\nBumps the development group with 5 updates in the /packages/grid_helpers_pkg directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.5.2` | `6.6.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.4` | `0.15.7` |\n| [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka) | `1.4.0` | `1.4.1` |\n| [matpowercaseframes](https://github.com/UGM-EPSLab/matpowercaseframes) | `2.0.1` | `2.0.3` |\n\nBumps the development group with 3 updates in the /packages/importer_pkg directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [ruff](https://github.com/astral-sh/ruff) and [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka).\nBumps the development group with 4 updates in the /packages/interfaces_pkg directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [plotly](https://github.com/plotly/plotly.py), [ruff](https://github.com/astral-sh/ruff) and [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka).\nBumps the development group with 4 updates in the /packages/topology_optimizer_pkg directory: [pytest-env](https://github.com/pytest-dev/pytest-env), [plotly](https://github.com/plotly/plotly.py), [ruff](https://github.com/astral-sh/ruff) and [types-confluent-kafka](https://github.com/benbenbang/types-confluent-kafka).\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.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.4 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.7/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.15.7/ruff-installer.ps1 | iex\u0026quot;\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/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-confluent-kafka` from 1.4.0 to 1.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/releases\"\u003etypes-confluent-kafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eTypes Confluent Kafka 1.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003e1.4.1\u003c/a\u003e (2026-03-09)\u003c/h2\u003e\n\u003ch3\u003e:beetle: Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecorrect typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e) (\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e0465ade\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/benbenbang/types-confluent-kafka/commit/9f926e8cd545f9388f1339f891f9078f049f8298\"\u003e\u003ccode\u003e9f926e8\u003c/code\u003e\u003c/a\u003e release(versioning): update version to 1.4.1 (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/3e2e41c1f2d740ba56fa4cc2ceb1c3c6982186aa\"\u003e\u003ccode\u003e3e2e41c\u003c/code\u003e\u003c/a\u003e docs(readme): add deprecation notice for official type hints support (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e\u003ccode\u003e0465ade\u003c/code\u003e\u003c/a\u003e fix: correct typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mike` from 2.1.3 to 2.1.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/releases\"\u003emike's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.4\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse built-in \u003ccode\u003eimportlib\u003c/code\u003e in Python 3.10 and greater\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jimporter/mike/blob/master/CHANGES.md\"\u003emike's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.4 (2026-03-07)\u003c/h2\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse built-in \u003ccode\u003eimportlib\u003c/code\u003e in Python 3.10 and greater\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/fd2c5dc94acb3fce6b6acad643bae821ce59f323\"\u003e\u003ccode\u003efd2c5dc\u003c/code\u003e\u003c/a\u003e Update version to 2.1.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/6bad2056410c2d4e3fc58f96112d1b620db3b25b\"\u003e\u003ccode\u003e6bad205\u003c/code\u003e\u003c/a\u003e Update copyright year\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/9e5f8769f29b0b2fd638770590beba2876e0c42d\"\u003e\u003ccode\u003e9e5f876\u003c/code\u003e\u003c/a\u003e Remove deprecated license classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/80c47ab27eda456bbee0c883723a57b7a183e478\"\u003e\u003ccode\u003e80c47ab\u003c/code\u003e\u003c/a\u003e Be more consistent with newlines in CHANGES.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/11d4160eea7d356042524628533fbc9bb534d1d3\"\u003e\u003ccode\u003e11d4160\u003c/code\u003e\u003c/a\u003e Use built-in \u003ccode\u003eimportlib\u003c/code\u003e in Python 3.10 and greater\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/bdda184d22b9207288ca32a3650d19e033658ff7\"\u003e\u003ccode\u003ebdda184\u003c/code\u003e\u003c/a\u003e Improve selection of unit test suites on command line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/d8a9b491355a648cb9417e7256dde42743042882\"\u003e\u003ccode\u003ed8a9b49\u003c/code\u003e\u003c/a\u003e Add CI for Python 3.14 and remove  old workarounds\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/97deaed465a424646d163147941b358f9201e9d0\"\u003e\u003ccode\u003e97deaed\u003c/code\u003e\u003c/a\u003e Update copyright\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/64298e2a867d6db3a49a0d0c6126cea4e3946f7d\"\u003e\u003ccode\u003e64298e2\u003c/code\u003e\u003c/a\u003e Update Python version for linting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jimporter/mike/commit/e6f523a879c4ee80dad2ae38ead6f1ac3b967055\"\u003e\u003ccode\u003ee6f523a\u003c/code\u003e\u003c/a\u003e Test Python 3.12 and 3.13\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jimporter/mike/compare/v2.1.3...v2.1.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.5.2 to 6.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.6.0\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove unneeded \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e attribute from \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e tag [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5454\"\u003e#5454\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/hannob\"\u003e\u003ccode\u003e@​hannob\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eRemove global warning format side effect [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5481\"\u003e#5481\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix spurious engine deprecation warning in write_image [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5517\"\u003e#5517\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/mosh3eb\"\u003e\u003ccode\u003e@​mosh3eb\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.1 to version 3.4.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.4.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5527\"\u003e#5527\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for clicking legend titles to toggle visibility of all traces in legend [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7698\"\u003e#7698\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for shapes to reference multiple axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7666\"\u003e#7666\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for dashed marker lines in scatter plots [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7673\"\u003e#7673\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eIncrease axis autorange when bar charts have outside text labels, to avoid labels being clipped [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7675\"\u003e#7675\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.5.2...v6.6.0\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.5.2...v6.6.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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.6.0] - 2026-03-02\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove unneeded \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e attribute from \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e tag [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5454\"\u003e#5454\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/hannob\"\u003e\u003ccode\u003e@​hannob\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eRemove global warning format side effect [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5481\"\u003e#5481\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix spurious engine deprecation warning in write_image [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5517\"\u003e#5517\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/mosh3eb\"\u003e\u003ccode\u003e@​mosh3eb\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.1 to version 3.4.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.4.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5527\"\u003e#5527\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for clicking legend titles to toggle visibility of all traces in legend [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7698\"\u003e#7698\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for shapes to reference multiple axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7666\"\u003e#7666\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for dashed marker lines in scatter plots [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7673\"\u003e#7673\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eIncrease axis autorange when bar charts have outside text labels, to avoid labels being clipped [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7675\"\u003e#7675\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/plotly/plotly.py/commit/837d27ec070275f4a18c321defcb24c4ecf5b20f\"\u003e\u003ccode\u003e837d27e\u003c/code\u003e\u003c/a\u003e changes for v6.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/e0278b3dee031cd634806a49b65a7dd7bba61dfe\"\u003e\u003ccode\u003ee0278b3\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/bb783da8cfd54a06794642490a25e1dfc504bc4b\"\u003e\u003ccode\u003ebb783da\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5516\"\u003e#5516\u003c/a\u003e from plotly/new-charts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/5aabff0817817cce330260b7f0e759f7fab75f36\"\u003e\u003ccode\u003e5aabff0\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into new-charts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/03fd2ed4dedcf9135e87bf01fee206bc7cac9142\"\u003e\u003ccode\u003e03fd2ed\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5527\"\u003e#5527\u003c/a\u003e from plotly/update-plotlyjs-3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/aee4c33edf5554694cc9b7371e188bda02c90c24\"\u003e\u003ccode\u003eaee4c33\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/46a8aa297ca7158103fc9d4f43feee44fa3ef297\"\u003e\u003ccode\u003e46a8aa2\u003c/code\u003e\u003c/a\u003e update js artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/7dc360cd1f42e997ebef09d2eeb30a6029edc2fa\"\u003e\u003ccode\u003e7dc360c\u003c/code\u003e\u003c/a\u003e update package-lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/cf1b9ae1d9ee673ef849118647487b6fb7e80890\"\u003e\u003ccode\u003ecf1b9ae\u003c/code\u003e\u003c/a\u003e upgrade plotly.js to v3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a4832a87756bdf6994934d83160ccc0121f5fb1b\"\u003e\u003ccode\u003ea4832a8\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into new-charts\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.5.2...v6.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.4 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.7/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.15.7/ruff-installer.ps1 | iex\u0026quot;\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/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-confluent-kafka` from 1.4.0 to 1.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/releases\"\u003etypes-confluent-kafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eTypes Confluent Kafka 1.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003e1.4.1\u003c/a\u003e (2026-03-09)\u003c/h2\u003e\n\u003ch3\u003e:beetle: Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecorrect typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e) (\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e0465ade\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/benbenbang/types-confluent-kafka/commit/9f926e8cd545f9388f1339f891f9078f049f8298\"\u003e\u003ccode\u003e9f926e8\u003c/code\u003e\u003c/a\u003e release(versioning): update version to 1.4.1 (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/3e2e41c1f2d740ba56fa4cc2ceb1c3c6982186aa\"\u003e\u003ccode\u003e3e2e41c\u003c/code\u003e\u003c/a\u003e docs(readme): add deprecation notice for official type hints support (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e\u003ccode\u003e0465ade\u003c/code\u003e\u003c/a\u003e fix: correct typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.5.2 to 6.6.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.6.0\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove unneeded \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e attribute from \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e tag [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5454\"\u003e#5454\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/hannob\"\u003e\u003ccode\u003e@​hannob\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eRemove global warning format side effect [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5481\"\u003e#5481\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix spurious engine deprecation warning in write_image [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5517\"\u003e#5517\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/mosh3eb\"\u003e\u003ccode\u003e@​mosh3eb\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.1 to version 3.4.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.4.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5527\"\u003e#5527\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for clicking legend titles to toggle visibility of all traces in legend [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7698\"\u003e#7698\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for shapes to reference multiple axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7666\"\u003e#7666\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for dashed marker lines in scatter plots [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7673\"\u003e#7673\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eIncrease axis autorange when bar charts have outside text labels, to avoid labels being clipped [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7675\"\u003e#7675\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.5.2...v6.6.0\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.5.2...v6.6.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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.6.0] - 2026-03-02\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove unneeded \u003ccode\u003etype=\u0026quot;text/javascript\u0026quot;\u003c/code\u003e attribute from \u003ccode\u003e\u0026lt;style\u0026gt;\u003c/code\u003e tag [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5454\"\u003e#5454\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/hannob\"\u003e\u003ccode\u003e@​hannob\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eRemove global warning format side effect [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5481\"\u003e#5481\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/emmanuel-ferdman\"\u003e\u003ccode\u003e@​emmanuel-ferdman\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix spurious engine deprecation warning in write_image [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5517\"\u003e#5517\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/mosh3eb\"\u003e\u003ccode\u003e@​mosh3eb\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.3.1 to version 3.4.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.4.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5527\"\u003e#5527\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd support for clicking legend titles to toggle visibility of all traces in legend [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7698\"\u003e#7698\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for shapes to reference multiple axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7666\"\u003e#7666\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd support for dashed marker lines in scatter plots [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7673\"\u003e#7673\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eIncrease axis autorange when bar charts have outside text labels, to avoid labels being clipped [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7675\"\u003e#7675\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/plotly/plotly.py/commit/837d27ec070275f4a18c321defcb24c4ecf5b20f\"\u003e\u003ccode\u003e837d27e\u003c/code\u003e\u003c/a\u003e changes for v6.6.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/e0278b3dee031cd634806a49b65a7dd7bba61dfe\"\u003e\u003ccode\u003ee0278b3\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/bb783da8cfd54a06794642490a25e1dfc504bc4b\"\u003e\u003ccode\u003ebb783da\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5516\"\u003e#5516\u003c/a\u003e from plotly/new-charts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/5aabff0817817cce330260b7f0e759f7fab75f36\"\u003e\u003ccode\u003e5aabff0\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into new-charts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/03fd2ed4dedcf9135e87bf01fee206bc7cac9142\"\u003e\u003ccode\u003e03fd2ed\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5527\"\u003e#5527\u003c/a\u003e from plotly/update-plotlyjs-3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/aee4c33edf5554694cc9b7371e188bda02c90c24\"\u003e\u003ccode\u003eaee4c33\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/46a8aa297ca7158103fc9d4f43feee44fa3ef297\"\u003e\u003ccode\u003e46a8aa2\u003c/code\u003e\u003c/a\u003e update js artifacts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/7dc360cd1f42e997ebef09d2eeb30a6029edc2fa\"\u003e\u003ccode\u003e7dc360c\u003c/code\u003e\u003c/a\u003e update package-lock\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/cf1b9ae1d9ee673ef849118647487b6fb7e80890\"\u003e\u003ccode\u003ecf1b9ae\u003c/code\u003e\u003c/a\u003e upgrade plotly.js to v3.4.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a4832a87756bdf6994934d83160ccc0121f5fb1b\"\u003e\u003ccode\u003ea4832a8\u003c/code\u003e\u003c/a\u003e Merge branch 'main' into new-charts\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.5.2...v6.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.4 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.7/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.15.7/ruff-installer.ps1 | iex\u0026quot;\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/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `types-confluent-kafka` from 1.4.0 to 1.4.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/releases\"\u003etypes-confluent-kafka's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eTypes Confluent Kafka 1.4.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003e1.4.1\u003c/a\u003e (2026-03-09)\u003c/h2\u003e\n\u003ch3\u003e:beetle: Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ecorrect typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e) (\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e0465ade\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/benbenbang/types-confluent-kafka/commit/9f926e8cd545f9388f1339f891f9078f049f8298\"\u003e\u003ccode\u003e9f926e8\u003c/code\u003e\u003c/a\u003e release(versioning): update version to 1.4.1 (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/288\"\u003e#288\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/3e2e41c1f2d740ba56fa4cc2ceb1c3c6982186aa\"\u003e\u003ccode\u003e3e2e41c\u003c/code\u003e\u003c/a\u003e docs(readme): add deprecation notice for official type hints support (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/287\"\u003e#287\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/commit/0465ade4df4047c4ba3aa04aee3e72a137fd4fe3\"\u003e\u003ccode\u003e0465ade\u003c/code\u003e\u003c/a\u003e fix: correct typing in ConfigResource.Type (\u003ca href=\"https://redirect.github.com/benbenbang/types-confluent-kafka/issues/286\"\u003e#286\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/benbenbang/types-confluent-kafka/compare/1.4.0...1.4.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/...\n\n_Description has been truncated_","html_url":"https://github.com/eliagroup/ToOp/pull/353","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/eliagroup%2FToOp/issues/353","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/353/packages"}},{"old_version":"1.5.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-03-30T13:06:13.000Z","version_change":"1.5.0 → 1.6.0","issue":{"uuid":"4170598230","node_id":"PR_kwDOPQRi3M7OnYzH","number":14,"state":"closed","title":"chore(deps)(deps): bump the python-minor-patch group across 1 directory with 15 updates","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-06T12:26:10.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-30T13:06:13.000Z","updated_at":"2026-04-06T12:26:12.000Z","time_to_close":602397,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)(deps): bump","group_name":"python-minor-patch","update_count":15,"packages":[{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.42.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"black","old_version":"26.3.0","new_version":"26.3.1","repository_url":"https://github.com/psf/black"},{"name":"deptry","old_version":"0.24.0","new_version":"0.25.1","repository_url":"https://github.com/osprey-oss/deptry"},{"name":"faker","old_version":"40.8.0","new_version":"40.11.1","repository_url":"https://github.com/joke2k/faker"},{"name":"hypothesis","old_version":"6.151.9","new_version":"6.151.10","repository_url":"https://github.com/HypothesisWorks/hypothesis"},{"name":"mkdocs-literate-nav","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/oprypin/mkdocs-literate-nav"},{"name":"mkdocs-material","old_version":"9.7.5","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"},{"name":"mkdocs-redirects","old_version":"1.2.2","new_version":"1.2.3","repository_url":"https://github.com/ProperDocs/properdocs-redirects"},{"name":"mkdocs-section-index","old_version":"0.3.10","new_version":"0.3.11","repository_url":"https://github.com/oprypin/mkdocs-section-index"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.8","repository_url":"https://github.com/astral-sh/ruff"},{"name":"types-requests","old_version":"2.32.4.20260107","new_version":"2.33.0.20260327","repository_url":"https://github.com/python/typeshed"},{"name":"vulture","old_version":"2.15","new_version":"2.16","repository_url":"https://github.com/jendrikseipp/vulture"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-minor-patch group with 14 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.41.5` | `2.42.0` |\n| [black](https://github.com/psf/black) | `26.3.0` | `26.3.1` |\n| [deptry](https://github.com/osprey-oss/deptry) | `0.24.0` | `0.25.1` |\n| [faker](https://github.com/joke2k/faker) | `40.8.0` | `40.11.1` |\n| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.9` | `6.151.10` |\n| [mkdocs-literate-nav](https://github.com/oprypin/mkdocs-literate-nav) | `0.6.2` | `0.6.3` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.5` | `9.7.6` |\n| [mkdocs-redirects](https://github.com/ProperDocs/properdocs-redirects) | `1.2.2` | `1.2.3` |\n| [mkdocs-section-index](https://github.com/oprypin/mkdocs-section-index) | `0.3.10` | `0.3.11` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.8` |\n| [types-requests](https://github.com/python/typeshed) | `2.32.4.20260107` | `2.33.0.20260327` |\n| [vulture](https://github.com/jendrikseipp/vulture) | `2.15` | `2.16` |\n\n\nUpdates `pydantic-core` from 2.41.5 to 2.42.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic-core/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic` from 2.12.5 to 2.13.0b2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/releases\"\u003epydantic's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.0b2 2026-02-24\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix backported V1 namespace by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12855\"\u003e#12855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow any type form to be used in \u003ccode\u003evalidate_as()\u003c/code\u003e by \u003ca href=\"https://github.com/bledden\"\u003e\u003ccode\u003e@​bledden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12846\"\u003e#12846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix walrus operator precedence in \u003ccode\u003eUrlConstraints.__get_pydantic_core_schema__()\u003c/code\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12826\"\u003e#12826\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/bledden\"\u003e\u003ccode\u003e@​bledden\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12846\"\u003e#12846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12827\"\u003e#12827\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0b1 2025-02-23\u003c/h2\u003e\n\u003cp\u003eThis is the first beta release of the 2.13 version, mainly providing bug fixes and performance improvements\nfor validation and serialization.\u003c/p\u003e\n\u003cp\u003eNotable changes include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a new \u003ccode\u003epolymorphic_serialization\u003c/code\u003e option, solving issues with \u003ccode\u003eserialize_as_any\u003c/code\u003e introduced in 2.12.\u003c/li\u003e\n\u003cli\u003eLatest V1.10.26 release under the \u003ccode\u003epydantic.v1\u003c/code\u003e namespace. This version includes support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eThe \u003ca href=\"https://github.com/pydantic/pydantic-core/\"\u003e\u003ccode\u003epydantic-core\u003c/code\u003e\u003c/a\u003e repository was merged inside the main \u003ccode\u003epydantic\u003c/code\u003e one.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBump Rust url dependency from 2.5.4 to 2.5.7 in \u003ccode\u003epydantic-core\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12508\"\u003e#12508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump Rust minimum version to 1.88, use edition 2024 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12551\"\u003e#12551\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12752\"\u003e#12752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump PyO3 to 0.28, jiter to 0.13 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12767\"\u003e#12767\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epolymorphic_serialization\u003c/code\u003e option by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12518\"\u003e#12518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Root models with \u003ccode\u003eLiteral\u003c/code\u003e root types as discriminator field types by \u003ca href=\"https://github.com/YassinNouh21\"\u003e\u003ccode\u003e@​YassinNouh21\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12680\"\u003e#12680\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanges\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate \u003ccode\u003epydantic-core\u003c/code\u003e CI by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12752\"\u003e#12752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImport \u003ccode\u003epydantic-core\u003c/code\u003e into pydantic by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12481\"\u003e#12481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 changes up to v1.10.26 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12663\"\u003e#12663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the \u003ccode\u003ecomplex()\u003c/code\u003e constructor unconditionally when validating \u003ccode\u003ecomplex\u003c/code\u003e Python data by \u003ca href=\"https://github.com/tanmaymunjal\"\u003e\u003ccode\u003e@​tanmaymunjal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12498\"\u003e#12498\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for three-tuple input for \u003ccode\u003eDecimal\u003c/code\u003e by \u003ca href=\"https://github.com/tanmaymunjal\"\u003e\u003ccode\u003e@​tanmaymunjal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12500\"\u003e#12500\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAlign \u003ccode\u003e@field_serializer\u003c/code\u003e logic with \u003ccode\u003e@field_validator\u003c/code\u003e by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12577\"\u003e#12577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake \u003ccode\u003ePydanticUserError\u003c/code\u003e a \u003ccode\u003eRuntimeError\u003c/code\u003e instead of a \u003ccode\u003eTypeError\u003c/code\u003e by \u003ca href=\"https://github.com/poliakovva\"\u003e\u003ccode\u003e@​poliakovva\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12579\"\u003e#12579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant serialization attempts in nested unions by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12604\"\u003e#12604\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCopy \u003ccode\u003eroot\u003c/code\u003e value when making root model shallow copies by \u003ca href=\"https://github.com/YassinNouh21\"\u003e\u003ccode\u003e@​YassinNouh21\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12679\"\u003e#12679\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnsure deterministic JSON schema defaults by sorting sets by \u003ca href=\"https://github.com/drshvik\"\u003e\u003ccode\u003e@​drshvik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12760\"\u003e#12760\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic/blob/main/HISTORY.md\"\u003epydantic's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.13.0b2 (2026-02-24)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0b2\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003eFixes\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eFix backported V1 namespace by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12855\"\u003e#12855\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow any type form to be used in \u003ccode\u003evalidate_as()\u003c/code\u003e by \u003ca href=\"https://github.com/bledden\"\u003e\u003ccode\u003e@​bledden\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12846\"\u003e#12846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix walrus operator precedence in \u003ccode\u003eUrlConstraints.__get_pydantic_core_schema__()\u003c/code\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12826\"\u003e#12826\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eNew Contributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bledden\"\u003e\u003ccode\u003e@​bledden\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12846\"\u003e#12846\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12827\"\u003e#12827\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev2.13.0b1 (2026-02-23)\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/pydantic/pydantic/releases/tag/v2.13.0b1\"\u003eGitHub release\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eThis is the first beta release of the 2.13 version, mainly providing bug fixes and performance improvements\nfor validation and serialization.\u003c/p\u003e\n\u003cp\u003eNotable changes include:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a new \u003ccode\u003epolymorphic_serialization\u003c/code\u003e option, solving issues with \u003ccode\u003eserialize_as_any\u003c/code\u003e introduced in 2.12.\u003c/li\u003e\n\u003cli\u003eLatest V1.10.26 release under the \u003ccode\u003epydantic.v1\u003c/code\u003e namespace. This version includes support for Python 3.14.\u003c/li\u003e\n\u003cli\u003eThe \u003ca href=\"https://github.com/pydantic/pydantic-core/\"\u003e\u003ccode\u003epydantic-core\u003c/code\u003e\u003c/a\u003e repository was merged inside the main \u003ccode\u003epydantic\u003c/code\u003e one.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eWhat's Changed\u003c/h3\u003e\n\u003ch4\u003ePackaging\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eBump Rust url dependency from 2.5.4 to 2.5.7 in \u003ccode\u003epydantic-core\u003c/code\u003e by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12508\"\u003e#12508\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump Rust minimum version to 1.88, use edition 2024 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12551\"\u003e#12551\u003c/a\u003e and \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12752\"\u003e#12752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump PyO3 to 0.28, jiter to 0.13 by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12767\"\u003e#12767\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eNew Features\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003epolymorphic_serialization\u003c/code\u003e option by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12518\"\u003e#12518\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSupport Root models with \u003ccode\u003eLiteral\u003c/code\u003e root types as discriminator field types by \u003ca href=\"https://github.com/YassinNouh21\"\u003e\u003ccode\u003e@​YassinNouh21\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12680\"\u003e#12680\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eChanges\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eMigrate \u003ccode\u003epydantic-core\u003c/code\u003e CI by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12752\"\u003e#12752\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImport \u003ccode\u003epydantic-core\u003c/code\u003e into pydantic by \u003ca href=\"https://github.com/davidhewitt\"\u003e\u003ccode\u003e@​davidhewitt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12481\"\u003e#12481\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBackport V1 changes up to v1.10.26 by \u003ca href=\"https://github.com/Viicos\"\u003e\u003ccode\u003e@​Viicos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12663\"\u003e#12663\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse the \u003ccode\u003ecomplex()\u003c/code\u003e constructor unconditionally when validating \u003ccode\u003ecomplex\u003c/code\u003e Python data by \u003ca href=\"https://github.com/tanmaymunjal\"\u003e\u003ccode\u003e@​tanmaymunjal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12498\"\u003e#12498\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for three-tuple input for \u003ccode\u003eDecimal\u003c/code\u003e by \u003ca href=\"https://github.com/tanmaymunjal\"\u003e\u003ccode\u003e@​tanmaymunjal\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic/pull/12500\"\u003e#12500\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/4cd172ca710a2617280563292f55b1a18f743b26\"\u003e\u003ccode\u003e4cd172c\u003c/code\u003e\u003c/a\u003e Prepare release v2.13.0b2 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12857\"\u003e#12857\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e65a3562ee1702d7e6c9bccc5e6b1786d0e2862f\"\u003e\u003ccode\u003ee65a356\u003c/code\u003e\u003c/a\u003e Split release jobs, only publish pydantic-core if necessary (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12856\"\u003e#12856\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f41d300d484a043d3a26d1d95383cd490bd9fde0\"\u003e\u003ccode\u003ef41d300\u003c/code\u003e\u003c/a\u003e Fix backported V1 namespace (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12855\"\u003e#12855\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/56b6c0e788c5f7f9156e1812132e1ca92243d17b\"\u003e\u003ccode\u003e56b6c0e\u003c/code\u003e\u003c/a\u003e Fix grammar in contributing docs (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12849\"\u003e#12849\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/aa4d8b3fbc5f449ce1c05ebec36b1d4b3b736b69\"\u003e\u003ccode\u003eaa4d8b3\u003c/code\u003e\u003c/a\u003e Improve documented differences between Pydantic models and dataclasses (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12786\"\u003e#12786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/c763adeba844eb45c7bbad30adf631559dfddc0b\"\u003e\u003ccode\u003ec763ade\u003c/code\u003e\u003c/a\u003e Fix walrus operator precedence in `UrlConstraints._\u003cem\u003eget_pydantic_core_schema\u003c/em\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/fce3d034312b47a16b45b51d229e5107ca6b3bbc\"\u003e\u003ccode\u003efce3d03\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003e__hash__\u003c/code\u003e in \u003ccode\u003eUuidVersion\u003c/code\u003e and \u003ccode\u003ePathType\u003c/code\u003e to hash values instead of type...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/e943b41ed1700fdbe8b8804c0355c605805e73ae\"\u003e\u003ccode\u003ee943b41\u003c/code\u003e\u003c/a\u003e Allow any type form to be used in \u003ccode\u003evalidate_as()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12846\"\u003e#12846\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/f29bd714a4cb863d6da5101daa01250278405ee2\"\u003e\u003ccode\u003ef29bd71\u003c/code\u003e\u003c/a\u003e Fix CI release job (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12851\"\u003e#12851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic/commit/11ec1ee331f06c24cd2912a653d40e42787dadb7\"\u003e\u003ccode\u003e11ec1ee\u003c/code\u003e\u003c/a\u003e Fix CI release job (\u003ca href=\"https://redirect.github.com/pydantic/pydantic/issues/12850\"\u003e#12850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic/compare/v2.12.5...v2.13.0b2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 26.3.0 to 26.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\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/black/commit/c6755bb741b6481d6b3d3bb563c83fa060db96c9\"\u003e\u003ccode\u003ec6755bb\u003c/code\u003e\u003c/a\u003e Prepare release 26.3.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5046\"\u003e#5046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69973fd6950985fbeb1090d96da717dc4d8380b0\"\u003e\u003ccode\u003e69973fd\u003c/code\u003e\u003c/a\u003e Harden blackd browser-facing request handling (\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4937fe6cf241139ddbfc16b0bdbb5b422798909d\"\u003e\u003ccode\u003e4937fe6\u003c/code\u003e\u003c/a\u003e Fix some shenanigans with the cache file and IPython (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2e641d174469c505d5ae905e75d4c769597e681f\"\u003e\u003ccode\u003e2e641d1\u003c/code\u003e\u003c/a\u003e docs: remove outdated Black Playground references (\u003ca href=\"https://redirect.github.com/psf/black/issues/5044\"\u003e#5044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c014b22a2d5e0632587b47b81151658bddfa0b88\"\u003e\u003ccode\u003ec014b22\u003c/code\u003e\u003c/a\u003e Remove unused internal code (\u003ca href=\"https://redirect.github.com/psf/black/issues/5041\"\u003e#5041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0dae20b2d009f2f03de8696d06b0c947d3abafc9\"\u003e\u003ccode\u003e0dae20b\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5036\"\u003e#5036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c5c1cbddd92cecb554ac2a77a24139dd76831030\"\u003e\u003ccode\u003ec5c1cbd\u003c/code\u003e\u003c/a\u003e Minor release patches (\u003ca href=\"https://redirect.github.com/psf/black/issues/5035\"\u003e#5035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7e5a828c37d71b6a6666e28eed444816def6a8f4\"\u003e\u003ccode\u003e7e5a828\u003c/code\u003e\u003c/a\u003e docs: clarify relationship between Black style and PEP 8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5025\"\u003e#5025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69705deb8776e7c5e585668da106d1abe2cb8d77\"\u003e\u003ccode\u003e69705de\u003c/code\u003e\u003c/a\u003e docs: add clearer pyproject configuration guidance (\u003ca href=\"https://redirect.github.com/psf/black/issues/5026\"\u003e#5026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/psf/black/compare/26.3.0...26.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `deptry` from 0.24.0 to 0.25.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/osprey-oss/deptry/releases\"\u003edeptry's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.25.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cp\u003eRelease \u003ca href=\"https://github.com/osprey-oss/deptry/releases/tag/0.25.0\"\u003e0.25.0\u003c/a\u003e was yanked in PyPI because of a failure during the release. 0.25.1 is identical, but includes a fix in the release process.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/osprey-oss/deptry/compare/0.25.0...0.25.1\"\u003ehttps://github.com/osprey-oss/deptry/compare/0.25.0...0.25.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e0.25.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003eRepository moved to Osprey OSS\u003c/h3\u003e\n\u003cp\u003edeptry has moved from \u003ca href=\"https://github.com/fpgmaas/deptry\"\u003efpgmaas/deptry\u003c/a\u003e to \u003ca href=\"https://github.com/osprey-oss/deptry\"\u003eosprey-oss/deptry\u003c/a\u003e under the new Osprey OSS organisation. This ensures the project is not tied to a single account and makes it easier to manage contributors and access as the project grows.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport inline \u003ccode\u003e# deptry: ignore\u003c/code\u003e comments to suppress violations (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1473\"\u003e#1473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport non-dev dependency groups with \u003ccode\u003e--non-dev-dependency-groups\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1440\"\u003e#1440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003etomli\u003c/code\u003e on Python \u0026lt; 3.15 for TOML 1.1 support (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1446\"\u003e#1446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--optional-dependencies-dev-groups\u003c/code\u003e and deprecate \u003ccode\u003e--pep621-dev-dependency-groups\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1391\"\u003e#1391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that \u003ccode\u003e--config\u003c/code\u003e does not suppress output (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1390\"\u003e#1390\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFull Changelog\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/fpgmaas/deptry/compare/0.24.0...0.25.0\"\u003ehttps://github.com/fpgmaas/deptry/compare/0.24.0...0.25.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/osprey-oss/deptry/blob/main/CHANGELOG.md\"\u003edeptry's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.25.1 - 2025-03-18\u003c/h2\u003e\n\u003cp\u003eRelease 0.25.0 was yanked in PyPI because of a failure during the release. 0.25.1 is identical, but includes a fix in the release process.\u003c/p\u003e\n\u003ch2\u003e0.25.0 - 2025-03-18\u003c/h2\u003e\n\u003ch3\u003eRepository moved to Osprey OSS\u003c/h3\u003e\n\u003cp\u003edeptry has moved from \u003ca href=\"https://github.com/fpgmaas/deptry\"\u003efpgmaas/deptry\u003c/a\u003e to \u003ca href=\"https://github.com/osprey-oss/deptry\"\u003eosprey-oss/deptry\u003c/a\u003e under the new Osprey OSS organisation. This ensures the project is not tied to a single account and makes it easier to manage contributors and access as the project grows.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSupport inline \u003ccode\u003e# deptry: ignore\u003c/code\u003e comments to suppress violations (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1473\"\u003e#1473\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSupport non-dev dependency groups with \u003ccode\u003e--non-dev-dependency-groups\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1440\"\u003e#1440\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003etomli\u003c/code\u003e on Python \u0026lt; 3.15 for TOML 1.1 support (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1446\"\u003e#1446\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e--optional-dependencies-dev-groups\u003c/code\u003e and deprecate \u003ccode\u003e--pep621-dev-dependency-groups\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1391\"\u003e#1391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnsure that \u003ccode\u003e--config\u003c/code\u003e does not suppress output (\u003ca href=\"https://redirect.github.com/fpgmaas/deptry/pull/1390\"\u003e#1390\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFull Changelog\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/fpgmaas/deptry/compare/0.24.0...0.25.0\"\u003ehttps://github.com/fpgmaas/deptry/compare/0.24.0...0.25.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/osprey-oss/deptry/commit/0c39226d761685125c5ff71ca81282d6751c9540\"\u003e\u003ccode\u003e0c39226\u003c/code\u003e\u003c/a\u003e Remove pinned maturin version for building windows wheels in release (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1516\"\u003e#1516\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/501a929da2e323fb3b49322380169ade0fd4709f\"\u003e\u003ccode\u003e501a929\u003c/code\u003e\u003c/a\u003e chore(packaging): use PEP 639 license format (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1514\"\u003e#1514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/2d89cf487520b0284a4f6f6a6077ce3bb7299bbd\"\u003e\u003ccode\u003e2d89cf4\u003c/code\u003e\u003c/a\u003e Releasenotes for release 0.25.0 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1510\"\u003e#1510\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/ef64f9367f58aab61e752f8a48c07dd9fd137f7f\"\u003e\u003ccode\u003eef64f93\u003c/code\u003e\u003c/a\u003e Replace all references of fpgmaas/deptry with osprey-oss/deptry (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1513\"\u003e#1513\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/fdec8c532f2172ec64bec4b779fcb56508e276ef\"\u003e\u003ccode\u003efdec8c5\u003c/code\u003e\u003c/a\u003e Add trusted publishing (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1512\"\u003e#1512\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/2e27ae2242567f2958aa9a451f54d4b3ec31740b\"\u003e\u003ccode\u003e2e27ae2\u003c/code\u003e\u003c/a\u003e chore(deps): update uv-version to v0.10.10 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1503\"\u003e#1503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/9d1f7d1e6ed1d27c163dd1abc28eeda5beba50ca\"\u003e\u003ccode\u003e9d1f7d1\u003c/code\u003e\u003c/a\u003e chore(deps): update pre-commit hook astral-sh/ruff-pre-commit to v0.15.6 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1502\"\u003e#1502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/2a5a0a6b631f0ee1e4475b1e9212d0bafe3af68c\"\u003e\u003ccode\u003e2a5a0a6\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency mkdocs-material to v9.7.5 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1501\"\u003e#1501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/487f682138d7ac9370cb1b9edd0be26a1e8940d0\"\u003e\u003ccode\u003e487f682\u003c/code\u003e\u003c/a\u003e chore(deps): update dependency pnpm to v10.32.1 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1506\"\u003e#1506\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/osprey-oss/deptry/commit/608ba46360298c30db7402179fe85349f78391f4\"\u003e\u003ccode\u003e608ba46\u003c/code\u003e\u003c/a\u003e fix(deps): update ruff rust to v0.15.6 (\u003ca href=\"https://redirect.github.com/osprey-oss/deptry/issues/1504\"\u003e#1504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/osprey-oss/deptry/compare/0.24.0...0.25.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker` from 40.8.0 to 40.11.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.11.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md\"\u003eCHANGELOG.md\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/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.11.0...v40.11.1\"\u003ev40.11.1 - 2026-03-23\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: rebind deepcopy proxies to copied Faker instances. Thanks \u003ca href=\"https://github.com/SunS1eep1ng\"\u003e\u003ccode\u003e@​SunS1eep1ng\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.10.0...v40.11.0\"\u003ev40.11.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider. Thanks \u003ca href=\"https://github.com/raphael-s\"\u003e\u003ccode\u003e@​raphael-s\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.9.0...v40.10.0\"\u003ev40.10.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/rodrigobnogueira\"\u003e\u003ccode\u003e@​rodrigobnogueira\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.8.1...v40.9.0\"\u003ev40.9.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider. Thanks \u003ca href=\"https://github.com/filipemattar\"\u003e\u003ccode\u003e@​filipemattar\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.8.0...v40.8.1\"\u003ev40.8.1 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mutable default providers. Thanks \u003ca href=\"https://github.com/Dhi13man\"\u003e\u003ccode\u003e@​Dhi13man\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/joke2k/faker/commit/db42f6477ea15d754889a9e030b3c3d29872d947\"\u003e\u003ccode\u003edb42f64\u003c/code\u003e\u003c/a\u003e Bump version: 40.11.0 → 40.11.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/a5b9f98629cb842dfe352879aaf0628bc10a643d\"\u003e\u003ccode\u003ea5b9f98\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/01cb8d0f90fac0799f90e1295e8d4ab67c4fc070\"\u003e\u003ccode\u003e01cb8d0\u003c/code\u003e\u003c/a\u003e fix: rebind deepcopy proxies to copied Faker instances (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2340\"\u003e#2340\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/53314fc7d3fba03fed38bb1053a395fdfb50e35f\"\u003e\u003ccode\u003e53314fc\u003c/code\u003e\u003c/a\u003e Bump version: 40.10.0 → 40.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4b47329802626fc808f48be8b2a79564429500c9\"\u003e\u003ccode\u003e4b47329\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4a3341a8bd266b6ff2620c23648615a3f000bbd0\"\u003e\u003ccode\u003e4a3341a\u003c/code\u003e\u003c/a\u003e Add major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2337\"\u003e#2337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c571a926438d868841ac62ad7bc49d65eb8f103c\"\u003e\u003ccode\u003ec571a92\u003c/code\u003e\u003c/a\u003e Bump version: 40.9.0 → 40.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ec660a43ed059178965fc1c24ae039dfbcf80628\"\u003e\u003ccode\u003eec660a4\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/db8b86b852ba85043fbe2c9c271c72e904b43580\"\u003e\u003ccode\u003edb8b86b\u003c/code\u003e\u003c/a\u003e Fix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2324\"\u003e#2324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/1ebfd5f7194f867b018c934b5097bf9d6ba38d76\"\u003e\u003ccode\u003e1ebfd5f\u003c/code\u003e\u003c/a\u003e Bump version: 40.8.1 → 40.9.0\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.8.0...v40.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `hypothesis` from 6.151.9 to 6.151.10\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/releases\"\u003ehypothesis's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eHypothesis for Python - version 6.151.10\u003c/h2\u003e\n\u003cp\u003eWhen shrinking takes more than five minutes, Hypothesis now prints the\n\u0026quot;\u003ca href=\"https://github.com/seed\"\u003e\u003ccode\u003e@​seed\u003c/code\u003e\u003c/a\u003e\u0026quot; decorator alongside the slow-shrinking warning so you can\nreproduce the failure.\u003c/p\u003e\n\u003cp\u003eThanks to Ian Hunt-Isaak for this contribution!\u003c/p\u003e\n\u003cp\u003e\u003cem\u003e\u003ca href=\"https://hypothesis.readthedocs.io/en/latest/changelog.html#v6-151-10\"\u003eThe canonical version of these notes (with links) is on readthedocs.\u003c/a\u003e\u003c/em\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/HypothesisWorks/hypothesis/commit/dd619a862bc4e8765bb5f5ca6e9528c138537a51\"\u003e\u003ccode\u003edd619a8\u003c/code\u003e\u003c/a\u003e Bump hypothesis-python version to 6.151.10 and update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/47bf92e06da4557a58417835a02714f45297d297\"\u003e\u003ccode\u003e47bf92e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4685\"\u003e#4685\u003c/a\u003e from HypothesisWorks/create-pull-request/patch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/e87b8bacd8203590b43aa62412a3438044ecdaf2\"\u003e\u003ccode\u003ee87b8ba\u003c/code\u003e\u003c/a\u003e Update pinned dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/d2a9a599fc0c484ec985b52ed67a7ddfc0d1bcfd\"\u003e\u003ccode\u003ed2a9a59\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4677\"\u003e#4677\u003c/a\u003e from ianhi/slow-shrink-seed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/1d6046a84348d600b21128c8d96072e9f155560e\"\u003e\u003ccode\u003e1d6046a\u003c/code\u003e\u003c/a\u003e format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/36c2cae62a6a94744452fc728381ac782fca9651\"\u003e\u003ccode\u003e36c2cae\u003c/code\u003e\u003c/a\u003e refactor and reword\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/3d54cdc8e27c32b5e80afbd15986a5cf84128bd8\"\u003e\u003ccode\u003e3d54cdc\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'upstream/master' into slow-shrink-seed\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/c1d70b89c5d586660e1b21fdf422a10fd14e9d6c\"\u003e\u003ccode\u003ec1d70b8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4679\"\u003e#4679\u003c/a\u003e from HypothesisWorks/create-pull-request/patch\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/e1e0ba11b752451daaed0150cd74b47a2abe9c0c\"\u003e\u003ccode\u003ee1e0ba1\u003c/code\u003e\u003c/a\u003e Update pinned dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/HypothesisWorks/hypothesis/commit/9fe714de9b90f425c2dd70c5d2a367bab3988f3d\"\u003e\u003ccode\u003e9fe714d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/HypothesisWorks/hypothesis/issues/4678\"\u003e#4678\u003c/a\u003e from HypothesisWorks/create-pull-request/patch\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.9...hypothesis-python-6.151.10\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-literate-nav` from 0.6.2 to 0.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/releases\"\u003emkdocs-literate-nav's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/pull/39\"\u003eoprypin/mkdocs-literate-nav#39\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\u003ehttps://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\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/oprypin/mkdocs-literate-nav/commit/b91268c263f61e38a7e27f77ccf38ec287e0c0b5\"\u003e\u003ccode\u003eb91268c\u003c/code\u003e\u003c/a\u003e v0.6.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/cee9ec49a1523036081378a39bda9fa014432526\"\u003e\u003ccode\u003ecee9ec4\u003c/code\u003e\u003c/a\u003e Exclude properdocs when testing minimal dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/ea523f5864f59fb7939f84cd4400df67280ad52c\"\u003e\u003ccode\u003eea523f5\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/issues/39\"\u003e#39\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/258b15a15a3e25cedc816d0a5a971acfdb86541e\"\u003e\u003ccode\u003e258b15a\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\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.5 to 9.7.6\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.6\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\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\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\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/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.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\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\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/6c52ed6289b171a153875491f059a94819ec3e10\"\u003e\u003ccode\u003e6c52ed6\u003c/code\u003e\u003c/a\u003e Prepare 9.7.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/51d9b76636431814df924bcda27485b16023978b\"\u003e\u003ccode\u003e51d9b76\u003c/code\u003e\u003c/a\u003e Automatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6f9a48b4048650341a654d9757da57fc1e3e323d\"\u003e\u003ccode\u003e6f9a48b\u003c/code\u003e\u003c/a\u003e Updated links\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.7.5...9.7.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-redirects` from 1.2.2 to 1.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ProperDocs/properdocs-redirects/releases\"\u003emkdocs-redirects's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.2.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/ProperDocs/mkdocs-redirects/pull/2\"\u003eProperDocs/mkdocs-redirects#2\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eDrop support for Python 3.9, officially support Python 3.14\u003c/strong\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/compare/v1.2.2...v1.2.3\"\u003ehttps://github.com/ProperDocs/mkdocs-redirects/compare/v1.2.2...v1.2.3\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/ProperDocs/mkdocs-redirects/commit/77c7f934b26a6521c64b5ecfd29338b10e367527\"\u003e\u003ccode\u003e77c7f93\u003c/code\u003e\u003c/a\u003e Release 1.2.3 (\u003ca href=\"https://redirect.github.com/ProperDocs/properdocs-redirects/issues/4\"\u003e#4\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/15082ac93787964061e3c764fcf57e656709f4e3\"\u003e\u003ccode\u003e15082ac\u003c/code\u003e\u003c/a\u003e Remove unused Makefile\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/f38f50248af2647e43af66cbf327c636662503f9\"\u003e\u003ccode\u003ef38f502\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/ProperDocs/properdocs-redirects/issues/2\"\u003e#2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/92979c5f7b8418b8112fd3aca849eafbc1e61f51\"\u003e\u003ccode\u003e92979c5\u003c/code\u003e\u003c/a\u003e Update references - use the new origin repository for this package (\u003ca href=\"https://redirect.github.com/ProperDocs/properdocs-redirects/issues/3\"\u003e#3\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/44e0bca6f89d1f2d2152e5b4db2136902d25088b\"\u003e\u003ccode\u003e44e0bca\u003c/code\u003e\u003c/a\u003e Bump the minimal required version of MkDocs (\u003ca href=\"https://redirect.github.com/ProperDocs/properdocs-redirects/issues/1\"\u003e#1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/a9dd8d411a5e69367e588e82987f85fa019a69ff\"\u003e\u003ccode\u003ea9dd8d4\u003c/code\u003e\u003c/a\u003e Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ProperDocs/mkdocs-redirects/commit/100e7b482bce1bab562bd74088388f6383afd681\"\u003e\u003ccode\u003e100e7b4\u003c/code\u003e\u003c/a\u003e Template upgrade\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ProperDocs/properdocs-redirects/compare/v1.2.2...v1.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-section-index` from 0.3.10 to 0.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/releases\"\u003emkdocs-section-index's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/pull/27\"\u003eoprypin/mkdocs-section-index#27\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ehttps://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\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/oprypin/mkdocs-section-index/commit/a8235f6f8eb5927b966a3aaea8afe5fa161ecece\"\u003e\u003ccode\u003ea8235f6\u003c/code\u003e\u003c/a\u003e v0.3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/ac66dfda53834d79ce8e0af6f340dddd7cde2bf9\"\u003e\u003ccode\u003eac66dfd\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/issues/27\"\u003e#27\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/32866cd83993ee3eefbac0fcc13911692796d8f6\"\u003e\u003ccode\u003e32866cd\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.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.5 to 0.15.8\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.8\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\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.8\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\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/c2a8815842f9dc5d24ec19385eae0f1a7188b0d9\"\u003e\u003ccode\u003ec2a8815\u003c/code\u003e\u003c/a\u003e Release 0.15.8 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24217\"\u003e#24217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d444d52e2b9cc8bc9a078c2bd4ff6ff993290209\"\u003e\u003ccode\u003ed444d52\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda expressions with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22633\"\u003e#22633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9622285ed0081fc688149f6efca87f127d9b18dd\"\u003e\u003ccode\u003e9622285\u003c/code\u003e\u003c/a\u003e [ty] Autocomplete arguments if in arguments node (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24167\"\u003e#24167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d81266252aaf0820346d55edbed79c4f25ba13d2\"\u003e\u003ccode\u003ed812662\u003c/code\u003e\u003c/a\u003e Use the \u003ccode\u003erelease\u003c/code\u003e environment in \u003ccode\u003epublish-docs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24214\"\u003e#24214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eda2355832f7a9c58aef6febd3e061dc9c87509a\"\u003e\u003ccode\u003eeda2355\u003c/code\u003e\u003c/a\u003e [ty] Show \u003ccode\u003eFinal\u003c/code\u003e source in final assignment diagnostic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24194\"\u003e#24194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/929eb5238c82bfadad4549ff526f02efc0163dd0\"\u003e\u003ccode\u003e929eb52\u003c/code\u003e\u003c/a\u003e [ty] Enforce Final attribute assignment rules for annotated and augmented wri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/34998be22ec3a77d398bbd55234ef8740f768329\"\u003e\u003ccode\u003e34998be\u003c/code\u003e\u003c/a\u003e [ty] Fix typo in comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24211\"\u003e#24211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/560aca0b2828ee2ff1b4bcc5c5ef1ef4ced229d2\"\u003e\u003ccode\u003e560aca0\u003c/code\u003e\u003c/a\u003e [ty] Minor simplifications to some benchmark code (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24209\"\u003e#24209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/683bae512d03d3727a7bcdbc5a0170dafa049583\"\u003e\u003ccode\u003e683bae5\u003c/code\u003e\u003c/a\u003e [ty] Track non-terminal-call constraints in global scope (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23245\"\u003e#23245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4704c2a4ff3dde2fd29324346720e9516b4fe387\"\u003e\u003ccode\u003e4704c2a\u003c/code\u003e\u003c/a\u003e [ty] Remove unnecessary intermediate collection in `StaticClassLiteral::field...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.5...0.15.8\"\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.32.4.20260107 to 2.33.0.20260327\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/python/typeshed/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `vulture` from 2.15 to 2.16\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jendrikseipp/vulture/releases\"\u003evulture's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.16\u003c/h2\u003e\n\u003cp\u003e2.16 (2026-03-25)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix false positives for dead code after while loops (\u003ca href=\"https://redirect.github.com/jendrikseipp/vulture/issues/412\"\u003e#412\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/jendrikseipp/vulture/issues/413\"\u003e#413\u003c/a\u003e, Jendrik Seipp).\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003ety\u003c/code\u003e instead of \u003ccode\u003epytype\u003c/code\u003e for testing type annotations (Jendrik Seipp).\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/jendrikseipp/vulture/blob/main/CHANGELOG.md\"\u003evulture's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.16 (2026-03-25)\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix false positives for dead code after w...\n\n_Description has been truncated_\n\n\u003c!-- This is an auto-generated description by cubic. --\u003e\n---\n## Summary by cubic\nUpdate Python dependencies to latest minor/patch versions to pick up bug fixes and maintenance updates. Notably upgrades `pydantic-core` and moves `pydantic` to 2.13.0b2, and updates MkDocs plugins which add a new `properdocs` runtime for docs.\n\n- **Dependencies**\n  - Core: `pydantic-core` 2.42.0 and `pydantic` 2.13.0b2.\n  - Tooling: `black` 26.3.1, `ruff` 0.15.8, `pytest-cov` 7.1.0, `pytest-env` 1.6.0, `deptry` 0.25.1, `vulture` 2.16, `hypothesis` 6.151.10, `types-requests` 2.33.0.20260327.\n  - Docs: `mkdocs-material` 9.7.6, `mkdocs-literate-nav` 0.6.3, `mkdocs-redirects` 1.2.3, `mkdocs-section-index` 0.3.11; adds `properdocs` and caps `mkdocs` to \u003c=1.6.1.\n  - Test data: `faker` 40.11.1.\n\n\u003csup\u003eWritten for commit c3ba939bd55551d5a6b61d00582c1347546ae8fd. Summary will update on new commits.\u003c/sup\u003e\n\n\u003c!-- End of auto-generated description by cubic. --\u003e","html_url":"https://github.com/flext-sh/flext-dbt-oracle-wms/pull/14","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/flext-sh%2Fflext-dbt-oracle-wms/issues/14","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/14/packages"}},{"old_version":"1.5.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-03-29T07:13:58.000Z","version_change":"1.5.0 → 1.6.0","issue":{"uuid":"4163124585","node_id":"PR_kwDOQ5AU387OWrVJ","number":108,"state":"closed","title":"Bump the uv-deps group across 1 directory with 6 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":"2026-04-05T07:14:01.000Z","author_association":null,"state_reason":null,"created_at":"2026-03-29T07:13:58.000Z","updated_at":"2026-04-05T07:14:02.000Z","time_to_close":604803,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"uv-deps","update_count":6,"packages":[{"name":"celery","old_version":"5.6.2","new_version":"5.6.3"},{"name":"gunicorn","old_version":"25.1.0","new_version":"25.3.0","repository_url":"https://github.com/benoitc/gunicorn"},{"name":"sentry-sdk","old_version":"2.54.0","new_version":"2.56.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.8","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-deps group with 6 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [celery[redis]](https://github.com/celery/celery) | `5.6.2` | `5.6.3` |\n| [gunicorn](https://github.com/benoitc/gunicorn) | `25.1.0` | `25.3.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.54.0` | `2.56.0` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.4` | `0.15.8` |\n\n\nUpdates `celery[redis]` from 5.6.2 to 5.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/releases\"\u003ecelery[redis]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.6.3\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix Django worker recursion bug + defensive checks for pool_cls.\u003cstrong\u003emodule\u003c/strong\u003e by \u003ca href=\"https://github.com/maycuatroi1\"\u003e\u003ccode\u003e@​maycuatroi1\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10048\"\u003ecelery/celery#10048\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Update user_preload_options example to use click. by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10056\"\u003ecelery/celery#10056\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo by \u003ca href=\"https://github.com/jorsyk\"\u003e\u003ccode\u003e@​jorsyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10060\"\u003ecelery/celery#10060\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broken images on PyPI page by \u003ca href=\"https://github.com/Timour-Ilyas\"\u003e\u003ccode\u003e@​Timour-Ilyas\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10066\"\u003ecelery/celery#10066\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove broken reference. by \u003ca href=\"https://github.com/sueannioanis\"\u003e\u003ccode\u003e@​sueannioanis\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10071\"\u003ecelery/celery#10071\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemoved --dist=loadscope from smoke tests by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10073\"\u003ecelery/celery#10073\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDocs: Clarify task_retry signal args may be None by \u003ca href=\"https://github.com/GangEunzzang\"\u003e\u003ccode\u003e@​GangEunzzang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10076\"\u003ecelery/celery#10076\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate example for Django by \u003ca href=\"https://github.com/sbc-khacnha\"\u003e\u003ccode\u003e@​sbc-khacnha\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10081\"\u003ecelery/celery#10081\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMake tests compatible with pymongo \u0026gt;= 4.16 by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10074\"\u003ecelery/celery#10074\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: source install of cassandra-driver by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10105\"\u003ecelery/celery#10105\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: register task cross-reference role in Sphinx extension by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10100\"\u003ecelery/celery#10100\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: avoid cycle detection in native delayed delivery by \u003ca href=\"https://github.com/Izzette\"\u003e\u003ccode\u003e@​Izzette\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10095\"\u003ecelery/celery#10095\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(asynpool): avoid AttributeError when proc lacks _sentinel_poll by \u003ca href=\"https://github.com/mriddle\"\u003e\u003ccode\u003e@​mriddle\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10086\"\u003ecelery/celery#10086\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix dusk_astronomical horizon sign (+18 -\u0026gt; -18) by \u003ca href=\"https://github.com/Mr-Neutr0n\"\u003e\u003ccode\u003e@​Mr-Neutr0n\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10121\"\u003ecelery/celery#10121\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10106 onupdate col use lambda func by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10108\"\u003ecelery/celery#10108\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10083\"\u003e#10083\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10123\"\u003ecelery/celery#10123\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix 10109 db backend connection health by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10124\"\u003ecelery/celery#10124\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend filter unsupport sql engine arguments with nullpool \u003ca href=\"https://redirect.github.com/celery/celery/issues/7355\"\u003e#7355\u003c/a\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10134\"\u003ecelery/celery#10134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(beat): correct argument order in Service.\u003cstrong\u003ereduce\u003c/strong\u003e by \u003ca href=\"https://github.com/bysiber\"\u003e\u003ccode\u003e@​bysiber\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10137\"\u003ecelery/celery#10137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: declare explicit read-only token permissions in workflow jobs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10139\"\u003ecelery/celery#10139\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: 'boto3to' to 'boto3 to' by \u003ca href=\"https://github.com/cuiweixie\"\u003e\u003ccode\u003e@​cuiweixie\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10133\"\u003ecelery/celery#10133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDatabase Backend: Add missing index on date_done (Fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10097\"\u003e#10097\u003c/a\u003e) by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10098\"\u003ecelery/celery#10098\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo in CONTRIBUTING.rst by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10141\"\u003ecelery/celery#10141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefer to Flower / Prometheus for monitoring by \u003ca href=\"https://github.com/WilliamDEdwards\"\u003e\u003ccode\u003e@​WilliamDEdwards\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10140\"\u003ecelery/celery#10140\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: remove duplicated words in broker and routing docs by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10146\"\u003ecelery/celery#10146\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix stale version reference and grammar in README by \u003ca href=\"https://github.com/kelsonbrito50\"\u003e\u003ccode\u003e@​kelsonbrito50\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10145\"\u003ecelery/celery#10145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix wording in Celery 5.3 worker pool notes by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10149\"\u003ecelery/celery#10149\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated wording in 3.1 changelog entry by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10152\"\u003ecelery/celery#10152\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix changelog typo in context manager wording by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10144\"\u003ecelery/celery#10144\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix/10096 worker fails to reconnect after redis failover by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10151\"\u003ecelery/celery#10151\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove on_after_finalize signal documentation by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10155\"\u003ecelery/celery#10155\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd non-commutative example to clarify partial arg ordering in canvas docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10157\"\u003ecelery/celery#10157\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove redundant test_isa_mapping test (fixes \u003ca href=\"https://redirect.github.com/celery/celery/issues/10077\"\u003e#10077\u003c/a\u003e) by \u003ca href=\"https://github.com/daniel7an\"\u003e\u003ccode\u003e@​daniel7an\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10103\"\u003ecelery/celery#10103\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg by \u003ca href=\"https://github.com/Nusnus\"\u003e\u003ccode\u003e@​Nusnus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10162\"\u003ecelery/celery#10162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove deprecated args from redis get_connection call by \u003ca href=\"https://github.com/JaeHyuckSa\"\u003e\u003ccode\u003e@​JaeHyuckSa\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10036\"\u003ecelery/celery#10036\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/celery/celery/issues/6912\"\u003e#6912\u003c/a\u003e rpc backend reconnection error by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10179\"\u003ecelery/celery#10179\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) by \u003ca href=\"https://github.com/drichardson\"\u003e\u003ccode\u003e@​drichardson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10165\"\u003ecelery/celery#10165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit by \u003ca href=\"https://github.com/tsangwailam\"\u003e\u003ccode\u003e@​tsangwailam\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10181\"\u003ecelery/celery#10181\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix O(K²) message bloat in a chain of chords by \u003ca href=\"https://github.com/Borzik\"\u003e\u003ccode\u003e@​Borzik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10171\"\u003ecelery/celery#10171\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix mock connection interfaces to prevent \u003ccode\u003eTypeError\u003c/code\u003e during exception handling by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10178\"\u003ecelery/celery#10178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks by \u003ca href=\"https://github.com/aurangzaib048\"\u003e\u003ccode\u003e@​aurangzaib048\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10159\"\u003ecelery/celery#10159\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExtract \u003ccode\u003ereconnect_on_error\u003c/code\u003e to \u003ccode\u003eBaseResultConsumer\u003c/code\u003e by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10189\"\u003ecelery/celery#10189\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epep 649 by \u003ca href=\"https://github.com/ericbuehl\"\u003e\u003ccode\u003e@​ericbuehl\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10187\"\u003ecelery/celery#10187\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix#9722 friendly status errors for CLI by \u003ca href=\"https://github.com/ChickenBenny\"\u003e\u003ccode\u003e@​ChickenBenny\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10190\"\u003ecelery/celery#10190\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: clarify after_return behavior for retried tasks by \u003ca href=\"https://github.com/KianAnbarestani\"\u003e\u003ccode\u003e@​KianAnbarestani\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10192\"\u003ecelery/celery#10192\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd compression header to message protocol docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10156\"\u003ecelery/celery#10156\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix duplicated word in bootsteps comment by \u003ca href=\"https://github.com/Rohan5commit\"\u003e\u003ccode\u003e@​Rohan5commit\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10153\"\u003ecelery/celery#10153\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove outdated autoreloader section from extending docs by \u003ca href=\"https://github.com/Br1an67\"\u003e\u003ccode\u003e@​Br1an67\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/celery/celery/pull/10154\"\u003ecelery/celery#10154\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/celery/celery/blob/v5.6.3/Changelog.rst\"\u003ecelery[redis]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e5.6.3\u003c/h1\u003e\n\u003cp\u003e:release-date: 2026-03-26\n:release-by: Tomer Nosrati\u003c/p\u003e\n\u003cp\u003eWhat's Changed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Fix Django worker recursion bug + defensive checks for pool_cls.__module__ ([#10048](https://github.com/celery/celery/issues/10048))\n- Docs: Update user_preload_options example to use click. ([#10056](https://github.com/celery/celery/issues/10056))\n- Fix invalid configuration key \u0026quot;bootstrap_servers\u0026quot; in Kafka demo ([#10060](https://github.com/celery/celery/issues/10060))\n- Fix broken images on PyPI page ([#10066](https://github.com/celery/celery/issues/10066))\n- Remove broken reference. ([#10071](https://github.com/celery/celery/issues/10071))\n- Removed --dist=loadscope from smoke tests ([#10073](https://github.com/celery/celery/issues/10073))\n- Docs: Clarify task_retry signal args may be None ([#10076](https://github.com/celery/celery/issues/10076))\n- Update example for Django ([#10081](https://github.com/celery/celery/issues/10081))\n- Make tests compatible with pymongo \u0026gt;= 4.16 ([#10074](https://github.com/celery/celery/issues/10074))\n- fix: source install of cassandra-driver ([#10105](https://github.com/celery/celery/issues/10105))\n- fix: register task cross-reference role in Sphinx extension ([#10100](https://github.com/celery/celery/issues/10100))\n- fix: avoid cycle detection in native delayed delivery ([#10095](https://github.com/celery/celery/issues/10095))\n- fix(asynpool): avoid AttributeError when proc lacks _sentinel_poll ([#10086](https://github.com/celery/celery/issues/10086))\n- fix dusk_astronomical horizon sign (+18 -\u0026gt; -18) ([#10121](https://github.com/celery/celery/issues/10121))\n- Fix/10106 onupdate col use lambda func ([#10108](https://github.com/celery/celery/issues/10108))\n- Fix warm shutdown RuntimeError with eventlet\u0026gt;=0.37.0 ([#10083](https://github.com/celery/celery/issues/10083)) ([#10123](https://github.com/celery/celery/issues/10123))\n- Fix 10109 db backend connection health ([#10124](https://github.com/celery/celery/issues/10124))\n- Database Backend filter unsupport sql engine arguments with nullpool [#7355](https://github.com/celery/celery/issues/7355) ([#10134](https://github.com/celery/celery/issues/10134))\n- fix(beat): correct argument order in Service.__reduce__ ([#10137](https://github.com/celery/celery/issues/10137))\n- ci: declare explicit read-only token permissions in workflow jobs ([#10139](https://github.com/celery/celery/issues/10139))\n- chore: 'boto3to' to 'boto3 to' ([#10133](https://github.com/celery/celery/issues/10133))\n- Database Backend: Add missing index on date_done (Fixes [#10097](https://github.com/celery/celery/issues/10097)) ([#10098](https://github.com/celery/celery/issues/10098))\n- docs: fix typo in CONTRIBUTING.rst ([#10141](https://github.com/celery/celery/issues/10141))\n- Refer to Flower / Prometheus for monitoring ([#10140](https://github.com/celery/celery/issues/10140))\n- docs: remove duplicated words in broker and routing docs ([#10146](https://github.com/celery/celery/issues/10146))\n- docs: fix stale version reference and grammar in README ([#10145](https://github.com/celery/celery/issues/10145))\n- docs: fix wording in Celery 5.3 worker pool notes ([#10149](https://github.com/celery/celery/issues/10149))\n- docs: fix duplicated wording in 3.1 changelog entry ([#10152](https://github.com/celery/celery/issues/10152))\n- docs: fix changelog typo in context manager wording ([#10144](https://github.com/celery/celery/issues/10144))\n- Fix/10096 worker fails to reconnect after redis failover ([#10151](https://github.com/celery/celery/issues/10151))\n- Improve on_after_finalize signal documentation ([#10155](https://github.com/celery/celery/issues/10155))\n- Add non-commutative example to clarify partial arg ordering in canvas docs ([#10157](https://github.com/celery/celery/issues/10157))\n- Remove redundant test_isa_mapping test (fixes [#10077](https://github.com/celery/celery/issues/10077)) ([#10103](https://github.com/celery/celery/issues/10103))\n- Upgrade pytest-celery to \u0026gt;=1.3.0 and adopt PYTEST_CELERY_PKG build arg ([#10162](https://github.com/celery/celery/issues/10162))\n- Remove deprecated args from redis get_connection call ([#10036](https://github.com/celery/celery/issues/10036))\n- Fix [#6912](https://github.com/celery/celery/issues/6912) rpc backend reconnection error ([#10179](https://github.com/celery/celery/issues/10179))\n- Fix NameError with TYPE_CHECKING annotations on Python 3.14+ (PEP 649) ([#10165](https://github.com/celery/celery/issues/10165))\n- docs: Add elaboration on prefetch multiplier settings (worker_prefetch_multiplier) and worker_eta_task_limit ([#10181](https://github.com/celery/celery/issues/10181))\n- Fix O(K²) message bloat in a chain of chords ([#10171](https://github.com/celery/celery/issues/10171))\n- Fix mock connection interfaces to prevent `TypeError` during exception handling ([#10178](https://github.com/celery/celery/issues/10178))\n- fix(trace): dispatch chain/callbacks on dedup fast-path for redelivered tasks ([#10159](https://github.com/celery/celery/issues/10159))\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/3f4d8d795ad128bd7430cc5dc174a802cded425c\"\u003e\u003ccode\u003e3f4d8d7\u003c/code\u003e\u003c/a\u003e Prepare for release: v5.6.3 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10221\"\u003e#10221\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a989e8cf8876274b1f0612abffeeb2e9995ed321\"\u003e\u003ccode\u003ea989e8c\u003c/code\u003e\u003c/a\u003e fix: clear the timer while catch the exception (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10218\"\u003e#10218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d06de5f047620b0ea2bdbdb3c0c56137b79ae9a1\"\u003e\u003ccode\u003ed06de5f\u003c/code\u003e\u003c/a\u003e Chore(deps): Bump nick-fields/retry from 3 to 4 (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10213\"\u003e#10213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/c3c19c31dc3e21f16d4d85a8ba8401a9223ace09\"\u003e\u003ccode\u003ec3c19c3\u003c/code\u003e\u003c/a\u003e Fix: prioritize request ignore_result over task definition (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10184\"\u003e#10184\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/d23be53f6f3600d48df35a797c63eb1c7d4d4b97\"\u003e\u003ccode\u003ed23be53\u003c/code\u003e\u003c/a\u003e Remove outdated autoreloader section from extending docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10154\"\u003e#10154\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/ada2da7475a5fa9f9ad079149a5d6864634abc28\"\u003e\u003ccode\u003eada2da7\u003c/code\u003e\u003c/a\u003e docs: fix duplicated word in bootsteps comment\\n\\nSigned-off-by: Rohan Santho...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/f45f62beb3b16ae960944f8c97de13ccf15f2d0a\"\u003e\u003ccode\u003ef45f62b\u003c/code\u003e\u003c/a\u003e Add compression header to message protocol docs (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10156\"\u003e#10156\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/9a270925546ed9d0ca0303fb5006edc86b705fd9\"\u003e\u003ccode\u003e9a27092\u003c/code\u003e\u003c/a\u003e docs: clarify after_return behavior for retried tasks (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10192\"\u003e#10192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/6ee6230cd80ef6c3e7482e1f4cd970fbb0629b23\"\u003e\u003ccode\u003e6ee6230\u003c/code\u003e\u003c/a\u003e Fix#9722 friendly status errors for CLI (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10190\"\u003e#10190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/celery/celery/commit/a9a2d4cecaf0e58c401ad6f68f022afa19770ac2\"\u003e\u003ccode\u003ea9a2d4c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/celery/celery/issues/10186\"\u003e#10186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/celery/celery/compare/v5.6.2...v5.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `gunicorn` from 25.1.0 to 25.3.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 25.3.0\u003c/h2\u003e\n\u003ch2\u003eBug Fixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eHTTP/2 ASGI Body Duplication\u003c/strong\u003e: Fix request body being received twice in HTTP/2\nASGI requests, causing JSON parsing errors with \u0026quot;Extra data\u0026quot; messages\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3558\"\u003e#3558\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eASGI Chunked EOF Handling\u003c/strong\u003e: Add \u003ccode\u003efinish()\u003c/code\u003e method to callback parser to handle\nchunked encoding edge case where connection closes before final CRLF after zero-chunk\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eHTTP/2 Documentation\u003c/strong\u003e: Fix \u003ccode\u003ehttp_protocols\u003c/code\u003e examples to use comma-separated string\ninstead of list syntax (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3561\"\u003e#3561\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eChunked Encoding\u003c/strong\u003e: Reject chunk extensions containing bare CR bytes per RFC 9112\n(\u003ca href=\"https://github.com/benoitc/gunicorn/discussions/3556\"\u003e#3556\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eRequest Line Limit\u003c/strong\u003e: Fix \u003ccode\u003e--limit-request-line 0\u003c/code\u003e to mean unlimited as documented,\ninstead of using default maximum. Works with both Python and fast C parser.\n(\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3563\"\u003e#3563\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eASGI Parser Header Validation\u003c/strong\u003e: Add security checks per RFC 9110/9112:\n\u003cul\u003e\n\u003cli\u003eReject duplicate Content-Length headers\u003c/li\u003e\n\u003cli\u003eReject requests with both Content-Length and Transfer-Encoding\u003c/li\u003e\n\u003cli\u003eReject chunked transfer encoding in HTTP/1.0\u003c/li\u003e\n\u003cli\u003eReject stacked chunked encoding\u003c/li\u003e\n\u003cli\u003eValidate Transfer-Encoding values\u003c/li\u003e\n\u003cli\u003eStrict chunk size validation\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eChanges\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFast HTTP Parser\u003c/strong\u003e: Update to gunicorn_h1c \u0026gt;= 0.6.3 for \u003ccode\u003easgi_headers\u003c/code\u003e property\nand \u003ccode\u003eInvalidChunkExtension\u003c/code\u003e validation for bare CR rejection\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eASGI PROXY Protocol\u003c/strong\u003e: Add PROXY protocol v1/v2 support to callback parser\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eDocker Images\u003c/strong\u003e: Update to Python 3.14\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eGunicorn 25.2.0\u003c/h2\u003e\n\u003ch3\u003eNew Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eFast HTTP Parser (gunicorn_h1c 0.4.1)\u003c/strong\u003e: Integrate new exception types and limit parameters from gunicorn_h1c 0.4.1 for both WSGI and ASGI workers\n\u003cul\u003e\n\u003cli\u003eRequires gunicorn_h1c \u0026gt;= 0.4.1 for \u003ccode\u003ehttp_parser='fast'\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFalls back to Python parser in \u003ccode\u003eauto\u003c/code\u003e mode if version not met\u003c/li\u003e\n\u003cli\u003eProper HTTP status codes for limit errors (414, 431)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003euWSGI Async Workers\u003c/strong\u003e: Fix \u003ccode\u003eInvalidUWSGIHeader: incomplete header\u003c/code\u003e error when using gevent or gthread workers with uwsgi protocol behind nginx. (\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3552\"\u003e#3552\u003c/a\u003e, [PR \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3554\"\u003e#3554\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/benoitc/gunicorn/pull/3554\"\u003ebenoitc/gunicorn#3554\u003c/a\u003e))\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/9bce72cfc3985aba7e0c47bf3c00fa681b2847e4\"\u003e\u003ccode\u003e9bce72c\u003c/code\u003e\u003c/a\u003e Update changelog with missing 25.3.0 changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/2a15fdb93ab136e5776692d620852f481c89d610\"\u003e\u003ccode\u003e2a15fdb\u003c/code\u003e\u003c/a\u003e Fix pylint isinstance-second-argument-not-valid-type warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/8d08aaa2cbd38fdfa2ca6fb94094c47b9c16730a\"\u003e\u003ccode\u003e8d08aaa\u003c/code\u003e\u003c/a\u003e Fix --limit-request-line 0 to mean unlimited\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/d40a37454736e40916eb51e35895f1c22c0cd34a\"\u003e\u003ccode\u003ed40a374\u003c/code\u003e\u003c/a\u003e Fix pytest-asyncio configuration and treq_asgi hex escapes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/da8bd4850ac0f2d0df215390dad88392eb538d74\"\u003e\u003ccode\u003eda8bd48\u003c/code\u003e\u003c/a\u003e Remove unused AsyncRequest class\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/b00f125755ec3f509a3e82dc5568d9f2d8bddba7\"\u003e\u003ccode\u003eb00f125\u003c/code\u003e\u003c/a\u003e Integrate gunicorn_h1c 0.6.3 with InvalidChunkExtension support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/bdb2ebd5a4913fff1e92800f3763e4a879526d3e\"\u003e\u003ccode\u003ebdb2ebd\u003c/code\u003e\u003c/a\u003e Reject chunk extensions with bare CR bytes (RFC 9112)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/7057fc9f89f0ce4d9ac01a12ea2f39768fb32be6\"\u003e\u003ccode\u003e7057fc9\u003c/code\u003e\u003c/a\u003e Fix http_protocols documentation to use string syntax\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/d43acb8fe0910b6669c163e2f4a439e464eab012\"\u003e\u003ccode\u003ed43acb8\u003c/code\u003e\u003c/a\u003e Update to gunicorn_h1c \u0026gt;= 0.6.2 for asgi_headers support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/benoitc/gunicorn/commit/cbd27e82a238cb1326336c6aa4b8ae058e2c9ff9\"\u003e\u003ccode\u003ecbd27e8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/benoitc/gunicorn/issues/3559\"\u003e#3559\u003c/a\u003e from benleembruggen/fix/http2-asgi-body-duplication\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/benoitc/gunicorn/compare/25.1.0...25.3.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.54.0 to 2.56.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.56.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asgi) Add option to disable suppressing chained 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/5714\"\u003e#5714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Separate ignore lists for events/breadcrumbs and sentry logs by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5698\"\u003e#5698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSet exception info on streaming span when applicable 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/5683\"\u003e#5683\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003eAsyncStream.close()\u003c/code\u003e and \u003ccode\u003eAsyncMessageStream.close()\u003c/code\u003e to finish spans 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/5675\"\u003e#5675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003eStream.close()\u003c/code\u003e and \u003ccode\u003eMessageStream.close()\u003c/code\u003e to finish spans 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/5674\"\u003e#5674\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(starlette) Catch Jinja2Templates ImportError 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/5741\"\u003e#5741\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd note on AI PRs to CONTRIBUTING.md 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/5696\"\u003e#5696\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin GitHub Actions to full-length commit SHAs by \u003ca href=\"https://github.com/joshuarli\"\u003e\u003ccode\u003e@​joshuarli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5781\"\u003e#5781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e-latest\u003c/code\u003e alias for each integration test suite 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/5706\"\u003e#5706\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse date-based branch names for toxgen PRs 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/5704\"\u003e#5704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (03/19) 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/5703\"\u003e#5703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd client report tests for span streaming 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/5677\"\u003e#5677\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CHANGELOG.md 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/5685\"\u003e#5685\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tool description to execute_tool 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/5596\"\u003e#5596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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.56.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(asgi) Add option to disable suppressing chained 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/5714\"\u003e#5714\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Separate ignore lists for events/breadcrumbs and sentry logs by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5698\"\u003e#5698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSet exception info on streaming span when applicable 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/5683\"\u003e#5683\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003eAsyncStream.close()\u003c/code\u003e and \u003ccode\u003eAsyncMessageStream.close()\u003c/code\u003e to finish spans 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/5675\"\u003e#5675\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ePatch \u003ccode\u003eStream.close()\u003c/code\u003e and \u003ccode\u003eMessageStream.close()\u003c/code\u003e to finish spans 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/5674\"\u003e#5674\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(starlette) Catch Jinja2Templates ImportError 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/5741\"\u003e#5741\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd note on AI PRs to CONTRIBUTING.md 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/5696\"\u003e#5696\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePin GitHub Actions to full-length commit SHAs by \u003ca href=\"https://github.com/joshuarli\"\u003e\u003ccode\u003e@​joshuarli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5781\"\u003e#5781\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003e-latest\u003c/code\u003e alias for each integration test suite 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/5706\"\u003e#5706\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse date-based branch names for toxgen PRs 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/5704\"\u003e#5704\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🤖 Update test matrix with new releases (03/19) 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/5703\"\u003e#5703\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd client report tests for span streaming 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/5677\"\u003e#5677\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate CHANGELOG.md 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/5685\"\u003e#5685\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e2.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/f5e93ad0956b981a4dd1ae43a85557efe6c633f9\"\u003e\u003ccode\u003ef5e93ad\u003c/code\u003e\u003c/a\u003e release: 2.56.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/4cd6752058f6d559f426a5c726a58ba06d0ebe44\"\u003e\u003ccode\u003e4cd6752\u003c/code\u003e\u003c/a\u003e chore: pin GitHub Actions to full-length commit SHAs (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5781\"\u003e#5781\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/c3eb19f5fe5bcd61ba0dcc6fc5da88b090d013c1\"\u003e\u003ccode\u003ec3eb19f\u003c/code\u003e\u003c/a\u003e test: fix flaky threading test (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5700\"\u003e#5700\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b2b42df8e64bca8b5627d8cbb1533e894a5db74a\"\u003e\u003ccode\u003eb2b42df\u003c/code\u003e\u003c/a\u003e fix(starlette): Catch Jinja2Templates ImportError (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5741\"\u003e#5741\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/48dc5661dcfde7a588392caea82f8da5be0ed335\"\u003e\u003ccode\u003e48dc566\u003c/code\u003e\u003c/a\u003e feat(asgi): Add option to disable suppressing chained exceptions (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5714\"\u003e#5714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/f963475d641b9bef523f30fa1ece9ffd5a35279f\"\u003e\u003ccode\u003ef963475\u003c/code\u003e\u003c/a\u003e tests: Add \u003ccode\u003e-latest\u003c/code\u003e alias for each integration test suite (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5706\"\u003e#5706\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/715fd2b05050784fd91c04691701c5c264132778\"\u003e\u003ccode\u003e715fd2b\u003c/code\u003e\u003c/a\u003e ci: Use date-based branch names for toxgen PRs (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5704\"\u003e#5704\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/35fe9e46e367d526f0872c53bd3b210c565c1684\"\u003e\u003ccode\u003e35fe9e4\u003c/code\u003e\u003c/a\u003e ci: 🤖 Update test matrix with new releases (03/19) (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5703\"\u003e#5703\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/8d56b30b6f1a4fff18dfd029c78ac8ec2aa2c98c\"\u003e\u003ccode\u003e8d56b30\u003c/code\u003e\u003c/a\u003e fix(anthropic): Set exception info on streaming span when applicable (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5683\"\u003e#5683\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/e103926e8cae85ac300890a3853bd30519720250\"\u003e\u003ccode\u003ee103926\u003c/code\u003e\u003c/a\u003e feat: Make ASGI support span first (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5680\"\u003e#5680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.54.0...2.56.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.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.4 to 0.15.8\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.8\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\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.8\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\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/c2a8815842f9dc5d24ec19385eae0f1a7188b0d9\"\u003e\u003ccode\u003ec2a8815\u003c/code\u003e\u003c/a\u003e Release 0.15.8 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24217\"\u003e#24217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d444d52e2b9cc8bc9a078c2bd4ff6ff993290209\"\u003e\u003ccode\u003ed444d52\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda expressions with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22633\"\u003e#22633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9622285ed0081fc688149f6efca87f127d9b18dd\"\u003e\u003ccode\u003e9622285\u003c/code\u003e\u003c/a\u003e [ty] Autocomplete arguments if in arguments node (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24167\"\u003e#24167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d81266252aaf0820346d55edbed79c4f25ba13d2\"\u003e\u003ccode\u003ed812662\u003c/code\u003e\u003c/a\u003e Use the \u003ccode\u003erelease\u003c/code\u003e environment in \u003ccode\u003epublish-docs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24214\"\u003e#24214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eda2355832f7a9c58aef6febd3e061dc9c87509a\"\u003e\u003ccode\u003eeda2355\u003c/code\u003e\u003c/a\u003e [ty] Show \u003ccode\u003eFinal\u003c/code\u003e source in final assignment diagnostic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24194\"\u003e#24194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/929eb5238c82bfadad4549ff526f02efc0163dd0\"\u003e\u003ccode\u003e929eb52\u003c/code\u003e\u003c/a\u003e [ty] Enforce Final attribute assignment rules for annotated and augmented wri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/34998be22ec3a77d398bbd55234ef8740f768329\"\u003e\u003ccode\u003e34998be\u003c/code\u003e\u003c/a\u003e [ty] Fix typo in comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24211\"\u003e#24211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/560aca0b2828ee2ff1b4bcc5c5ef1ef4ced229d2\"\u003e\u003ccode\u003e560aca0\u003c/code\u003e\u003c/a\u003e [ty] Minor simplifications to some benchmark code (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24209\"\u003e#24209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/683bae512d03d3727a7bcdbc5a0170dafa049583\"\u003e\u003ccode\u003e683bae5\u003c/code\u003e\u003c/a\u003e [ty] Track non-terminal-call constraints in global scope (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23245\"\u003e#23245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4704c2a4ff3dde2fd29324346720e9516b4fe387\"\u003e\u003ccode\u003e4704c2a\u003c/code\u003e\u003c/a\u003e [ty] Remove unnecessary intermediate collection in `StaticClassLiteral::field...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.8\"\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/neikow/urban-platform/pull/108","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/neikow%2Furban-platform/issues/108","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/108/packages"}},{"old_version":"1.5.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-03-27T19:12:26.000Z","version_change":"1.5.0 → 1.6.0","issue":{"uuid":"4155292003","node_id":"PR_kwDOMl9L2s7OI2bH","number":238,"state":"open","title":"build(deps): bump the python-packages-minor-patch group with 10 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-27T19:12:26.000Z","updated_at":"2026-03-27T19:18:51.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"python-packages-minor-patch","update_count":10,"packages":[{"name":"aio-pika","old_version":"9.6.1","new_version":"9.6.2","repository_url":"https://github.com/mosquito/aio-pika"},{"name":"llama-index-core","old_version":"0.14.16","new_version":"0.14.19","repository_url":"https://github.com/run-llama/llama_index"},{"name":"llama-index-llms-openai","old_version":"0.6.26","new_version":"0.7.4"},{"name":"optuna","old_version":"4.7.0","new_version":"4.8.0","repository_url":"https://github.com/optuna/optuna"},{"name":"ipython","old_version":"9.11.0","new_version":"9.12.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ruff","old_version":"0.15.5","new_version":"0.15.8","repository_url":"https://github.com/astral-sh/ruff"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"mkdocs-jupyter","old_version":"0.25.1","new_version":"0.26.1","repository_url":"https://github.com/danielfrg/mkdocs-jupyter"},{"name":"mkdocs-material","old_version":"9.7.5","new_version":"9.7.6","repository_url":"https://github.com/squidfunk/mkdocs-material"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages-minor-patch group with 10 updates:\n\n| Package | From | To |\n| --- | --- | --- |\n| [aio-pika](https://github.com/mosquito/aio-pika) | `9.6.1` | `9.6.2` |\n| [llama-index-core](https://github.com/run-llama/llama_index) | `0.14.16` | `0.14.19` |\n| llama-index-llms-openai | `0.6.26` | `0.7.4` |\n| [optuna](https://github.com/optuna/optuna) | `4.7.0` | `4.8.0` |\n| [ipython](https://github.com/ipython/ipython) | `9.11.0` | `9.12.0` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.15.5` | `0.15.8` |\n| [coverage](https://github.com/coveragepy/coveragepy) | `7.13.4` | `7.13.5` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [mkdocs-jupyter](https://github.com/danielfrg/mkdocs-jupyter) | `0.25.1` | `0.26.1` |\n| [mkdocs-material](https://github.com/squidfunk/mkdocs-material) | `9.7.5` | `9.7.6` |\n\nUpdates `aio-pika` from 9.6.1 to 9.6.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mosquito/aio-pika/releases\"\u003eaio-pika's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e9.6.2\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eInclude license file in built distributions via project.license-files by \u003ca href=\"https://github.com/julia-thorn\"\u003e\u003ccode\u003e@​julia-thorn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/mosquito/aio-pika/pull/698\"\u003emosquito/aio-pika#698\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/julia-thorn\"\u003e\u003ccode\u003e@​julia-thorn\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/mosquito/aio-pika/pull/698\"\u003emosquito/aio-pika#698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/mosquito/aio-pika/compare/9.6.1...9.6.2\"\u003ehttps://github.com/mosquito/aio-pika/compare/9.6.1...9.6.2\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aio-pika/commit/8136a8cf6fd04413c9e6ac1a789944ac4b1a47fd\"\u003e\u003ccode\u003e8136a8c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/mosquito/aio-pika/issues/698\"\u003e#698\u003c/a\u003e from julia-thorn/julia-thorn-patch-1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mosquito/aio-pika/commit/31b82b102ac0133ff8322a3fc39db48409765055\"\u003e\u003ccode\u003e31b82b1\u003c/code\u003e\u003c/a\u003e Add license-files entry to pyproject.toml\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mosquito/aio-pika/compare/9.6.1...9.6.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-core` from 0.14.16 to 0.14.19\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/run-llama/llama_index/releases\"\u003ellama-index-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.14.19\u003c/h2\u003e\n\u003ch1\u003eRelease Notes\u003c/h1\u003e\n\u003ch2\u003e[2026-03-25]\u003c/h2\u003e\n\u003ch3\u003ellama-index-agent-agentmesh [0.2.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 49 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21083\"\u003e#21083\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-callbacks-argilla [0.5.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 3 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21069\"\u003e#21069\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-core [0.14.19]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: pass \u003ccode\u003edelete_from_docstore\u003c/code\u003e parameter in \u003ccode\u003eBaseIndex.delete_ref_doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20990\"\u003e#20990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): preserve CTE names during schema prefixing in SQLDatabase.run_sql (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21028\"\u003e#21028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): align sync retrieval dedup key with async (hash + ref_doc_id) (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21034\"\u003e#21034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): raise ValueError instead of returning string from structured_predict (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21036\"\u003e#21036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): remove incorrect per-node delete calls in index helpers (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21050\"\u003e#21050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 49 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21083\"\u003e#21083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 44 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21097\"\u003e#21097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenable llama-cloud\u0026gt;1.0 install (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21140\"\u003e#21140\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-fireworks [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etest(embeddings-fireworks): add test suite and fix docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20977\"\u003e#20977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.6.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 49 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21083\"\u003e#21083\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-indices-managed-llama-cloud [0.11.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: llama-cloud managed index and remove llamaparse reader (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21043\"\u003e#21043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenable llama-cloud\u0026gt;1.0 install (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21140\"\u003e#21140\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-azure-openai [0.5.3]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eazure openai responses support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21088\"\u003e#21088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix azure openai responses (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21099\"\u003e#21099\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.14.3]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003euse proper tool choice format in bedrock converse (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-cohere [0.8.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs(cohere): update first basic usage example to chat API (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21108\"\u003e#21108\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- 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/run-llama/llama_index/blob/main/CHANGELOG.md\"\u003ellama-index-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch3\u003ellama-index-core [0.14.19]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: pass \u003ccode\u003edelete_from_docstore\u003c/code\u003e parameter in \u003ccode\u003eBaseIndex.delete_ref_doc\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20990\"\u003e#20990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): preserve CTE names during schema prefixing in SQLDatabase.run_sql (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21028\"\u003e#21028\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): align sync retrieval dedup key with async (hash + ref_doc_id) (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21034\"\u003e#21034\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): raise ValueError instead of returning string from structured_predict (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21036\"\u003e#21036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(core): remove incorrect per-node delete calls in index helpers (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21050\"\u003e#21050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 49 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21083\"\u003e#21083\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore(deps): bump the uv group across 44 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21097\"\u003e#21097\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenable llama-cloud\u0026gt;1.0 install (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21140\"\u003e#21140\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-fireworks [0.5.2]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003etest(embeddings-fireworks): add test suite and fix docs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20977\"\u003e#20977\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-embeddings-upstage [0.6.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003echore(deps): bump the uv group across 49 directories with 1 update (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21083\"\u003e#21083\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-indices-managed-llama-cloud [0.11.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: llama-cloud managed index and remove llamaparse reader (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21043\"\u003e#21043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eenable llama-cloud\u0026gt;1.0 install (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21140\"\u003e#21140\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-azure-openai [0.5.3]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eazure openai responses support (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21088\"\u003e#21088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix azure openai responses (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21099\"\u003e#21099\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-bedrock-converse [0.14.3]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003euse proper tool choice format in bedrock converse (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21098\"\u003e#21098\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-cohere [0.8.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003edocs(cohere): update first basic usage example to chat API (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21108\"\u003e#21108\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-google-genai [0.9.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: gemini 3 default and temperature (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21060\"\u003e#21060\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix(google-genai): avoid mutating messages list in prepare_chat_params (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21141\"\u003e#21141\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-litellm [0.7.1]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for custom LLM provider in model kwargs (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/21095\"\u003e#21095\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ellama-index-llms-minimax [0.1.0]\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efeat: add MiniMax LLM provider integration with M2.7 default (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/pull/20955\"\u003e#20955\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/6a3269261d0df1ea8cc5adab8e16ffda6b166d58\"\u003e\u003ccode\u003e6a32692\u003c/code\u003e\u003c/a\u003e Release 0.14.19 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21147\"\u003e#21147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/1b21484406c09e50a6bc2727d2f0d45373af6fed\"\u003e\u003ccode\u003e1b21484\u003c/code\u003e\u003c/a\u003e enable llama-cloud\u0026gt;1.0 install (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21140\"\u003e#21140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/465959b10fdbf776a2a9482f7d2cb1652eab7c77\"\u003e\u003ccode\u003e465959b\u003c/code\u003e\u003c/a\u003e fix(google-genai): avoid mutating messages list in prepare_chat_params (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21141\"\u003e#21141\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c4e586301723d456c3999762c4a02e6a78f130b8\"\u003e\u003ccode\u003ec4e5863\u003c/code\u003e\u003c/a\u003e restrict new packages (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21139\"\u003e#21139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/ea76d2caee7433f0b598234c2154f12f463a5d6e\"\u003e\u003ccode\u003eea76d2c\u003c/code\u003e\u003c/a\u003e docs(cohere): update first basic usage example to chat API (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21108\"\u003e#21108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/58ee450dc074a663b69b9be6f37a972af65b9d15\"\u003e\u003ccode\u003e58ee450\u003c/code\u003e\u003c/a\u003e fix bedrock tests (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21129\"\u003e#21129\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/c346327e51eaf26c84a495f8bee1f9ea81542bc7\"\u003e\u003ccode\u003ec346327\u003c/code\u003e\u003c/a\u003e fix azure openai responses (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21099\"\u003e#21099\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/2b74a92798d543ded57e7d392451ad0d64a74f8c\"\u003e\u003ccode\u003e2b74a92\u003c/code\u003e\u003c/a\u003e fix(ollama): pass custom headers to auto-created clients (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21091\"\u003e#21091\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/edd23cc730feb78002c08ba8aade1628238c5428\"\u003e\u003ccode\u003eedd23cc\u003c/code\u003e\u003c/a\u003e chore(deps): bump tornado from 6.5.4 to 6.5.5 in /docs/api_reference in the p...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/run-llama/llama_index/commit/2cc2e465637c0900e8fd5cdea4bc70d0d965922c\"\u003e\u003ccode\u003e2cc2e46\u003c/code\u003e\u003c/a\u003e feat(llms/openai): Add support for Mini and Nano variants of GPT 5.4 (\u003ca href=\"https://redirect.github.com/run-llama/llama_index/issues/21065\"\u003e#21065\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/run-llama/llama_index/compare/v0.14.16...v0.14.19\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `llama-index-llms-openai` from 0.6.26 to 0.7.4\n\nUpdates `optuna` from 4.7.0 to 4.8.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/optuna/optuna/releases\"\u003eoptuna's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev4.8.0\u003c/h2\u003e\n\u003cp\u003eThis is the release note of \u003ca href=\"https://github.com/optuna/optuna/milestone/73?closed=1\"\u003ev4.8.0\u003c/a\u003e.\u003c/p\u003e\n\u003ch1\u003eHighlights\u003c/h1\u003e\n\u003ch2\u003eSupport for Constant Liar Strategy to GPSampler\u003c/h2\u003e\n\u003cp\u003eA constant liar strategy for efficient parallelization has been introduced to GPSampler by \u003ca href=\"https://github.com/sawa3030\"\u003e\u003ccode\u003e@​sawa3030\u003c/code\u003e\u003c/a\u003e. The figures (left: v4.7.0, right: v4.8.0) show that the overlap of search points has decreased, and a wider variety of solutions are being explored. The experiment uses \u003ccode\u003en_jobs = 10\u003c/code\u003e and \u003ccode\u003en_trials = 100\u003c/code\u003e. Currently, this feature supports single-objective and unconstrained optimization. Further extensions are coming in v4.9.0.\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003ev4.7.0\u003c/th\u003e\n\u003cth\u003ev4.8.0\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003c!-- raw HTML omitted --\u003e\u003c/td\u003e\n\u003ctd\u003e\u003c!-- raw HTML omitted --\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2\u003eSHAP-like beeswarm plot visualization\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/yasumorishima\"\u003e\u003ccode\u003e@​yasumorishima\u003c/code\u003e\u003c/a\u003e introduces the new visualization to OptunaHub. Please refer to \u003ca href=\"https://hub.optuna.org/visualization/plot_beeswarm/\"\u003ehttps://hub.optuna.org/visualization/plot_beeswarm/\u003c/a\u003e for details.\u003c/p\u003e\n\u003ch1\u003eNew Features\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Trackio Integration for Optuna (\u003ca href=\"https://redirect.github.com/optuna/optuna-integration/pull/259\"\u003eoptuna/optuna-integration#259\u003c/a\u003e, thanks \u003ca href=\"https://github.com/ParagEkbote\"\u003e\u003ccode\u003e@​ParagEkbote\u003c/code\u003e\u003c/a\u003e!)\u003c/li\u003e\n\u003cli\u003eAdd constant liar strategy to \u003ccode\u003eGPSampler\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6430\"\u003e#6430\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eEnhancements\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eValidate artifact_id in FileSystemArtifactStore to prevent path traversal (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6432\"\u003e#6432\u003c/a\u003e, thanks \u003ca href=\"https://github.com/RinZ27\"\u003e\u003ccode\u003e@​RinZ27\u003c/code\u003e\u003c/a\u003e!)\u003c/li\u003e\n\u003cli\u003efix: correct inverted warning message in pareto front plot (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6498\"\u003e#6498\u003c/a\u003e, thanks \u003ca href=\"https://github.com/aerosta\"\u003e\u003ccode\u003e@​aerosta\u003c/code\u003e\u003c/a\u003e!)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eBug Fixes\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eFix shared callback state in parallel OptunaSearchCV with LightGBM (\u003ca href=\"https://redirect.github.com/optuna/optuna-integration/pull/260\"\u003eoptuna/optuna-integration#260\u003c/a\u003e, thanks \u003ca href=\"https://github.com/Quant-Quasar\"\u003e\u003ccode\u003e@​Quant-Quasar\u003c/code\u003e\u003c/a\u003e!)\u003c/li\u003e\n\u003cli\u003eFix GPSampler crash when torch default device is CUDA (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6418\"\u003e#6418\u003c/a\u003e, thanks \u003ca href=\"https://github.com/VedantMadane\"\u003e\u003ccode\u003e@​VedantMadane\u003c/code\u003e\u003c/a\u003e!)\u003c/li\u003e\n\u003cli\u003eFix combination between \u003ccode\u003ePartialFixedSampler\u003c/code\u003e and \u003ccode\u003eTPESampler\u003c/code\u003e with group decomposed search space (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6428\"\u003e#6428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003eTPESampler\u003c/code\u003e with \u003ccode\u003emultivariate\u003c/code\u003e and \u003ccode\u003econstant_liar\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6505\"\u003e#6505\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eDocumentation\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eAdd documentation indicating that \u003ccode\u003eWilcoxonPruner\u003c/code\u003e requires \u003ccode\u003escipy\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6477\"\u003e#6477\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove version \u0026amp; language selectors in the sidebar of docs (\u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6482\"\u003e#6482\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eExamples\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003eApply black 26.1.0 (\u003ca href=\"https://redirect.github.com/optuna/optuna-examples/pull/348\"\u003eoptuna/optuna-examples#348\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove CI workflow for allennlp since no longer maintained (\u003ca href=\"https://redirect.github.com/optuna/optuna-examples/pull/351\"\u003eoptuna/optuna-examples#351\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReduce the frequency of scheduled CI triggers (\u003ca href=\"https://redirect.github.com/optuna/optuna-examples/pull/352\"\u003eoptuna/optuna-examples#352\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove the scheduled trigger for \u003ccode\u003eaim\u003c/code\u003e CI (\u003ca href=\"https://redirect.github.com/optuna/optuna-examples/pull/353\"\u003eoptuna/optuna-examples#353\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd constraint to \u003ccode\u003etransformers\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/optuna/optuna-examples/pull/355\"\u003eoptuna/optuna-examples#355\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003eTests\u003c/h1\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/689c62dbfc14f3476c51c14fda2e4f818ed2ee30\"\u003e\u003ccode\u003e689c62d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6509\"\u003e#6509\u003c/a\u003e from y0z/feature/bump-up-release480\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/9e2e0658ee6205c69993cf4204fabe6353249441\"\u003e\u003ccode\u003e9e2e065\u003c/code\u003e\u003c/a\u003e Bump up version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/54fe633c042be32f9a8c90b440e81c05406448d2\"\u003e\u003ccode\u003e54fe633\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6507\"\u003e#6507\u003c/a\u003e from sateeshkumarb/master\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/8efb8b4ffd749a95610e537a597ccaabde2e97db\"\u003e\u003ccode\u003e8efb8b4\u003c/code\u003e\u003c/a\u003e Move imports used for typecheck under TYPE_CHCKING\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/c0fcd2e4bba33783aa5e61e94be29dfc2cdcac0a\"\u003e\u003ccode\u003ec0fcd2e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6506\"\u003e#6506\u003c/a\u003e from acabellom/fix-fstring-file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/087cc9d85e431df96ac54bec1de992fac9260e80\"\u003e\u003ccode\u003e087cc9d\u003c/code\u003e\u003c/a\u003e Replace .format() with f-strings in 002_configurations.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/274f5b906accb795569550164f418dd3f40338c2\"\u003e\u003ccode\u003e274f5b9\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6505\"\u003e#6505\u003c/a\u003e from not522/fix-multivariate-constant_liar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/ce882f6a4e1b0ecc328373cf989cbb16debdf1f6\"\u003e\u003ccode\u003ece882f6\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6265\"\u003e#6265\u003c/a\u003e from not522/relative-use-cache\u0026quot;\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/f9e546d71f3fe515ee0df37ffe49d83f1f294c58\"\u003e\u003ccode\u003ef9e546d\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6498\"\u003e#6498\u003c/a\u003e from aerosta/fix/pareto-front-warning-message\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/optuna/optuna/commit/535215b3890f10b0cd96e6a22aaad58821769c3d\"\u003e\u003ccode\u003e535215b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/optuna/optuna/issues/6502\"\u003e#6502\u003c/a\u003e from nightcityblade/fix/issue-6029-patient-pruner\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/optuna/optuna/compare/v4.7.0...v4.8.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ipython` from 9.11.0 to 9.12.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/d9c6e314c3f31cb624cd443448e9094fdd49a1eb\"\u003e\u003ccode\u003ed9c6e31\u003c/code\u003e\u003c/a\u003e release 9.12.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/4c560d21ec7d6f72d2f150400fdab010790c81d7\"\u003e\u003ccode\u003e4c560d2\u003c/code\u003e\u003c/a\u003e security note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/bf954e4665168eeac39626164d76a646b683eaeb\"\u003e\u003ccode\u003ebf954e4\u003c/code\u003e\u003c/a\u003e Add release notes for 9.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/bfbdaaf71efae1d70ededaa0c0375400d7692d29\"\u003e\u003ccode\u003ebfbdaaf\u003c/code\u003e\u003c/a\u003e Merge remote-tracking branch 'ghsa/windows-programdata'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/8aae9a39bd6b44d4a798540a8d4863f73593ff57\"\u003e\u003ccode\u003e8aae9a3\u003c/code\u003e\u003c/a\u003e strip ansi for comparison\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/e1aadc2c607df59f4d7313c60257ef9d43a46d7a\"\u003e\u003ccode\u003ee1aadc2\u003c/code\u003e\u003c/a\u003e fix test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/f48986a01e14eaed3504c474725e98700deae298\"\u003e\u003ccode\u003ef48986a\u003c/code\u003e\u003c/a\u003e fix-test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/d9b5285f5cb06aba35d4c3842cee7d2795afed7c\"\u003e\u003ccode\u003ed9b5285\u003c/code\u003e\u003c/a\u003e try to group tb frames\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/323552ea59fab72dcb36e4960caaffc18d3c5dae\"\u003e\u003ccode\u003e323552e\u003c/code\u003e\u003c/a\u003e Interleave fast and slow traceback path\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipython/commit/22cd33275bfccae3666f9f54d7f90fab924e517b\"\u003e\u003ccode\u003e22cd332\u003c/code\u003e\u003c/a\u003e Fix missing space in pdb chained exceptions warning message\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/ipython/compare/9.11.0...9.12.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.5 to 0.15.8\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.8\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\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.8\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-26.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003eunnecessary-if\u003c/code\u003e (\u003ccode\u003eRUF050\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24114\"\u003e#24114\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003euseless-finally\u003c/code\u003e (\u003ccode\u003eRUF072\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24165\"\u003e#24165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] New rule \u003ccode\u003ef-string-percent-format\u003c/code\u003e (\u003ccode\u003eRUF073\u003c/code\u003e): warn when using \u003ccode\u003e%\u003c/code\u003e operator on an f-string (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24162\"\u003e#24162\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Recognize \u003ccode\u003efrozendict\u003c/code\u003e as a builtin for Python 3.15+ (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24100\"\u003e#24100\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] Use fully-qualified \u003ccode\u003eanyio.lowlevel\u003c/code\u003e import in autofix (\u003ccode\u003eASYNC115\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24166\"\u003e#24166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Check tuple arguments for partial paths in \u003ccode\u003eS607\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24080\"\u003e#24080\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] Skip \u003ccode\u003eundefined-name\u003c/code\u003e (\u003ccode\u003eF821\u003c/code\u003e) for conditionally deleted variables (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24088\"\u003e#24088\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eE501\u003c/code\u003e/\u003ccode\u003eW505\u003c/code\u003e/formatter: Exclude nested pragma comments from line width calculation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24071\"\u003e#24071\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003e%foo?\u003c/code\u003e parsing in IPython assignment expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24152\"\u003e#24152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eanalyze graph\u003c/code\u003e: resolve string imports that reference attributes, not just modules (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24058\"\u003e#24058\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eeradicate\u003c/code\u003e] ignore \u003ccode\u003ety: ignore\u003c/code\u003e comments in \u003ccode\u003eERA001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24192\"\u003e#24192\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Treat \u003ccode\u003esys.executable\u003c/code\u003e as trusted input in \u003ccode\u003eS603\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24106\"\u003e#24106\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-self\u003c/code\u003e] Recognize \u003ccode\u003eSelf\u003c/code\u003e annotation and \u003ccode\u003eself\u003c/code\u003e assignment in \u003ccode\u003eSLF001\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24144\"\u003e#24144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epyflakes\u003c/code\u003e] \u003ccode\u003eF507\u003c/code\u003e: Fix false negative for non-tuple RHS in \u003ccode\u003e%\u003c/code\u003e-formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24142\"\u003e#24142\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Parenthesize generator arguments in \u003ccode\u003eFURB142\u003c/code\u003e fixer (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24200\"\u003e#24200\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSpeed up diagnostic rendering (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24146\"\u003e#24146\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eWarn when Markdown files are skipped due to preview being disabled (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24150\"\u003e#24150\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eClarify \u003ccode\u003eextend-ignore\u003c/code\u003e and \u003ccode\u003eextend-select\u003c/code\u003e settings documentation (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24064\"\u003e#24064\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention AI policy in PR template (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24198\"\u003e#24198\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse trusted publishing for NPM packages (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24171\"\u003e#24171\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/bitloi\"\u003e\u003ccode\u003e@​bitloi\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Sim-hu\"\u003e\u003ccode\u003e@​Sim-hu\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mvanhorn\"\u003e\u003ccode\u003e@​mvanhorn\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/c2a8815842f9dc5d24ec19385eae0f1a7188b0d9\"\u003e\u003ccode\u003ec2a8815\u003c/code\u003e\u003c/a\u003e Release 0.15.8 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24217\"\u003e#24217\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d444d52e2b9cc8bc9a078c2bd4ff6ff993290209\"\u003e\u003ccode\u003ed444d52\u003c/code\u003e\u003c/a\u003e [ty] Infer lambda expressions with \u003ccode\u003eCallable\u003c/code\u003e type context (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/22633\"\u003e#22633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/9622285ed0081fc688149f6efca87f127d9b18dd\"\u003e\u003ccode\u003e9622285\u003c/code\u003e\u003c/a\u003e [ty] Autocomplete arguments if in arguments node (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24167\"\u003e#24167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/d81266252aaf0820346d55edbed79c4f25ba13d2\"\u003e\u003ccode\u003ed812662\u003c/code\u003e\u003c/a\u003e Use the \u003ccode\u003erelease\u003c/code\u003e environment in \u003ccode\u003epublish-docs\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24214\"\u003e#24214\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eda2355832f7a9c58aef6febd3e061dc9c87509a\"\u003e\u003ccode\u003eeda2355\u003c/code\u003e\u003c/a\u003e [ty] Show \u003ccode\u003eFinal\u003c/code\u003e source in final assignment diagnostic (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24194\"\u003e#24194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/929eb5238c82bfadad4549ff526f02efc0163dd0\"\u003e\u003ccode\u003e929eb52\u003c/code\u003e\u003c/a\u003e [ty] Enforce Final attribute assignment rules for annotated and augmented wri...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/34998be22ec3a77d398bbd55234ef8740f768329\"\u003e\u003ccode\u003e34998be\u003c/code\u003e\u003c/a\u003e [ty] Fix typo in comment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24211\"\u003e#24211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/560aca0b2828ee2ff1b4bcc5c5ef1ef4ced229d2\"\u003e\u003ccode\u003e560aca0\u003c/code\u003e\u003c/a\u003e [ty] Minor simplifications to some benchmark code (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24209\"\u003e#24209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/683bae512d03d3727a7bcdbc5a0170dafa049583\"\u003e\u003ccode\u003e683bae5\u003c/code\u003e\u003c/a\u003e [ty] Track non-terminal-call constraints in global scope (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23245\"\u003e#23245\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/4704c2a4ff3dde2fd29324346720e9516b4fe387\"\u003e\u003ccode\u003e4704c2a\u003c/code\u003e\u003c/a\u003e [ty] Remove unnecessary intermediate collection in `StaticClassLiteral::field...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.5...0.15.8\"\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.4 to 7.13.5\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.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2138: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2138\"\u003ecoveragepy/coveragepy#2138\u003c/a\u003e\n.. _issue 2141: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2141\"\u003ecoveragepy/coveragepy#2141\u003c/a\u003e\n.. _pull 2142: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2142\"\u003ecoveragepy/coveragepy#2142\u003c/a\u003e\n.. _issue 2145: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2145\"\u003ecoveragepy/coveragepy#2145\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-4:\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/c88da144eef8cf78424331e5cbbde3e002eef43f\"\u003e\u003ccode\u003ec88da14\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e2ac3e1ef644370101ff365acad3431d16076512\"\u003e\u003ccode\u003ee2ac3e1\u003c/code\u003e\u003c/a\u003e build: sample HTML shouldn't include the status.json file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/910f8f336541c2dcb4e9ec468144c7eb4a7779ac\"\u003e\u003ccode\u003e910f8f3\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3a4819c24d3d20cb2670b99141517812ffa3fab0\"\u003e\u003ccode\u003e3a4819c\u003c/code\u003e\u003c/a\u003e style: make workflows more uniform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2a53705f5fe588158b8a8d37ff3beee86388b9e4\"\u003e\u003ccode\u003e2a53705\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group across 1 directory with 4 updates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e7c878d201db819416b978150944d9a842d22b18\"\u003e\u003ccode\u003ee7c878d\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ab4db406a9c35acf977cf3ddb94a78d696b77bc5\"\u003e\u003ccode\u003eab4db40\u003c/code\u003e\u003c/a\u003e build: use --generate-hashes when pinning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a438753eef870441044cef588e29ce4b9a28adf1\"\u003e\u003ccode\u003ea438753\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/7b33457d2c6367dfd5a563239998b3980444e090\"\u003e\u003ccode\u003e7b33457\u003c/code\u003e\u003c/a\u003e refactor: some leftover pyupgrade 3.10 bits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2ff968db91a7cdafe6f6569ac7659a3a93a2da07\"\u003e\u003ccode\u003e2ff968d\u003c/code\u003e\u003c/a\u003e refactor: this type wasn't used anywhere\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.4...7.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-jupyter` from 0.25.1 to 0.26.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/blob/main/CHANGELOG.md\"\u003emkdocs-jupyter's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003emkdocs-jupyter Change Log\u003c/h1\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/8e47143281d76c492a335d031a36efd6ef013d08\"\u003e\u003ccode\u003e8e47143\u003c/code\u003e\u003c/a\u003e Release 0.26.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/6420d554676941f9cfbde7e12e7eaa04d6b9b0c7\"\u003e\u003ccode\u003e6420d55\u003c/code\u003e\u003c/a\u003e Build assets on release CI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/25a79b5fbd7a03be5398cd128b05d353dcf99646\"\u003e\u003ccode\u003e25a79b5\u003c/code\u003e\u003c/a\u003e Release 0.26.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/3b145c9e5d1f644c952ea11ec2f3331ceb0b6375\"\u003e\u003ccode\u003e3b145c9\u003c/code\u003e\u003c/a\u003e Add release workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/64f17aaf0229073791872d504b98306c97f01aa1\"\u003e\u003ccode\u003e64f17aa\u003c/code\u003e\u003c/a\u003e Add release workflow\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/136080e4176ee358d46b990657fa8a463aaa2859\"\u003e\u003ccode\u003e136080e\u003c/code\u003e\u003c/a\u003e fix: backtick-stripping regex in nb2md() (\u003ca href=\"https://redirect.github.com/danielfrg/mkdocs-jupyter/issues/268\"\u003e#268\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/2bac0a22ec111d633745efb319541a19c2f6a41f\"\u003e\u003ccode\u003e2bac0a2\u003c/code\u003e\u003c/a\u003e Cache added to avoid recompiling unchanged notebooks (\u003ca href=\"https://redirect.github.com/danielfrg/mkdocs-jupyter/issues/267\"\u003e#267\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/98f3dbb917f1ffca8e13a58ac383de24b4ad2905\"\u003e\u003ccode\u003e98f3dbb\u003c/code\u003e\u003c/a\u003e Allow \u003ccode\u003eipykernel\u0026gt;6,\u0026lt;8\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/danielfrg/mkdocs-jupyter/issues/253\"\u003e#253\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/72367246e1b8c0c709fbc80242619f71294387ef\"\u003e\u003ccode\u003e7236724\u003c/code\u003e\u003c/a\u003e html escape source text for clipboard copy (\u003ca href=\"https://redirect.github.com/danielfrg/mkdocs-jupyter/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/commit/7f977fdc0393f8ec5c279f4c6d5b5901eb0c2062\"\u003e\u003ccode\u003e7f977fd\u003c/code\u003e\u003c/a\u003e Check ignore patterns before reading files (\u003ca href=\"https://redirect.github.com/danielfrg/mkdocs-jupyter/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/danielfrg/mkdocs-jupyter/compare/0.25.1...0.26.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.5 to 9.7.6\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.6\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMaterial for MkDocs is in maintenance mode\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGoing forward, the Material for MkDocs team focuses on \u003ca href=\"https://zensical.org\"\u003eZensical\u003c/a\u003e, a next-gen static site generator built from first principles. We will provide critical bug fixes and security updates for Material for MkDocs until November 2026.\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\u003eAutomatically disable MkDocs 2.0 warning for forks of MkDocs\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/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.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\nunsustainable to maintain and represent architectural dead ends. They are\nprovided as-is without ongoing support.\u003c/p\u003e\n\u003cp\u003eChanges:\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/6c52ed6289b171a153875491f059a94819ec3e10\"\u003e\u003ccode\u003e6c52ed6\u003c/code\u003e\u003c/a\u003e Prepare 9.7.6 release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/51d9b76636431814df924bcda27485b16023978b\"\u003e\u003ccode\u003e51d9b76\u003c/code\u003e\u003c/a\u003e Automatically disable MkDocs 2.0 warning for forks of MkDocs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/squidfunk/mkdocs-material/commit/6f9a48b4048650341a654d9757da57fc1e3e323d\"\u003e\u003ccode\u003e6f9a48b\u003c/code\u003e\u003c/a\u003e Updated links\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/squidfunk/mkdocs-material/compare/9.7.5...9.7.6\"\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/plugboard-dev/plugboard/pull/238","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/plugboard-dev%2Fplugboard/issues/238","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/238/packages"}},{"old_version":"1.1.4","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-03-26T16:26:29.000Z","version_change":"1.1.4 → 1.6.0","issue":{"uuid":"4145478169","node_id":"PR_kwDOKP4Fis7NyLR7","number":574,"state":"open","title":"Bump pytest-env from 1.1.4 to 1.6.0","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-26T16:26:29.000Z","updated_at":"2026-04-14T22:59:12.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","packages":[{"name":"pytest-env","old_version":"1.1.4","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pytest-env](https://github.com/pytest-dev/pytest-env) from 1.1.4 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.3.2\u003c/h2\u003e\n\u003cp\u003eNo release notes provided.\u003c/p\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🔧 build(type): migrate from mypy to ty by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/192\"\u003epytest-dev/pytest-env#192\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.1.4...1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pytest-env\u0026package-manager=uv\u0026previous-version=1.1.4\u0026new-version=1.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot 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/allenai/olmo-api/pull/574","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/allenai%2Folmo-api/issues/574","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/574/packages"}},{"old_version":"1.3.2","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-03-23T23:38:13.000Z","version_change":"1.3.2 → 1.6.0","issue":{"uuid":"4124319886","node_id":"PR_kwDOMFeY887M1vyH","number":163,"state":"open","title":"python-deps(deps): bump the python-dependencies group across 1 directory with 23 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":["dependabot[bot]"],"locked":false,"comments_count":5,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-23T23:38:13.000Z","updated_at":"2026-03-31T00:12:11.213Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"python-deps(deps): bump","group_name":"python-dependencies","update_count":23,"packages":[{"name":"black","old_version":"26.1.0","new_version":"26.3.1","repository_url":"https://github.com/psf/black"},{"name":"codespell","old_version":"2.4.1","new_version":"2.4.2","repository_url":"https://github.com/codespell-project/codespell"},{"name":"griffe","old_version":"2.0.0","new_version":"2.0.1","repository_url":"https://github.com/mkdocstrings/griffe"},{"name":"mkdocs-gen-files","old_version":"0.6.0","new_version":"0.6.1","repository_url":"https://github.com/oprypin/mkdocs-gen-files"},{"name":"mkdocs-literate-nav","old_version":"0.6.2","new_version":"0.6.3","repository_url":"https://github.com/oprypin/mkdocs-literate-nav"},{"name":"mkdocs-section-index","old_version":"0.3.10","new_version":"0.3.11","repository_url":"https://github.com/oprypin/mkdocs-section-index"},{"name":"mkdocstrings-python","old_version":"2.0.2","new_version":"2.0.3","repository_url":"https://github.com/mkdocstrings/python"},{"name":"coverage","old_version":"7.13.4","new_version":"7.13.5","repository_url":"https://github.com/coveragepy/coveragepy"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.3.2","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"certifi","old_version":"2026.1.4","new_version":"2026.2.25","repository_url":"https://github.com/certifi/python-certifi"},{"name":"chardet","old_version":"5.2.0","new_version":"7.2.0","repository_url":"https://github.com/chardet/chardet"},{"name":"charset-normalizer","old_version":"3.4.4","new_version":"3.4.6","repository_url":"https://github.com/jawah/charset_normalizer"}],"path":null,"ecosystem":"pip"},"body":"Updates the requirements on [pylint](https://github.com/pylint-dev/pylint), [black](https://github.com/psf/black), [codespell](https://github.com/codespell-project/codespell), [griffe](https://github.com/mkdocstrings/griffe), [mkdocs-gen-files](https://github.com/oprypin/mkdocs-gen-files), [mkdocs-literate-nav](https://github.com/oprypin/mkdocs-literate-nav), [mkdocs-section-index](https://github.com/oprypin/mkdocs-section-index), [mkdocstrings-python](https://github.com/mkdocstrings/python), [coverage](https://github.com/coveragepy/coveragepy), [pytest-cov](https://github.com/pytest-dev/pytest-cov), [pytest-env](https://github.com/pytest-dev/pytest-env), [certifi](https://github.com/certifi/python-certifi), [chardet](https://github.com/chardet/chardet), [charset-normalizer](https://github.com/jawah/charset_normalizer), [python-dotenv](https://github.com/theskumar/python-dotenv), [pytz](https://github.com/stub42/pytz), [setuptools](https://github.com/pypa/setuptools), griffecli, griffelib, [mkdocs-get-deps](https://github.com/mkdocs/get-deps), [platformdirs](https://github.com/tox-dev/platformdirs), [pydantic-core](https://github.com/pydantic/pydantic-core) and [typeguard](https://github.com/agronholm/typeguard) to permit the latest version.\nUpdates `pylint` to 4.0.5\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/88e1ab7545a4af4aea15c305a154c164a95ab842\"\u003e\u003ccode\u003e88e1ab7\u003c/code\u003e\u003c/a\u003e Bump pylint to 4.0.5, update changelog (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10860\"\u003e#10860\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/d96d489a1743d32b6bfa53fc0f69a4333209a146\"\u003e\u003ccode\u003ed96d489\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Relax isort version constraint to allow isort 8 ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/0b08ccb014c265700f244a885bdcbdfa3a03de46\"\u003e\u003ccode\u003e0b08ccb\u003c/code\u003e\u003c/a\u003e Fix dynamic color mapping for \u0026quot;fail-on\u0026quot; messages when using multiple reporter...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/154dba43276e8232a2e1cb8f90bfcc63886f3460\"\u003e\u003ccode\u003e154dba4\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix FP for \u003ccode\u003einvalid-name\u003c/code\u003e with \u003ccode\u003etyping.Final\u003c/code\u003e on...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/7b73bfdedf275935b9c5b43a6aeda5cc648b4847\"\u003e\u003ccode\u003e7b73bfd\u003c/code\u003e\u003c/a\u003e Disable unspecified-encoding for py-version above Python 3.15 (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/10800\"\u003e#10800\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/4cc98be8b7786dbc6692493fe9cedb8585af5518\"\u003e\u003ccode\u003e4cc98be\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix setting options for import order checker (\u003ca href=\"https://redirect.github.com/pylint-dev/pylint/issues/1\"\u003e#1\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f0d30a27b510d69f846e3aaa0054cf0a1412923c\"\u003e\u003ccode\u003ef0d30a2\u003c/code\u003e\u003c/a\u003e Sync astroid version with requirements file again\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/38bdf024648724e6aea017e62d3b57cb44097ec3\"\u003e\u003ccode\u003e38bdf02\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Fix \u003ccode\u003elogging-unsupported-format\u003c/code\u003e when logging ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pylint-dev/pylint/commit/f08c33ae3e691eed868e49c0d15270dc6e6a0d6c\"\u003e\u003ccode\u003ef08c33a\u003c/code\u003e\u003c/a\u003e [Backport maintenance/4.0.x] Properly detect \u003ccode\u003eself.fail()\u003c/code\u003e as a terminating...\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pylint-dev/pylint/compare/v4.0.4...v4.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `black` from 26.1.0 to 26.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.3.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't double-decode input, causing non-UTF-8 files to be corrupted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4964\"\u003e#4964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on standalone comment in lambda default arguments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4993\"\u003e#4993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve parentheses when \u003ccode\u003e# type: ignore\u003c/code\u003e comments would be merged with other\ncomments on the same line, preventing AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/4888\"\u003e#4888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eif\u003c/code\u003e guards in \u003ccode\u003ecase\u003c/code\u003e blocks were incorrectly split when the pattern had\na trailing comma (\u003ca href=\"https://redirect.github.com/psf/black/issues/4884\"\u003e#4884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003estring_processing\u003c/code\u003e crashing on unassigned long string literals with trailing\ncommas (one-item tuples) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4929\"\u003e#4929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSimplify implementation of the power operator \u0026quot;hugging\u0026quot; logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4918\"\u003e#4918\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix shutdown errors in PyInstaller builds on macOS by disabling multiprocessing in\nfrozen environments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4930\"\u003e#4930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce winloop for windows as an alternative to uvloop (\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecated function \u003ccode\u003euvloop.install()\u003c/code\u003e in favor of \u003ccode\u003euvloop.new_event_loop()\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003emaybe_install_uvloop\u003c/code\u003e function to \u003ccode\u003emaybe_use_uvloop\u003c/code\u003e to simplify loop\ninstallation and creation of either a uvloop/winloop evenloop or default eventloop\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.3.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't double-decode input, causing non-UTF-8 files to be corrupted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4964\"\u003e#4964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on standalone comment in lambda default arguments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4993\"\u003e#4993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve parentheses when \u003ccode\u003e# type: ignore\u003c/code\u003e comments would be merged with other\ncomments on the same line, preventing AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/4888\"\u003e#4888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eif\u003c/code\u003e guards in \u003ccode\u003ecase\u003c/code\u003e blocks were incorrectly split when the pattern had\na trailing comma (\u003ca href=\"https://redirect.github.com/psf/black/issues/4884\"\u003e#4884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003estring_processing\u003c/code\u003e crashing on unassigned long string literals with trailing\ncommas (one-item tuples) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4929\"\u003e#4929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSimplify implementation of the power operator \u0026quot;hugging\u0026quot; logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4918\"\u003e#4918\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix shutdown errors in PyInstaller builds on macOS by disabling multiprocessing in\nfrozen environments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4930\"\u003e#4930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce winloop for windows as an alternative to uvloop (\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecated function \u003ccode\u003euvloop.install()\u003c/code\u003e in favor of \u003ccode\u003euvloop.new_event_loop()\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003emaybe_install_uvloop\u003c/code\u003e function to \u003ccode\u003emaybe_use_uvloop\u003c/code\u003e to simplify loop\ninstallation and creation of either a uvloop/winloop eventloop or default eventloop\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c6755bb741b6481d6b3d3bb563c83fa060db96c9\"\u003e\u003ccode\u003ec6755bb\u003c/code\u003e\u003c/a\u003e Prepare release 26.3.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5046\"\u003e#5046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69973fd6950985fbeb1090d96da717dc4d8380b0\"\u003e\u003ccode\u003e69973fd\u003c/code\u003e\u003c/a\u003e Harden blackd browser-facing request handling (\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4937fe6cf241139ddbfc16b0bdbb5b422798909d\"\u003e\u003ccode\u003e4937fe6\u003c/code\u003e\u003c/a\u003e Fix some shenanigans with the cache file and IPython (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2e641d174469c505d5ae905e75d4c769597e681f\"\u003e\u003ccode\u003e2e641d1\u003c/code\u003e\u003c/a\u003e docs: remove outdated Black Playground references (\u003ca href=\"https://redirect.github.com/psf/black/issues/5044\"\u003e#5044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c014b22a2d5e0632587b47b81151658bddfa0b88\"\u003e\u003ccode\u003ec014b22\u003c/code\u003e\u003c/a\u003e Remove unused internal code (\u003ca href=\"https://redirect.github.com/psf/black/issues/5041\"\u003e#5041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0dae20b2d009f2f03de8696d06b0c947d3abafc9\"\u003e\u003ccode\u003e0dae20b\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5036\"\u003e#5036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c5c1cbddd92cecb554ac2a77a24139dd76831030\"\u003e\u003ccode\u003ec5c1cbd\u003c/code\u003e\u003c/a\u003e Minor release patches (\u003ca href=\"https://redirect.github.com/psf/black/issues/5035\"\u003e#5035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7e5a828c37d71b6a6666e28eed444816def6a8f4\"\u003e\u003ccode\u003e7e5a828\u003c/code\u003e\u003c/a\u003e docs: clarify relationship between Black style and PEP 8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5025\"\u003e#5025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69705deb8776e7c5e585668da106d1abe2cb8d77\"\u003e\u003ccode\u003e69705de\u003c/code\u003e\u003c/a\u003e docs: add clearer pyproject configuration guidance (\u003ca href=\"https://redirect.github.com/psf/black/issues/5026\"\u003e#5026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/35ea67920b7f6ac8e09be1c47278752b1e827f76\"\u003e\u003ccode\u003e35ea679\u003c/code\u003e\u003c/a\u003e Prepare release 26.3.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5032\"\u003e#5032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.1.0...26.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `codespell` from 2.4.1 to 2.4.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/codespell-project/codespell/releases\"\u003ecodespell's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.4.2\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed compatibility with chardet 7+\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix and clarify cases in ignore patterns by \u003ca href=\"https://github.com/DanielYang59\"\u003e\u003ccode\u003e@​DanielYang59\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3583\"\u003ecodespell-project/codespell#3583\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ecodespell-private.yml: Do not codespell digital signature files by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3623\"\u003ecodespell-project/codespell#3623\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3634\"\u003ecodespell-project/codespell#3634\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003enumbes-\u0026gt;numbers and numbesr-\u0026gt;numbers by \u003ca href=\"https://github.com/skshetry\"\u003e\u003ccode\u003e@​skshetry\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3635\"\u003ecodespell-project/codespell#3635\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd spelling corrections for disclose and variables. by \u003ca href=\"https://github.com/cfi-gb\"\u003e\u003ccode\u003e@​cfi-gb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3622\"\u003ecodespell-project/codespell#3622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd spelling correction for Vulnererability and variants. by \u003ca href=\"https://github.com/cfi-gb\"\u003e\u003ccode\u003e@​cfi-gb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3625\"\u003ecodespell-project/codespell#3625\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove lets-\u0026gt;let's by \u003ca href=\"https://github.com/Piedone\"\u003e\u003ccode\u003e@​Piedone\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3633\"\u003ecodespell-project/codespell#3633\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd corrections for \u0026quot;dictate\u0026quot; by \u003ca href=\"https://github.com/jdufresne\"\u003e\u003ccode\u003e@​jdufresne\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3636\"\u003ecodespell-project/codespell#3636\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd specicification (and pl) typo by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3639\"\u003ecodespell-project/codespell#3639\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;blueish\u0026quot; correction by \u003ca href=\"https://github.com/hadess\"\u003e\u003ccode\u003e@​hadess\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3510\"\u003ecodespell-project/codespell#3510\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u0026quot;lighting\u0026quot; as an option to fix \u0026quot;lighning\u0026quot; by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3648\"\u003ecodespell-project/codespell#3648\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRevert adding \u003ccode\u003elien\u003c/code\u003e to the rare dictionary  by \u003ca href=\"https://github.com/nikolaik\"\u003e\u003ccode\u003e@​nikolaik\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3631\"\u003ecodespell-project/codespell#3631\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u0026quot;ane\u0026quot; could have been \u0026quot;one\u0026quot; by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3645\"\u003ecodespell-project/codespell#3645\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd spelling correction for \u0026quot;priort\u0026quot; by \u003ca href=\"https://github.com/cfi-gb\"\u003e\u003ccode\u003e@​cfi-gb\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3647\"\u003ecodespell-project/codespell#3647\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRemove \u0026quot;fix\u0026quot; of \u0026quot;deques\u0026quot; - it is quite legit by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3649\"\u003ecodespell-project/codespell#3649\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSeveral new suggestions by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3621\"\u003ecodespell-project/codespell#3621\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd proposal constraints to containts by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3652\"\u003ecodespell-project/codespell#3652\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdditions dleay,infp,practive,utiliy by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3643\"\u003ecodespell-project/codespell#3643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd calncelled and its variations by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3650\"\u003ecodespell-project/codespell#3650\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse raw strings for regex by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3654\"\u003ecodespell-project/codespell#3654\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAllow multiple spaces before codespell:ignore by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3653\"\u003ecodespell-project/codespell#3653\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded correction from \u003ccode\u003etimeour\u003c/code\u003e to \u003ccode\u003etimeout\u003c/code\u003e by \u003ca href=\"https://github.com/jamesbraza\"\u003e\u003ccode\u003e@​jamesbraza\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3656\"\u003ecodespell-project/codespell#3656\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd typos found in various software projects by \u003ca href=\"https://github.com/luzpaz\"\u003e\u003ccode\u003e@​luzpaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3640\"\u003ecodespell-project/codespell#3640\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3659\"\u003ecodespell-project/codespell#3659\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd codespell suggestions for enabke and friends by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3657\"\u003ecodespell-project/codespell#3657\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEND: add \u0026quot;queues\u0026quot; (plural from queue) as possible fix for ques by \u003ca href=\"https://github.com/yarikoptic\"\u003e\u003ccode\u003e@​yarikoptic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3591\"\u003ecodespell-project/codespell#3591\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eagreegate, lesda, realod, colouer by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3665\"\u003ecodespell-project/codespell#3665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate pre-commit version in documentation by \u003ca href=\"https://github.com/prchoward\"\u003e\u003ccode\u003e@​prchoward\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3666\"\u003ecodespell-project/codespell#3666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMAINT: Rename CI file and run name by \u003ca href=\"https://github.com/larsoner\"\u003e\u003ccode\u003e@​larsoner\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3667\"\u003ecodespell-project/codespell#3667\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003epreoccuption-\u0026gt;preoccupation; occuption-\u0026gt;occupation by \u003ca href=\"https://github.com/TheGiraffe3\"\u003e\u003ccode\u003e@​TheGiraffe3\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3668\"\u003ecodespell-project/codespell#3668\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSuggestions for: checkto, diminsion, waitfor by \u003ca href=\"https://github.com/mdeweerd\"\u003e\u003ccode\u003e@​mdeweerd\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3670\"\u003ecodespell-project/codespell#3670\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTypos found in sigstore-python by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3664\"\u003ecodespell-project/codespell#3664\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eusgin-\u0026gt;using by \u003ca href=\"https://github.com/ydah\"\u003e\u003ccode\u003e@​ydah\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3672\"\u003ecodespell-project/codespell#3672\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd typos found in various software projects by \u003ca href=\"https://github.com/luzpaz\"\u003e\u003ccode\u003e@​luzpaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3669\"\u003ecodespell-project/codespell#3669\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd coered -\u0026gt; coerced by \u003ca href=\"https://github.com/effigies\"\u003e\u003ccode\u003e@​effigies\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3680\"\u003ecodespell-project/codespell#3680\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebackwward(s)-\u0026gt;backward(s), onwward(s)-\u0026gt;onward(s) by \u003ca href=\"https://github.com/cjwatson\"\u003e\u003ccode\u003e@​cjwatson\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3682\"\u003ecodespell-project/codespell#3682\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3685\"\u003ecodespell-project/codespell#3685\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003etelemetery-\u0026gt;telemetry by \u003ca href=\"https://github.com/august-soderberg\"\u003e\u003ccode\u003e@​august-soderberg\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3686\"\u003ecodespell-project/codespell#3686\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd hexedacimal and similar typos by \u003ca href=\"https://github.com/Akuli\"\u003e\u003ccode\u003e@​Akuli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3692\"\u003ecodespell-project/codespell#3692\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd rounted-\u0026gt;routed, rounded and friends by \u003ca href=\"https://github.com/peternewman\"\u003e\u003ccode\u003e@​peternewman\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3693\"\u003ecodespell-project/codespell#3693\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd symmectric and similar typos by \u003ca href=\"https://github.com/Akuli\"\u003e\u003ccode\u003e@​Akuli\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3694\"\u003ecodespell-project/codespell#3694\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix CI on Windows: pip upgrade pip by \u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/codespell-project/codespell/pull/3698\"\u003ecodespell-project/codespell#3698\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/2ccb47ff45ad361a21071a7eedda4c37e6ae8c5a\"\u003e\u003ccode\u003e2ccb47f\u003c/code\u003e\u003c/a\u003e Compat with chardet 7 (\u003ca href=\"https://redirect.github.com/codespell-project/codespell/issues/3886\"\u003e#3886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/4ec53bf6a3e510c64900d5ee838abd99d49b2910\"\u003e\u003ccode\u003e4ec53bf\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/2a4acba3f282f1b5ccb7ad8b57bc991810663a44\"\u003e\u003ccode\u003e2a4acba\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 7 to 8\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/be17cacc96a5ee3f014e048f5962cfdb7145e096\"\u003e\u003ccode\u003ebe17cac\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 6 to 7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/04a071280d56148cab14249ccc8d4181c0066b3c\"\u003e\u003ccode\u003e04a0712\u003c/code\u003e\u003c/a\u003e Bump ruff (\u003ca href=\"https://redirect.github.com/codespell-project/codespell/issues/3879\"\u003e#3879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/583d8796d92eb58e15072db03e5b756be45f638a\"\u003e\u003ccode\u003e583d879\u003c/code\u003e\u003c/a\u003e avoide-\u0026gt;avoid, avoided, avoids,\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/1f59f34d7c6d1642fdb325d9dfa49cf9eb5f692a\"\u003e\u003ccode\u003e1f59f34\u003c/code\u003e\u003c/a\u003e Add correction for 'foudation' to 'foundation'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/e047fdafb8620b08a86349014487886bcd9c2205\"\u003e\u003ccode\u003ee047fda\u003c/code\u003e\u003c/a\u003e Add spelling correction for gather and variants.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/b5cd66de14b8f65b0f45fabbe1c89bd69ea60939\"\u003e\u003ccode\u003eb5cd66d\u003c/code\u003e\u003c/a\u003e respondant-\u0026gt;respondent\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/codespell-project/codespell/commit/92125a3814fa6e86cd2055385916ce5186d3e5df\"\u003e\u003ccode\u003e92125a3\u003c/code\u003e\u003c/a\u003e Add detection of ivoice and variants.\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/codespell-project/codespell/compare/v2.4.1...v2.4.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `griffe` from 2.0.0 to 2.0.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/griffe/releases\"\u003egriffe's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.0.1\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/releases/tag/2.0.1\"\u003e2.0.1\u003c/a\u003e - 2026-03-23\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/compare/2.0.0...2.0.1\"\u003eCompare with 2.0.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting type parameters through aliases (\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/75c1236078bdb38ccaf95330d3c635f8db3806b7\"\u003e75c1236\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/griffe/issues/449\"\u003eIssue-449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/griffe/blob/main/CHANGELOG.md\"\u003egriffe's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/releases/tag/2.0.1\"\u003e2.0.1\u003c/a\u003e - 2026-03-23\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/compare/2.0.0...2.0.1\"\u003eCompare with 2.0.0\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting type parameters through aliases (\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/75c1236078bdb38ccaf95330d3c635f8db3806b7\"\u003e75c1236\u003c/a\u003e by Timothée Mazzucotelli). \u003ca href=\"https://redirect.github.com/mkdocstrings/griffe/issues/449\"\u003eIssue-449\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/8df2c4061d01f8c7a3ded03d63505fef0052092a\"\u003e\u003ccode\u003e8df2c40\u003c/code\u003e\u003c/a\u003e chore: Prepare release 2.0.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/1236192681a9492133efd01bcd77d018fa3d4630\"\u003e\u003ccode\u003e1236192\u003c/code\u003e\u003c/a\u003e chore: Update ty comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/75c1236078bdb38ccaf95330d3c635f8db3806b7\"\u003e\u003ccode\u003e75c1236\u003c/code\u003e\u003c/a\u003e fix: Allow setting type parameters through aliases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/862a891818d7182204e213ef216b6b5f3c6dc106\"\u003e\u003ccode\u003e862a891\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/2666aaabe9b93f70c3dcde46ac284251a065a5c1\"\u003e\u003ccode\u003e2666aaa\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/e30c32143149ab124f3ade14523201b80a9cbfd9\"\u003e\u003ccode\u003ee30c321\u003c/code\u003e\u003c/a\u003e style: Format code for Python 3.10\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/051394aa21cd0884a7480a6892c07d62bf0ca451\"\u003e\u003ccode\u003e051394a\u003c/code\u003e\u003c/a\u003e chore: Add back title to type-check duty\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/5f662d4658a63ebf8ab25fe124747b4725f34617\"\u003e\u003ccode\u003e5f662d4\u003c/code\u003e\u003c/a\u003e ci: Update Ruff's config (Python target, output format)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/19775450e72c2c6291e0e88ebbd7c0de1d3c99d6\"\u003e\u003ccode\u003e1977545\u003c/code\u003e\u003c/a\u003e ci: Type-check with ty\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/griffe/commit/8efecdc98a92b3f4d30d8af0fd93ce4acf90d76d\"\u003e\u003ccode\u003e8efecdc\u003c/code\u003e\u003c/a\u003e chore: Template upgrade\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/mkdocstrings/griffe/compare/2.0.0...2.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-gen-files` from 0.6.0 to 0.6.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/releases\"\u003emkdocs-gen-files's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/pull/42\"\u003eoprypin/mkdocs-gen-files#42\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.1\"\u003ehttps://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.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/oprypin/mkdocs-gen-files/commit/05c38bb46caa8d6550da54e291bddc59c4610d07\"\u003e\u003ccode\u003e05c38bb\u003c/code\u003e\u003c/a\u003e v0.6.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/d2850806e39047a7ad4ca7c415adb56d3a26b2cc\"\u003e\u003ccode\u003ed285080\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-gen-files/issues/42\"\u003e#42\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/commit/dcc896d45a2c31ddbf8c78317020647631ba38cd\"\u003e\u003ccode\u003edcc896d\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-gen-files/compare/v0.6.0...v0.6.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-literate-nav` from 0.6.2 to 0.6.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/releases\"\u003emkdocs-literate-nav's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.6.3\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/pull/39\"\u003eoprypin/mkdocs-literate-nav#39\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\u003ehttps://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\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/oprypin/mkdocs-literate-nav/commit/b91268c263f61e38a7e27f77ccf38ec287e0c0b5\"\u003e\u003ccode\u003eb91268c\u003c/code\u003e\u003c/a\u003e v0.6.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/cee9ec49a1523036081378a39bda9fa014432526\"\u003e\u003ccode\u003ecee9ec4\u003c/code\u003e\u003c/a\u003e Exclude properdocs when testing minimal dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/ea523f5864f59fb7939f84cd4400df67280ad52c\"\u003e\u003ccode\u003eea523f5\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-literate-nav/issues/39\"\u003e#39\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/commit/258b15a15a3e25cedc816d0a5a971acfdb86541e\"\u003e\u003ccode\u003e258b15a\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-literate-nav/compare/v0.6.2...v0.6.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocs-section-index` from 0.3.10 to 0.3.11\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/releases\"\u003emkdocs-section-index's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.3.11\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eWarn when this plugin is being used from the mkdocs executable\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/pull/27\"\u003eoprypin/mkdocs-section-index#27\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eApologies for the inconvenience. We are starting a community continuation of MkDocs under a new name \u003cstrong\u003eProperDocs\u003c/strong\u003e, and plugins are our main hope regarding how we can spread the word.\nSee \u003ca href=\"https://github.com/ProperDocs/properdocs/discussions/33\"\u003ehttps://github.com/ProperDocs/properdocs/discussions/33\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eFull Changelog: \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ehttps://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\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/oprypin/mkdocs-section-index/commit/a8235f6f8eb5927b966a3aaea8afe5fa161ecece\"\u003e\u003ccode\u003ea8235f6\u003c/code\u003e\u003c/a\u003e v0.3.11\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/ac66dfda53834d79ce8e0af6f340dddd7cde2bf9\"\u003e\u003ccode\u003eac66dfd\u003c/code\u003e\u003c/a\u003e Warn when this plugin is being used from the mkdocs executable (\u003ca href=\"https://redirect.github.com/oprypin/mkdocs-section-index/issues/27\"\u003e#27\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/oprypin/mkdocs-section-index/commit/32866cd83993ee3eefbac0fcc13911692796d8f6\"\u003e\u003ccode\u003e32866cd\u003c/code\u003e\u003c/a\u003e Drop testing under Python 3.9 to fix CI\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/oprypin/mkdocs-section-index/compare/v0.3.10...v0.3.11\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mkdocstrings-python` from 2.0.2 to 2.0.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/python/releases\"\u003emkdocstrings-python's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.0.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.3\"\u003e2.0.3\u003c/a\u003e - 2026-02-20\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.2...2.0.3\"\u003eCompare with 2.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDepend on griffelib instead of griffe (\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e770a5f6\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/mkdocstrings/python/blob/main/CHANGELOG.md\"\u003emkdocstrings-python's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/mkdocstrings/python/releases/tag/2.0.3\"\u003e2.0.3\u003c/a\u003e - 2026-02-20\u003c/h2\u003e\n\u003cp\u003e\u003c!-- raw HTML omitted --\u003e\u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.2...2.0.3\"\u003eCompare with 2.0.2\u003c/a\u003e\u003c!-- raw HTML omitted --\u003e\u003c/p\u003e\n\u003ch3\u003eBuild\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDepend on griffelib instead of griffe (\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e770a5f6\u003c/a\u003e by Timothée Mazzucotelli).\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/a0b99c5ed6ac44b627e2e57375e474e0939ea02e\"\u003e\u003ccode\u003ea0b99c5\u003c/code\u003e\u003c/a\u003e chore: Prepare release 2.0.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/770a5f69d801f24f0b36d1e671a540196e06f710\"\u003e\u003ccode\u003e770a5f6\u003c/code\u003e\u003c/a\u003e build: Depend on griffelib instead of griffe\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/bf8caaf76efcfe3572b40f4129117ed32bdc2ee7\"\u003e\u003ccode\u003ebf8caaf\u003c/code\u003e\u003c/a\u003e Merge branch 'main' of github.com:mkdocstrings/python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/95f58aa56a78df160fc66892815cb4c49d291044\"\u003e\u003ccode\u003e95f58aa\u003c/code\u003e\u003c/a\u003e ci: Minor lint fixes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mkdocstrings/python/commit/186d6cfac78dbc96bcb753473ceb68db5fa46f73\"\u003e\u003ccode\u003e186d6cf\u003c/code\u003e\u003c/a\u003e chore: Update sponsors section in README\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/mkdocstrings/python/compare/2.0.2...2.0.3\"\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.4 to 7.13.5\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.13.5 — 2026-03-17\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix: \u003ccode\u003eissue 2138\u003c/code\u003e_ describes a memory leak that happened when repeatedly\nusing the Coverage API with in-memory data. This is now fixed.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the markdown-formatted coverage report didn't fully escape special\ncharacters in file paths (\u003ccode\u003eissue 2141\u003c/code\u003e\u003cem\u003e). This would be very unlikely to\ncause a problem, but now it's done properly, thanks to \u003ccode\u003eEllie Ayla \u0026lt;pull 2142_\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix: the C extension wouldn't build on VS2019, but now it does (\u003ccode\u003eissue 2145\u003c/code\u003e_).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _issue 2138: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2138\"\u003ecoveragepy/coveragepy#2138\u003c/a\u003e\n.. _issue 2141: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2141\"\u003ecoveragepy/coveragepy#2141\u003c/a\u003e\n.. _pull 2142: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/pull/2142\"\u003ecoveragepy/coveragepy#2142\u003c/a\u003e\n.. _issue 2145: \u003ca href=\"https://redirect.github.com/coveragepy/coveragepy/issues/2145\"\u003ecoveragepy/coveragepy#2145\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e.. _changes_7-13-4:\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/c88da144eef8cf78424331e5cbbde3e002eef43f\"\u003e\u003ccode\u003ec88da14\u003c/code\u003e\u003c/a\u003e docs: sample HTML for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e2ac3e1ef644370101ff365acad3431d16076512\"\u003e\u003ccode\u003ee2ac3e1\u003c/code\u003e\u003c/a\u003e build: sample HTML shouldn't include the status.json file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/910f8f336541c2dcb4e9ec468144c7eb4a7779ac\"\u003e\u003ccode\u003e910f8f3\u003c/code\u003e\u003c/a\u003e docs: prep for 7.13.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/3a4819c24d3d20cb2670b99141517812ffa3fab0\"\u003e\u003ccode\u003e3a4819c\u003c/code\u003e\u003c/a\u003e style: make workflows more uniform\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2a53705f5fe588158b8a8d37ff3beee86388b9e4\"\u003e\u003ccode\u003e2a53705\u003c/code\u003e\u003c/a\u003e chore: bump the action-dependencies group across 1 directory with 4 updates (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/e7c878d201db819416b978150944d9a842d22b18\"\u003e\u003ccode\u003ee7c878d\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/ab4db406a9c35acf977cf3ddb94a78d696b77bc5\"\u003e\u003ccode\u003eab4db40\u003c/code\u003e\u003c/a\u003e build: use --generate-hashes when pinning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/a438753eef870441044cef588e29ce4b9a28adf1\"\u003e\u003ccode\u003ea438753\u003c/code\u003e\u003c/a\u003e chore: make upgrade\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/7b33457d2c6367dfd5a563239998b3980444e090\"\u003e\u003ccode\u003e7b33457\u003c/code\u003e\u003c/a\u003e refactor: some leftover pyupgrade 3.10 bits\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coveragepy/coveragepy/commit/2ff968db91a7cdafe6f6569ac7659a3a93a2da07\"\u003e\u003ccode\u003e2ff968d\u003c/code\u003e\u003c/a\u003e refactor: this type wasn't used anywhere\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/coveragepy/coveragepy/compare/7.13.4...7.13.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.3.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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(plugin): add --pytest-env-verbose for debugging env assignments by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/199\"\u003epytest-dev/pytest-env#199\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.4.0...1.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.4.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(cli): add --envfile option for runtime environment switching by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/197\"\u003epytest-dev/pytest-env#197\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.3.2...1.4.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.3.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 `certifi` from 2026.1.4 to 2026.2.25\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/8571a4ba5205675107f9026d0008ad2d7a2778bf\"\u003e\u003ccode\u003e8571a4b\u003c/code\u003e\u003c/a\u003e 2026.02.25 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/395\"\u003e#395\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6f7de00579d292af565bbb8a947643219794eb6d\"\u003e\u003ccode\u003e6f7de00\u003c/code\u003e\u003c/a\u003e Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/390\"\u003e#390\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a1de59b15105cad768afed4f066b36171134f04a\"\u003e\u003ccode\u003ea1de59b\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 6.0.1 to 6.0.2 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/7f5ade5d8da615fd366e8de6a668271251c45d34\"\u003e\u003ccode\u003e7f5ade5\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 6.1.0 to 6.2.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/392\"\u003e#392\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2026.01.04...2026.02.25\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `chardet` from 5.2.0 to 7.2.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/chardet/chardet/releases\"\u003echardet's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003echardet 7.2.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003einclude_encodings\u003c/code\u003e and \u003ccode\u003eexclude_encodings\u003c/code\u003e parameters to \u003ccode\u003edetect()\u003c/code\u003e, \u003ccode\u003edetect_all()\u003c/code\u003e, and \u003ccode\u003eUniversalDetector\u003c/code\u003e — restrict or exclude specific encodings from the candidate set, with corresponding \u003ccode\u003e-i\u003c/code\u003e/\u003ccode\u003e--include-encodings\u003c/code\u003e and \u003ccode\u003e-x\u003c/code\u003e/\u003ccode\u003e--exclude-encodings\u003c/code\u003e CLI flags (\u003ca href=\"https://redirect.github.com/chardet/chardet/pull/343\"\u003e#343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eno_match_encoding\u003c/code\u003e (default \u003ccode\u003e\u0026quot;cp1252\u0026quot;\u003c/code\u003e) and \u003ccode\u003eempty_input_encoding\u003c/code\u003e (default \u003ccode\u003e\u0026quot;utf-8\u0026quot;\u003c/code\u003e) parameters — control which encoding is returned when no candidate survives the pipeline or the input is empty, with corresponding CLI flags (\u003ca href=\"https://redirect.github.com/chardet/chardet/pull/343\"\u003e#343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e-l\u003c/code\u003e/\u003ccode\u003e--language\u003c/code\u003e flag to \u003ccode\u003echardetect\u003c/code\u003e CLI — shows the detected language (ISO 639-1 code and English name) alongside the encoding (\u003ca href=\"https://redirect.github.com/chardet/chardet/pull/342\"\u003e#342\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed null-separated ASCII data being misdetected as UTF-16-BE (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/346\"\u003e#346\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/chardet/chardet/pull/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://chardet.readthedocs.io/en/latest/changelog.html\"\u003ehttps://chardet.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003echardet 7.1.0\u003c/h2\u003e\n\u003ch2\u003eFeatures\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded PEP 263 encoding declaration detection — \u003ccode\u003e# -*- coding: ... -*-\u003c/code\u003e and \u003ccode\u003e# coding=...\u003c/code\u003e declarations on lines 1–2 of Python source files are now recognized with confidence 0.95 (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/249\"\u003e#249\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echardet.universaldetector\u003c/code\u003e backward-compatibility stub so that \u003ccode\u003efrom chardet.universaldetector import UniversalDetector\u003c/code\u003e works with a deprecation warning (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/341\"\u003e#341\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFixes\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed false UTF-7 detection of ASCII text containing \u003ccode\u003e++\u003c/code\u003e or \u003ccode\u003e+word\u003c/code\u003e patterns (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/332\"\u003e#332\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed 0.5s startup cost on first \u003ccode\u003edetect()\u003c/code\u003e call — model norms are now computed during loading instead of lazily iterating 21M entries (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/333\"\u003e#333\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed undocumented encoding name changes between chardet 5.x and 7.0 — \u003ccode\u003edetect()\u003c/code\u003e now returns chardet 5.x-compatible names by default (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/338\"\u003e#338\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved ISO-2022-JP family detection — recognizes ESC sequences for ISO-2022-JP-2004 (JIS X 0213) and ISO-2022-JP-EXT (JIS X 0201 Kana)\u003c/li\u003e\n\u003cli\u003eFixed silent truncation of corrupt model data (\u003ccode\u003eiter_unpack\u003c/code\u003e yielded fewer tuples instead of raising)\u003c/li\u003e\n\u003cli\u003eFixed incorrect date in LICENSE\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePerformance\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e5.5x faster first-detect time (~0.42s → ~0.075s) by computing model norms as a side-product of \u003ccode\u003eload_models()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e~40% faster model parsing via \u003ccode\u003estruct.iter_unpack\u003c/code\u003e for bulk entry extraction (eliminates ~305K individual \u003ccode\u003eunpack\u003c/code\u003e calls)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eNew API parameters\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003ecompat_names\u003c/code\u003e parameter (default \u003ccode\u003eTrue\u003c/code\u003e) to \u003ccode\u003edetect()\u003c/code\u003e, \u003ccode\u003edetect_all()\u003c/code\u003e, and \u003ccode\u003eUniversalDetector\u003c/code\u003e — set to \u003ccode\u003eFalse\u003c/code\u003e to get raw Python codec names instead of chardet 5.x/6.x compatible display names\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eprefer_superset\u003c/code\u003e parameter (default \u003ccode\u003eFalse\u003c/code\u003e) — remaps legacy ISO/subset encodings to their modern Windows/CP superset equivalents (e.g., ASCII → Windows-1252, ISO-8859-1 → Windows-1252). \u003cstrong\u003eThis will default to \u003ccode\u003eTrue\u003c/code\u003e in the next major version (8.0).\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003eDeprecated \u003ccode\u003eshould_rename_legacy\u003c/code\u003e in favor of \u003ccode\u003eprefer_superset\u003c/code\u003e — a deprecation warning is emitted when used\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eImprovements\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSwitched internal canonical encoding names to Python codec names (e.g., \u003ccode\u003e\u0026quot;utf-8\u0026quot;\u003c/code\u003e instead of \u003ccode\u003e\u0026quot;UTF-8\u0026quot;\u003c/code\u003e), with \u003ccode\u003ecompat_names\u003c/code\u003e controlling the public output format\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003elookup_encoding()\u003c/code\u003e to \u003ccode\u003eregistry\u003c/code\u003e for case-insensitive resolution of arbitrary encoding name input to canonical names\u003c/li\u003e\n\u003cli\u003eAchieved 100% line coverage across all source modules (+31 tests)\u003c/li\u003e\n\u003cli\u003eUpdated benchmark numbers: 98.2% encoding accuracy, 95.2% language accuracy on 2,510 test files\u003c/li\u003e\n\u003cli\u003ePinned test-data cloning to chardet release version tags for reproducible builds\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull changelog:\u003c/strong\u003e \u003ca href=\"https://chardet.readthedocs.io/en/latest/changelog.html\"\u003ehttps://chardet.readthedocs.io/en/latest/changelog.html\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.0.1\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/chardet/chardet/blob/main/docs/changelog.rst\"\u003echardet's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.2.0 (2026-03-17)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeatures:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003einclude_encodings\u003c/code\u003e and \u003ccode\u003eexclude_encodings\u003c/code\u003e parameters to\n:func:\u003ccode\u003e~chardet.detect\u003c/code\u003e, :func:\u003ccode\u003e~chardet.detect_all\u003c/code\u003e, and\n:class:\u003ccode\u003e~chardet.UniversalDetector\u003c/code\u003e — restrict or exclude specific\nencodings from the candidate set, with corresponding\n\u003ccode\u003e-i\u003c/code\u003e/\u003ccode\u003e--include-encodings\u003c/code\u003e and \u003ccode\u003e-x\u003c/code\u003e/\u003ccode\u003e--exclude-encodings\u003c/code\u003e\nCLI flags\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#343](https://github.com/chardet/chardet/issues/343) \u0026lt;https://github.com/chardet/chardet/pull/343\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eno_match_encoding\u003c/code\u003e (default \u003ccode\u003e\u0026quot;cp1252\u0026quot;\u003c/code\u003e) and\n\u003ccode\u003eempty_input_encoding\u003c/code\u003e (default \u003ccode\u003e\u0026quot;utf-8\u0026quot;\u003c/code\u003e) parameters — control\nwhich encoding is returned when no candidate survives the pipeline or\nthe input is empty, with corresponding CLI flags\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#343](https://github.com/chardet/chardet/issues/343) \u0026lt;https://github.com/chardet/chardet/pull/343\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e-l\u003c/code\u003e/\u003ccode\u003e--language\u003c/code\u003e flag to \u003ccode\u003echardetect\u003c/code\u003e CLI — shows the\ndetected language (ISO 639-1 code and English name) alongside the encoding\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#342](https://github.com/chardet/chardet/issues/342) \u0026lt;https://github.com/chardet/chardet/pull/342\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e7.1.0 (2026-03-11)\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeatures:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded PEP 263 encoding declaration detection — \u003ccode\u003e# -*- coding: ... -*-\u003c/code\u003e\nand \u003ccode\u003e# coding=...\u003c/code\u003e declarations on lines 1–2 of Python source files are\nnow recognized with confidence 0.95\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#249](https://github.com/chardet/chardet/issues/249) \u0026lt;https://github.com/chardet/chardet/issues/249\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003echardet.universaldetector\u003c/code\u003e backward-compatibility stub so that\n\u003ccode\u003efrom chardet.universaldetector import UniversalDetector\u003c/code\u003e works with a\ndeprecation warning\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#341](https://github.com/chardet/chardet/issues/341) \u0026lt;https://github.com/chardet/chardet/issues/341\u0026gt;\u003c/code\u003e\u003c/em\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixes:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed false UTF-7 detection of ASCII text containing \u003ccode\u003e++\u003c/code\u003e or \u003ccode\u003e+word\u003c/code\u003e\npatterns\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e\u003cem\u003e,\n\u003ccode\u003e[#332](https://github.com/chardet/chardet/issues/332) \u0026lt;https://github.com/chardet/chardet/issues/332\u0026gt;\u003c/code\u003e\u003c/em\u003e,\n\u003ccode\u003e[#335](https://github.com/chardet/chardet/issues/335) \u0026lt;https://github.com/chardet/chardet/pull/335\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed 0.5s startup cost on first \u003ccode\u003edetect()\u003c/code\u003e call — model norms are now\ncomputed during loading instead of lazily iterating 21M entries\n(\u003ccode\u003eDan Blanchard \u0026lt;https://github.com/dan-blanchard\u0026gt;\u003c/code\u003e_,\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/884996a2eaff06d41e829c8893525f26a8780791\"\u003e\u003ccode\u003e884996a\u003c/code\u003e\u003c/a\u003e docs: set 7.2.0 release date to 2026-03-17\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/64361f8f40f45b6d8ae3365483e906c5a33c64a7\"\u003e\u003ccode\u003e64361f8\u003c/code\u003e\u003c/a\u003e docs: add CLI examples for --no-match-encoding and --empty-input-encoding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/89a9a4cb0cd031c63889671f708799938afe6845\"\u003e\u003ccode\u003e89a9a4c\u003c/code\u003e\u003c/a\u003e Fix null-separated ASCII misdetected as UTF-16-BE (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/347\"\u003e#347\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/a98f09761394280f649521092df9e001dafb3506\"\u003e\u003ccode\u003ea98f097\u003c/code\u003e\u003c/a\u003e docs: add example output to all CLI commands for consistency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/d2f4ac2c8bf7f27d1ee6675a4ce03a157ecc8fce\"\u003e\u003ccode\u003ed2f4ac2\u003c/code\u003e\u003c/a\u003e docs: document 7.2.0 features (encoding filters, --language CLI flag)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/575fa96712a3c3e465a16e814e66a8137cc17531\"\u003e\u003ccode\u003e575fa96\u003c/code\u003e\u003c/a\u003e test: add include_encodings accuracy preservation tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/66e21fcfd03e584562bbc50c760141ea4ef0a351\"\u003e\u003ccode\u003e66e21fc\u003c/code\u003e\u003c/a\u003e fix: strengthen weak tests and remove duplicates\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/e1428c3158ce7b9f74b8f1a41f9e82a3fa52b311\"\u003e\u003ccode\u003ee1428c3\u003c/code\u003e\u003c/a\u003e Add include/exclude encoding filters (\u003ca href=\"https://redirect.github.com/chardet/chardet/issues/343\"\u003e#343\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/63e90b5fb6ad0b32ff76351f0d4bee25d64f53a4\"\u003e\u003ccode\u003e63e90b5\u003c/code\u003e\u003c/a\u003e fix: pass --no-binary chardet for pinned versions with --pure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chardet/chardet/commit/2fe89933d479fc9153520b12390858ceceaa43c6\"\u003e\u003ccode\u003e2fe8993\u003c/code\u003e\u003c/a\u003e fix: handle missing ISO_TO_LANGUAGE in older chardet versions\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/chardet/chardet/compare/5.2.0...7.2.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.4 to 3.4.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.6\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c/code\u003e using Unicode blocks v17.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEdge case where noise difference between two candidates can be almost insignificant. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/672\"\u003e#672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eCLI \u003ccode\u003e--normalize\u003c/code\u003e writing to wrong path when passing multiple files in. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/702\"\u003e#702\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFreethreaded pre-built wheels now shipped in PyPI starting with 3.14t. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/616\"\u003e#616\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.5\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.4...3.4.5\"\u003e3.4.5\u003c/a\u003e (2026-03-06)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate \u003ccode\u003esetuptools\u003c/code\u003e constraint to \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=82\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.19.1\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd explicit link to lib math in our optimized build. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/692\"\u003e#692\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eLogger level not restored correctly for empty byte sequences. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/701\"\u003e#701\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eTypeError when passing bytearray to from_bytes. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/703\"\u003e#703\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eApplied safe micro-optimizations in both our noise detector and language detector.\u003c/li\u003e\n\u003cli\u003eRewrote the \u003ccode\u003equery_yes_no\u003c/code\u003e function (inside CLI) to avoid using ambiguous licensed code.\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003ecd.py\u003c/code\u003e submodule into mypyc optional compilation to reduce further the performance impact.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[!WARNING]\u003cbr /\u003e\nmypyc changed the usual binary output for the optimized wheel. Beware, especially if using PyInstaller or alike. See \u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/714\"\u003ejawah/charset_normalizer#714\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.5...3.4.6\"\u003e3.4.6\u003c/a\u003e (2026-03-15)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFlattened the logic in \u003ccode\u003echarset_normalizer.md\u003c/code\u003e for higher performance. Removed \u003ccode\u003eeligible(..)\u003c/code\u003e and \u003ccode\u003efeed(...)\u003c/code\u003e\nin favor of \u003ccode\u003efeed_info(...)\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound for mypy[c] to 1.20, for our optimized version.\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eUNICODE_RANGES_COMBINED\u003c...\n\n_Description has been truncated_","html_url":"https://github.com/tektronix/tm_data_types/pull/163","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/tektronix%2Ftm_data_types/issues/163","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/163/packages"}},{"old_version":"1.5.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-03-23T12:21:14.000Z","version_change":"1.5.0 → 1.6.0","issue":{"uuid":"4120439879","node_id":"PR_kwDOMzAhdc7MqpNt","number":279,"state":"open","title":"Bump the pip group across 1 directory with 18 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-23T12:21:14.000Z","updated_at":"2026-03-23T12:30:46.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip","update_count":18,"packages":[{"name":"black","old_version":"26.1.0","new_version":"26.3.1","repository_url":"https://github.com/psf/black"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"faker","old_version":"40.5.1","new_version":"40.11.0","repository_url":"https://github.com/joke2k/faker"},{"name":"faker-file","old_version":"0.18.4","new_version":"0.19.1"},{"name":"boto3","old_version":"1.35.99","new_version":"1.42.73","repository_url":"https://github.com/boto/boto3"},{"name":"botocore","old_version":"1.35.99","new_version":"1.42.73","repository_url":"https://github.com/boto/botocore"},{"name":"fastapi","old_version":"0.133.1","new_version":"0.135.1","repository_url":"https://github.com/fastapi/fastapi"},{"name":"fastapi-cloud-cli","old_version":"0.14.0","new_version":"0.15.0","repository_url":"https://github.com/fastapilabs/fastapi-cloud-cli"},{"name":"fastar","old_version":"0.8.0","new_version":"0.9.0","repository_url":"https://github.com/DoctorJohn/fastar"},{"name":"pydantic-extra-types","old_version":"2.11.0","new_version":"2.11.1","repository_url":"https://github.com/pydantic/pydantic-extra-types"},{"name":"pydantic-core","old_version":"2.41.5","new_version":"2.42.0","repository_url":"https://github.com/pydantic/pydantic-core"},{"name":"pyjwt","old_version":"2.11.0","new_version":"2.12.1","repository_url":"https://github.com/jpadilla/pyjwt"},{"name":"python-dotenv","old_version":"1.2.1","new_version":"1.2.2","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"s3transfer","old_version":"0.10.4","new_version":"0.16.0","repository_url":"https://github.com/boto/s3transfer"},{"name":"sentry-sdk","old_version":"2.53.0","new_version":"2.55.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"starlette","old_version":"0.52.1","new_version":"1.0.0","repository_url":"https://github.com/Kludex/starlette"},{"name":"uvicorn","old_version":"0.41.0","new_version":"0.42.0","repository_url":"https://github.com/Kludex/uvicorn"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip group with 18 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [black](https://github.com/psf/black) | `26.1.0` | `26.3.1` |\n| [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `7.0.0` | `7.1.0` |\n| [pytest-env](https://github.com/pytest-dev/pytest-env) | `1.5.0` | `1.6.0` |\n| [faker](https://github.com/joke2k/faker) | `40.5.1` | `40.11.0` |\n| [faker-file[docx,images,pdf]](https://github.com/barseghyanartur/faker-file) | `0.18.4` | `0.19.1` |\n| [boto3](https://github.com/boto/boto3) | `1.35.99` | `1.42.73` |\n| [botocore](https://github.com/boto/botocore) | `1.35.99` | `1.42.73` |\n| [fastapi](https://github.com/fastapi/fastapi) | `0.133.1` | `0.135.1` |\n| [fastapi-cloud-cli](https://github.com/fastapilabs/fastapi-cloud-cli) | `0.14.0` | `0.15.0` |\n| [fastar](https://github.com/DoctorJohn/fastar) | `0.8.0` | `0.9.0` |\n| [pydantic-extra-types](https://github.com/pydantic/pydantic-extra-types) | `2.11.0` | `2.11.1` |\n| [pydantic-core](https://github.com/pydantic/pydantic-core) | `2.41.5` | `2.42.0` |\n| [pyjwt](https://github.com/jpadilla/pyjwt) | `2.11.0` | `2.12.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.2.1` | `1.2.2` |\n| [s3transfer](https://github.com/boto/s3transfer) | `0.10.4` | `0.16.0` |\n| [sentry-sdk](https://github.com/getsentry/sentry-python) | `2.53.0` | `2.55.0` |\n| [starlette](https://github.com/Kludex/starlette) | `0.52.1` | `1.0.0` |\n| [uvicorn](https://github.com/Kludex/uvicorn) | `0.41.0` | `0.42.0` |\n\n\nUpdates `black` from 26.1.0 to 26.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/releases\"\u003eblack's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.3.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't double-decode input, causing non-UTF-8 files to be corrupted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4964\"\u003e#4964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on standalone comment in lambda default arguments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4993\"\u003e#4993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve parentheses when \u003ccode\u003e# type: ignore\u003c/code\u003e comments would be merged with other\ncomments on the same line, preventing AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/4888\"\u003e#4888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eif\u003c/code\u003e guards in \u003ccode\u003ecase\u003c/code\u003e blocks were incorrectly split when the pattern had\na trailing comma (\u003ca href=\"https://redirect.github.com/psf/black/issues/4884\"\u003e#4884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003estring_processing\u003c/code\u003e crashing on unassigned long string literals with trailing\ncommas (one-item tuples) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4929\"\u003e#4929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSimplify implementation of the power operator \u0026quot;hugging\u0026quot; logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4918\"\u003e#4918\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix shutdown errors in PyInstaller builds on macOS by disabling multiprocessing in\nfrozen environments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4930\"\u003e#4930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce winloop for windows as an alternative to uvloop (\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecated function \u003ccode\u003euvloop.install()\u003c/code\u003e in favor of \u003ccode\u003euvloop.new_event_loop()\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003emaybe_install_uvloop\u003c/code\u003e function to \u003ccode\u003emaybe_use_uvloop\u003c/code\u003e to simplify loop\ninstallation and creation of either a uvloop/winloop evenloop or default eventloop\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOutput\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/psf/black/blob/main/CHANGES.md\"\u003eblack's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e26.3.1\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePrevent Jupyter notebook magic masking collisions from corrupting cells by using\nexact-length placeholders for short magics and aborting if a placeholder can no longer\nbe unmasked safely (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eConfiguration\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAlways hash cache filename components derived from \u003ccode\u003e--python-cell-magics\u003c/code\u003e so custom\nmagic names cannot affect cache paths (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e\u003cem\u003eBlackd\u003c/em\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisable browser-originated requests by default, add configurable origin allowlisting\nand request body limits, and bound executor submissions to improve backpressure\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e26.3.0\u003c/h2\u003e\n\u003ch3\u003eStable style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't double-decode input, causing non-UTF-8 files to be corrupted (\u003ca href=\"https://redirect.github.com/psf/black/issues/4964\"\u003e#4964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix crash on standalone comment in lambda default arguments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4993\"\u003e#4993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePreserve parentheses when \u003ccode\u003e# type: ignore\u003c/code\u003e comments would be merged with other\ncomments on the same line, preventing AST equivalence failures (\u003ca href=\"https://redirect.github.com/psf/black/issues/4888\"\u003e#4888\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePreview style\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where \u003ccode\u003eif\u003c/code\u003e guards in \u003ccode\u003ecase\u003c/code\u003e blocks were incorrectly split when the pattern had\na trailing comma (\u003ca href=\"https://redirect.github.com/psf/black/issues/4884\"\u003e#4884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix \u003ccode\u003estring_processing\u003c/code\u003e crashing on unassigned long string literals with trailing\ncommas (one-item tuples) (\u003ca href=\"https://redirect.github.com/psf/black/issues/4929\"\u003e#4929\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eSimplify implementation of the power operator \u0026quot;hugging\u0026quot; logic (\u003ca href=\"https://redirect.github.com/psf/black/issues/4918\"\u003e#4918\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePackaging\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix shutdown errors in PyInstaller builds on macOS by disabling multiprocessing in\nfrozen environments (\u003ca href=\"https://redirect.github.com/psf/black/issues/4930\"\u003e#4930\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003ePerformance\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eIntroduce winloop for windows as an alternative to uvloop (\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRemove deprecated function \u003ccode\u003euvloop.install()\u003c/code\u003e in favor of \u003ccode\u003euvloop.new_event_loop()\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRename \u003ccode\u003emaybe_install_uvloop\u003c/code\u003e function to \u003ccode\u003emaybe_use_uvloop\u003c/code\u003e to simplify loop\ninstallation and creation of either a uvloop/winloop eventloop or default eventloop\n(\u003ca href=\"https://redirect.github.com/psf/black/issues/4996\"\u003e#4996\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c6755bb741b6481d6b3d3bb563c83fa060db96c9\"\u003e\u003ccode\u003ec6755bb\u003c/code\u003e\u003c/a\u003e Prepare release 26.3.1 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5046\"\u003e#5046\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69973fd6950985fbeb1090d96da717dc4d8380b0\"\u003e\u003ccode\u003e69973fd\u003c/code\u003e\u003c/a\u003e Harden blackd browser-facing request handling (\u003ca href=\"https://redirect.github.com/psf/black/issues/5039\"\u003e#5039\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/4937fe6cf241139ddbfc16b0bdbb5b422798909d\"\u003e\u003ccode\u003e4937fe6\u003c/code\u003e\u003c/a\u003e Fix some shenanigans with the cache file and IPython (\u003ca href=\"https://redirect.github.com/psf/black/issues/5038\"\u003e#5038\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/2e641d174469c505d5ae905e75d4c769597e681f\"\u003e\u003ccode\u003e2e641d1\u003c/code\u003e\u003c/a\u003e docs: remove outdated Black Playground references (\u003ca href=\"https://redirect.github.com/psf/black/issues/5044\"\u003e#5044\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c014b22a2d5e0632587b47b81151658bddfa0b88\"\u003e\u003ccode\u003ec014b22\u003c/code\u003e\u003c/a\u003e Remove unused internal code (\u003ca href=\"https://redirect.github.com/psf/black/issues/5041\"\u003e#5041\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/0dae20b2d009f2f03de8696d06b0c947d3abafc9\"\u003e\u003ccode\u003e0dae20b\u003c/code\u003e\u003c/a\u003e Add new changelog (\u003ca href=\"https://redirect.github.com/psf/black/issues/5036\"\u003e#5036\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/c5c1cbddd92cecb554ac2a77a24139dd76831030\"\u003e\u003ccode\u003ec5c1cbd\u003c/code\u003e\u003c/a\u003e Minor release patches (\u003ca href=\"https://redirect.github.com/psf/black/issues/5035\"\u003e#5035\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/7e5a828c37d71b6a6666e28eed444816def6a8f4\"\u003e\u003ccode\u003e7e5a828\u003c/code\u003e\u003c/a\u003e docs: clarify relationship between Black style and PEP 8 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5025\"\u003e#5025\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/69705deb8776e7c5e585668da106d1abe2cb8d77\"\u003e\u003ccode\u003e69705de\u003c/code\u003e\u003c/a\u003e docs: add clearer pyproject configuration guidance (\u003ca href=\"https://redirect.github.com/psf/black/issues/5026\"\u003e#5026\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/psf/black/commit/35ea67920b7f6ac8e09be1c47278752b1e827f76\"\u003e\u003ccode\u003e35ea679\u003c/code\u003e\u003c/a\u003e Prepare release 26.3.0 (\u003ca href=\"https://redirect.github.com/psf/black/issues/5032\"\u003e#5032\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/psf/black/compare/26.1.0...26.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.6.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.5.1 to 40.11.0\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.11.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.11.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.10.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.10.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.9.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.9.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.1/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.8.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.8.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.7.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.7.0/CHANGELOG.md\"\u003eCHANGELOG.md\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eRelease v40.6.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://github.com/joke2k/faker/blob/refs/tags/v40.6.0/CHANGELOG.md\"\u003eCHANGELOG.md\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/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.10.0...v40.11.0\"\u003ev40.11.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider. Thanks \u003ca href=\"https://github.com/raphael-s\"\u003e\u003ccode\u003e@​raphael-s\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.9.0...v40.10.0\"\u003ev40.10.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/rodrigobnogueira\"\u003e\u003ccode\u003e@​rodrigobnogueira\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.8.1...v40.9.0\"\u003ev40.9.0 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider. Thanks \u003ca href=\"https://github.com/filipemattar\"\u003e\u003ccode\u003e@​filipemattar\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.8.0...v40.8.1\"\u003ev40.8.1 - 2026-03-13\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix mutable default providers. Thanks \u003ca href=\"https://github.com/Dhi13man\"\u003e\u003ccode\u003e@​Dhi13man\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.7.0...v40.8.0\"\u003ev40.8.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd free email domains to \u003ccode\u003ehu_HU\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/majorzoltan80\"\u003e\u003ccode\u003e@​majorzoltan80\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.6.0...v40.7.0\"\u003ev40.7.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImprove Polish address grammar: categorize street types and prefixes. Thanks \u003ca href=\"https://github.com/Francooo2221\"\u003e\u003ccode\u003e@​Francooo2221\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.5.1...v40.6.0\"\u003ev40.6.0 - 2026-03-04\u003c/a\u003e\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd country names to \u003ccode\u003ehe_IL\u003c/code\u003e locale. Thanks \u003ca href=\"https://github.com/Moo64c\"\u003e\u003ccode\u003e@​Moo64c\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/joke2k/faker/commit/53314fc7d3fba03fed38bb1053a395fdfb50e35f\"\u003e\u003ccode\u003e53314fc\u003c/code\u003e\u003c/a\u003e Bump version: 40.10.0 → 40.11.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4b47329802626fc808f48be8b2a79564429500c9\"\u003e\u003ccode\u003e4b47329\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/4a3341a8bd266b6ff2620c23648615a3f000bbd0\"\u003e\u003ccode\u003e4a3341a\u003c/code\u003e\u003c/a\u003e Add major Swiss banks to \u003ccode\u003ede_CH\u003c/code\u003e bank provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2337\"\u003e#2337\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/c571a926438d868841ac62ad7bc49d65eb8f103c\"\u003e\u003ccode\u003ec571a92\u003c/code\u003e\u003c/a\u003e Bump version: 40.9.0 → 40.10.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/ec660a43ed059178965fc1c24ae039dfbcf80628\"\u003e\u003ccode\u003eec660a4\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/db8b86b852ba85043fbe2c9c271c72e904b43580\"\u003e\u003ccode\u003edb8b86b\u003c/code\u003e\u003c/a\u003e Fix: mixed-gender names in \u003ccode\u003ees_MX\u003c/code\u003e locale (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2324\"\u003e#2324\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/1ebfd5f7194f867b018c934b5097bf9d6ba38d76\"\u003e\u003ccode\u003e1ebfd5f\u003c/code\u003e\u003c/a\u003e Bump version: 40.8.1 → 40.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/768a21e1666b45809fd2f6bb1d854907d2dadbb4\"\u003e\u003ccode\u003e768a21e\u003c/code\u003e\u003c/a\u003e 📝 Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/b4ba81f356095eee10aacbecba1eab238e0603a6\"\u003e\u003ccode\u003eb4ba81f\u003c/code\u003e\u003c/a\u003e :lipstick: Lint code\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joke2k/faker/commit/85aed1d9c68f1be102553c23faa4bb75dc0fc68e\"\u003e\u003ccode\u003e85aed1d\u003c/code\u003e\u003c/a\u003e Fix \u003ccode\u003ept_PT\u003c/code\u003e \u003ccode\u003epostalcode\u003c/code\u003e format in address provider (\u003ca href=\"https://redirect.github.com/joke2k/faker/issues/2326\"\u003e#2326\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/joke2k/faker/compare/v40.5.1...v40.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `faker-file[docx,images,pdf]` from 0.18.4 to 0.19.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/barseghyanartur/faker-file/releases\"\u003efaker-file[docx,images,pdf]'s releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.1\u003c/h2\u003e\n\u003cp\u003e2026-03-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eXmlFileProvider\u003c/code\u003e to properly escape XML special characters (\u003ccode\u003e\u0026amp;\u003c/code\u003e, \u003ccode\u003e\u0026lt;\u003c/code\u003e, \u003ccode\u003e\u0026gt;\u003c/code\u003e, \u003ccode\u003e\u0026quot;\u003c/code\u003e, \u003ccode\u003e'\u003c/code\u003e) in template-generated content.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.19\u003c/h2\u003e\n\u003cp\u003e2026-03-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated NLPAug- and TextAugment-based augmenters, as both libraries\nseem to have pour support with modern Python versions. Introduced\na simple FakerWordAugmenter as a default text-augmenter, with no\nadditional dependencies.\u003c/li\u003e\n\u003cli\u003eTested against Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/barseghyanartur/faker-file/compare/0.18.4...0.19\"\u003ehttps://github.com/barseghyanartur/faker-file/compare/0.18.4...0.19\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/barseghyanartur/faker-file/blob/main/CHANGELOG.rst\"\u003efaker-file[docx,images,pdf]'s changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.19.1\u003c/h2\u003e\n\u003cp\u003e2026-03-09\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ccode\u003eXmlFileProvider\u003c/code\u003e to properly escape XML special characters\n(\u003ccode\u003e\u0026amp;\u003c/code\u003e, \u003ccode\u003e\u0026lt;\u003c/code\u003e, \u003ccode\u003e\u0026gt;\u003c/code\u003e, \u003ccode\u003e\u0026quot;\u003c/code\u003e, \u003ccode\u003e'\u003c/code\u003e) in template-generated content.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.19\u003c/h2\u003e\n\u003cp\u003e2026-03-08\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecated NLPAug- and TextAugment-based augmenters, as both libraries\nseem to have pour support with modern Python versions. Introduced\na simple FakerWordAugmenter as a default text-augmenter, with no\nadditional dependencies.\u003c/li\u003e\n\u003cli\u003eTested against Python 3.13.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/e1cde6f20cc8baf6095551bdd3f589ee43d1732b\"\u003e\u003ccode\u003ee1cde6f\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/152\"\u003e#152\u003c/a\u003e from barseghyanartur/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/d1db5565b671ab8b35ab1fe9e05eb1b713552645\"\u003e\u003ccode\u003ed1db556\u003c/code\u003e\u003c/a\u003e Fix/fixes (\u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/151\"\u003e#151\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/e77cec6453799b38cdb7dea89e4c5b89c8dce1c7\"\u003e\u003ccode\u003ee77cec6\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/149\"\u003e#149\u003c/a\u003e from barseghyanartur/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/c3b139451f9cd75cb580abbd9ff6c1ca53554f7f\"\u003e\u003ccode\u003ec3b1394\u003c/code\u003e\u003c/a\u003e Improve manifest.in; Clean up (\u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/139\"\u003e#139\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/4ad45266ad69b2bf4c367ff6cad9e194ca08df94\"\u003e\u003ccode\u003e4ad4526\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/148\"\u003e#148\u003c/a\u003e from barseghyanartur/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/d63ff3f7f541e03333c7275fe61bb714905c6bee\"\u003e\u003ccode\u003ed63ff3f\u003c/code\u003e\u003c/a\u003e Fixes (\u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/147\"\u003e#147\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/c5069c713770c5228638e8c38e922da16a62829b\"\u003e\u003ccode\u003ec5069c7\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/146\"\u003e#146\u003c/a\u003e from barseghyanartur/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/63a494666620f6c995895c2c7d07463d681356fa\"\u003e\u003ccode\u003e63a4946\u003c/code\u003e\u003c/a\u003e Modernise (\u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/143\"\u003e#143\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/4bed05141d2fbef6b979f9ce9f1fae1e17fa9d0c\"\u003e\u003ccode\u003e4bed051\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/137\"\u003e#137\u003c/a\u003e from barseghyanartur/dev\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/barseghyanartur/faker-file/commit/5594cbe7ccd5839807311667df141628e84e2b7e\"\u003e\u003ccode\u003e5594cbe\u003c/code\u003e\u003c/a\u003e Add llms.txt badge to readme (\u003ca href=\"https://redirect.github.com/barseghyanartur/faker-file/issues/136\"\u003e#136\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/barseghyanartur/faker-file/compare/0.18.4...0.19.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `boto3` from 1.35.99 to 1.42.73\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/3a06d635c79baf1597439dde9244d3f28f6b6eb2\"\u003e\u003ccode\u003e3a06d63\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.73'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ca7b0438074715c38ede4b8c0ab4401700bddf70\"\u003e\u003ccode\u003eca7b043\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.73\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/ef6697c5aad3cbbe962fb63c9335db0e0a705480\"\u003e\u003ccode\u003eef6697c\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/3c02c15e37930f95537d5b173c0ffc19b1201b16\"\u003e\u003ccode\u003e3c02c15\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.72'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/b7e01e94ab81d564b365e55b0a60c3c5d1e889ab\"\u003e\u003ccode\u003eb7e01e9\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.72' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/fcc3fe3ff503eecbbd713678771e02654eb27c9a\"\u003e\u003ccode\u003efcc3fe3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.72\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/9d3625e1b08dbe0ae7a7bb296de0b7a26e086da0\"\u003e\u003ccode\u003e9d3625e\u003c/code\u003e\u003c/a\u003e Add changelog entries from botocore\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/dd8d8d63a318dd7c43b44deb2438988973751519\"\u003e\u003ccode\u003edd8d8d6\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.71'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/0d4401ebded31ec53e850ec8e6d8dc6ae22d7dbe\"\u003e\u003ccode\u003e0d4401e\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.71' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/boto3/commit/45318a5e206d34126c7bf472d814f09502da14b6\"\u003e\u003ccode\u003e45318a5\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.71\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/boto3/compare/1.35.99...1.42.73\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `botocore` from 1.35.99 to 1.42.73\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/08d494afd2133bdf09ef84b83aeb374389f236af\"\u003e\u003ccode\u003e08d494a\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.73'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/15967c3e9918a503e2b1a2da8e78b1a89ac465a7\"\u003e\u003ccode\u003e15967c3\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.73\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/cd4cb60a1cf2d16d742c61a6d06fb6d830bbff06\"\u003e\u003ccode\u003ecd4cb60\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/81d0826a2c41888b76188438811a5a3c981a65e3\"\u003e\u003ccode\u003e81d0826\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/b2e20b2d4e6ee92b7f46bbad73a5a9a7abe18b28\"\u003e\u003ccode\u003eb2e20b2\u003c/code\u003e\u003c/a\u003e Fix aws-chunked Content-Length handling for non-seekable S3 uploads (\u003ca href=\"https://redirect.github.com/boto/botocore/issues/3652\"\u003e#3652\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/9a8fcce967d9c49ba4ef4ca68cf78778aa05d80a\"\u003e\u003ccode\u003e9a8fcce\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.72'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/c251a9179ae32fdc93afb8cff02c520e9c1d3c9b\"\u003e\u003ccode\u003ec251a91\u003c/code\u003e\u003c/a\u003e Merge branch 'release-1.42.72' into develop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/07761538e4281516c7d78b6623e93ccf1e404876\"\u003e\u003ccode\u003e0776153\u003c/code\u003e\u003c/a\u003e Bumping version to 1.42.72\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/09c9273c01e2c4c63d8c8084352eec0c001601da\"\u003e\u003ccode\u003e09c9273\u003c/code\u003e\u003c/a\u003e Update endpoints model\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/boto/botocore/commit/983a4a2624b146a3831f2c121883043b15df89fa\"\u003e\u003ccode\u003e983a4a2\u003c/code\u003e\u003c/a\u003e Update to latest models\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/boto/botocore/compare/1.35.99...1.42.73\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi` from 0.133.1 to 0.135.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapi/fastapi/releases\"\u003efastapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.135.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix, avoid yield from a TaskGroup, only as an async context manager, closed in the request async exit stack. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15038\"\u003e#15038\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✏️ Fix typo in \u003ccode\u003edocs/en/docs/_llm-test.md\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15007\"\u003e#15007\u003c/a\u003e by \u003ca href=\"https://github.com/adityagiri3600\"\u003e\u003ccode\u003e@​adityagiri3600\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update Skill, optimize context, trim and refactor into references. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15031\"\u003e#15031\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👥 Update FastAPI People - Experts. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15037\"\u003e#15037\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI People - Contributors and Translators. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15029\"\u003e#15029\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e👥 Update FastAPI GitHub topic repositories. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15036\"\u003e#15036\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.135.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for Server Sent Events. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15030\"\u003e#15030\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/server-sent-events/\"\u003eServer-Sent Events (SSE)\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.134.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add support for streaming JSON Lines and binary data with \u003ccode\u003eyield\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15022\"\u003e#15022\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\n\u003cul\u003e\n\u003cli\u003eThis also upgrades Starlette from \u003ccode\u003e\u0026gt;=0.40.0\u003c/code\u003e to \u003ccode\u003e\u0026gt;=0.46.0\u003c/code\u003e, as it's needed to properly unrwap and re-raise exceptions from exception groups.\u003c/li\u003e\n\u003cli\u003eNew docs: \u003ca href=\"https://fastapi.tiangolo.com/tutorial/stream-json-lines/\"\u003eStream JSON Lines\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAnd new docs: \u003ca href=\"https://fastapi.tiangolo.com/advanced/stream-data/\"\u003eStream Data\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Update Library Agent Skill with streaming responses. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15024\"\u003e#15024\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Update docs for responses and new stream with \u003ccode\u003eyield\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/15023\"\u003e#15023\u003c/a\u003e by \u003ca href=\"https://github.com/tiangolo\"\u003e\u003ccode\u003e@​tiangolo\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Add \u003ccode\u003eawait\u003c/code\u003e in \u003ccode\u003eStreamingResponse\u003c/code\u003e code example to allow cancellation. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14681\"\u003e#14681\u003c/a\u003e by \u003ca href=\"https://github.com/casperdcl\"\u003e\u003ccode\u003e@​casperdcl\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e📝 Rename \u003ccode\u003edocs_src/websockets\u003c/code\u003e to \u003ccode\u003edocs_src/websockets_\u003c/code\u003e to avoid import errors. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14979\"\u003e#14979\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🔨 Run tests with \u003ccode\u003epytest-xdist\u003c/code\u003e and \u003ccode\u003epytest-cov\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapi/fastapi/pull/14992\"\u003e#14992\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/ca5f60ee72f35fb2134d8b5d26bbb75965bcff66\"\u003e\u003ccode\u003eca5f60e\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.135.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/87f75aa62c1dde90f4dfbfa7fc2c33127d757d34\"\u003e\u003ccode\u003e87f75aa\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/8a9258b169dce3e321f614c14b1877c18750d6c7\"\u003e\u003ccode\u003e8a9258b\u003c/code\u003e\u003c/a\u003e 🐛 Fix, avoid yield from a TaskGroup, only as an async context manager, closed...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/60385078233e00f9f13307ff038f12f88fc5c240\"\u003e\u003ccode\u003e6038507\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/c796ba4f46a6e81477ce44eabe13fd01d82f2c4a\"\u003e\u003ccode\u003ec796ba4\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Experts (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15037\"\u003e#15037\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/b24aa03b888b78dd2ec6540d47c84a8676d6a7cb\"\u003e\u003ccode\u003eb24aa03\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/2c6104752a97273976c8a63e897de98a48f19ce0\"\u003e\u003ccode\u003e2c61047\u003c/code\u003e\u003c/a\u003e ✏️ Fix typo in \u003ccode\u003edocs/en/docs/_llm-test.md\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15007\"\u003e#15007\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/e3bbeef8a2687fdf34d4de2d304a59135a30e63c\"\u003e\u003ccode\u003ee3bbeef\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/d726c8cb2b8e00279487fa8661a5276d2ff2125f\"\u003e\u003ccode\u003ed726c8c\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapi/fastapi/commit/cf514e6d3839ca69ca45a55a6f862e74892339b9\"\u003e\u003ccode\u003ecf514e6\u003c/code\u003e\u003c/a\u003e 👥 Update FastAPI People - Contributors and Translators (\u003ca href=\"https://redirect.github.com/fastapi/fastapi/issues/15029\"\u003e#15029\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapi/fastapi/compare/0.133.1...0.135.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastapi-cloud-cli` from 0.14.0 to 0.15.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/releases\"\u003efastapi-cloud-cli's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.0\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003efastapi cloud setup-ci\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/157\"\u003e#157\u003c/a\u003e by \u003ca href=\"https://github.com/savannahostrowski\"\u003e\u003ccode\u003e@​savannahostrowski\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Add \u003ccode\u003ety\u003c/code\u003e to precommit. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/167\"\u003e#167\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.14.1\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix nested progress in deploy causing weird output. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/166\"\u003e#166\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Add dates to release notes. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/161\"\u003e#161\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump tiangolo/latest-changes from 0.4.0 to 0.4.1. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/162\"\u003e#162\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 6 to 8. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/163\"\u003e#163\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/164\"\u003e#164\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 5 to 7. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/165\"\u003e#165\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/119\"\u003e#119\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/101\"\u003e#101\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 4 to 5. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/102\"\u003e#102\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump tiangolo/issue-manager from 0.5.1 to 0.6.0. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/85\"\u003e#85\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/setup-python from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/84\"\u003e#84\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/blob/main/release-notes.md\"\u003efastapi-cloud-cli's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.0 (2026-03-11)\u003c/h2\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e✨ Add \u003ccode\u003efastapi cloud setup-ci\u003c/code\u003e. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/157\"\u003e#157\u003c/a\u003e by \u003ca href=\"https://github.com/savannahostrowski\"\u003e\u003ccode\u003e@​savannahostrowski\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e👷 Add \u003ccode\u003ety\u003c/code\u003e to precommit. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/167\"\u003e#167\u003c/a\u003e by \u003ca href=\"https://github.com/svlandeg\"\u003e\u003ccode\u003e@​svlandeg\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.14.1 (2026-03-07)\u003c/h2\u003e\n\u003ch3\u003eFixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 Fix nested progress in deploy causing weird output. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/166\"\u003e#166\u003c/a\u003e by \u003ca href=\"https://github.com/patrick91\"\u003e\u003ccode\u003e@​patrick91\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e📝 Add dates to release notes. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/161\"\u003e#161\u003c/a\u003e by \u003ca href=\"https://github.com/YuriiMotov\"\u003e\u003ccode\u003e@​YuriiMotov\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e⬆ Bump tiangolo/latest-changes from 0.4.0 to 0.4.1. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/162\"\u003e#162\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 6 to 8. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/163\"\u003e#163\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/164\"\u003e#164\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 5 to 7. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/165\"\u003e#165\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/checkout from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/119\"\u003e#119\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/101\"\u003e#101\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 4 to 5. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/102\"\u003e#102\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump tiangolo/issue-manager from 0.5.1 to 0.6.0. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/85\"\u003e#85\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/setup-python from 5 to 6. PR \u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/pull/84\"\u003e#84\u003c/a\u003e by \u003ca href=\"https://github.com/apps/dependabot\"\u003e\u003ccode\u003e@​dependabot[bot]\u003c/code\u003e\u003c/a\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/dbeacdad80aed8fc091fb074bdeba72467e6e404\"\u003e\u003ccode\u003edbeacda\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.15.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/299e3095c34c962f41f3f2e34d18b9f30cc821c9\"\u003e\u003ccode\u003e299e309\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/d7dc0ba1f7060501ab0303e87a353af4ed625f50\"\u003e\u003ccode\u003ed7dc0ba\u003c/code\u003e\u003c/a\u003e 👷 Add \u003ccode\u003ety\u003c/code\u003e to precommit (\u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/c725a6aeb3cfea7aa4b757c6991bd69e230b53c2\"\u003e\u003ccode\u003ec725a6a\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/abc2dd67bde6d5cc2200deecb8fc5a55b590c8b7\"\u003e\u003ccode\u003eabc2dd6\u003c/code\u003e\u003c/a\u003e ✨ Add \u003ccode\u003efastapi cloud setup-ci\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/issues/157\"\u003e#157\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/e30b63ff3227ebed24524fffcd0bdf6bf907394f\"\u003e\u003ccode\u003ee30b63f\u003c/code\u003e\u003c/a\u003e 🔖 Release version 0.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/15124a9e81480e5d357a1e1c4461ecea492a23e6\"\u003e\u003ccode\u003e15124a9\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/6bb4c43fdb686af423c21c58aadfe85b45d8b89d\"\u003e\u003ccode\u003e6bb4c43\u003c/code\u003e\u003c/a\u003e 🐛 Fix nested progress in deploy causing weird output (\u003ca href=\"https://redirect.github.com/fastapilabs/fastapi-cloud-cli/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/b83b878ee105299719246c41f4298534861f7a54\"\u003e\u003ccode\u003eb83b878\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/commit/4cf53ed1b8bf9423dc99508c1f590bdf45199a5e\"\u003e\u003ccode\u003e4cf53ed\u003c/code\u003e\u003c/a\u003e 📝 Update release notes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/fastapilabs/fastapi-cloud-cli/compare/0.14.0...0.15.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `fastar` from 0.8.0 to 0.9.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/DoctorJohn/fastar/releases\"\u003efastar's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.9.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix tests only used the pinned python version by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/51\"\u003eDoctorJohn/fastar#51\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eTest zstd with older python versions by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/50\"\u003eDoctorJohn/fastar#50\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRefactor reader and writer tests by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/52\"\u003eDoctorJohn/fastar#52\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eClassify as typed by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/53\"\u003eDoctorJohn/fastar#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd GitHub sponsor button by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/54\"\u003eDoctorJohn/fastar#54\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpgrade python syntax using pyupgrade by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/55\"\u003eDoctorJohn/fastar#55\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMigrate to prek by \u003ca href=\"https://github.com/DoctorJohn\"\u003e\u003ccode\u003e@​DoctorJohn\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/56\"\u003eDoctorJohn/fastar#56\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd multithreaded tests by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/62\"\u003eDoctorJohn/fastar#62\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate Pyo3 to v0.28 by \u003ca href=\"https://github.com/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/60\"\u003eDoctorJohn/fastar#60\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add riscv64 target to linux wheel build matrix by \u003ca href=\"https://github.com/gounthar\"\u003e\u003ccode\u003e@​gounthar\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/58\"\u003eDoctorJohn/fastar#58\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/ngoldbaum\"\u003e\u003ccode\u003e@​ngoldbaum\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/62\"\u003eDoctorJohn/fastar#62\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gounthar\"\u003e\u003ccode\u003e@​gounthar\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/pull/58\"\u003eDoctorJohn/fastar#58\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/DoctorJohn/fastar/compare/v0.8.0...v0.9.0\"\u003ehttps://github.com/DoctorJohn/fastar/compare/v0.8.0...v0.9.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/DoctorJohn/fastar/commit/8e0ffc416a2b9c88cb2e686972dbcbca57ca42d1\"\u003e\u003ccode\u003e8e0ffc4\u003c/code\u003e\u003c/a\u003e Bump version to v0.9.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/0598440c1575ebc693b06c2f023f711acb0223c5\"\u003e\u003ccode\u003e0598440\u003c/code\u003e\u003c/a\u003e Add riscv64 target to linux wheel build matrix (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/16318828046689959b2994b4f3e5a4a16edc9741\"\u003e\u003ccode\u003e1631882\u003c/code\u003e\u003c/a\u003e Update Pyo3 to v0.28 (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/af1804aef6e28b415578b3ce6fc8acd5b7322925\"\u003e\u003ccode\u003eaf1804a\u003c/code\u003e\u003c/a\u003e Add multithreaded tests (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/62\"\u003e#62\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/f0a02fc1bbfa0de13272793ee327e1d40041754c\"\u003e\u003ccode\u003ef0a02fc\u003c/code\u003e\u003c/a\u003e Migrate to prek (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/56\"\u003e#56\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/58086d31fac9b365aa890b78b87ac9622db89e77\"\u003e\u003ccode\u003e58086d3\u003c/code\u003e\u003c/a\u003e Upgrade python syntax using pyupgrade (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/cffe7e2ba055381ccde5190c6c311bc446ee0980\"\u003e\u003ccode\u003ecffe7e2\u003c/code\u003e\u003c/a\u003e Add GitHub sponsor button (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/cd141b363918a8f552494da08b12f4693216de04\"\u003e\u003ccode\u003ecd141b3\u003c/code\u003e\u003c/a\u003e Classify as typed (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/cb34ba6403701ac1074785652d2f8293910d873e\"\u003e\u003ccode\u003ecb34ba6\u003c/code\u003e\u003c/a\u003e Refactor reader and writer tests (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DoctorJohn/fastar/commit/e5ac1e2285e5a2f59287fe6436b1404f1ac9b393\"\u003e\u003ccode\u003ee5ac1e2\u003c/code\u003e\u003c/a\u003e Test zstd with older python versions (\u003ca href=\"https://redirect.github.com/DoctorJohn/fastar/issues/50\"\u003e#50\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/DoctorJohn/fastar/compare/v0.8.0...v0.9.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-extra-types` from 2.11.0 to 2.11.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/releases\"\u003epydantic-extra-types's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.11.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e🐛 fix Cron Tests (Happy New Year 🎉 ) by \u003ca href=\"https://github.com/anthonycicc\"\u003e\u003ccode\u003e@​anthonycicc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/361\"\u003epydantic/pydantic-extra-types#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 5 to 6 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/362\"\u003epydantic/pydantic-extra-types#362\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 6 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/363\"\u003epydantic/pydantic-extra-types#363\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 4 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/365\"\u003epydantic/pydantic-extra-types#365\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd UUID v7 support (and v6/v8) by \u003ca href=\"https://github.com/sshaheerkhann\"\u003e\u003ccode\u003e@​sshaheerkhann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/367\"\u003epydantic/pydantic-extra-types#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: migrate DSN types from pydantic.networks by \u003ca href=\"https://github.com/bBlazewavE\"\u003e\u003ccode\u003e@​bBlazewavE\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/368\"\u003epydantic/pydantic-extra-types#368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eExport \u003ccode\u003eColor\u003c/code\u003e from package \u003ccode\u003e__init__.py\u003c/code\u003e by \u003ca href=\"https://github.com/bBlazewavE\"\u003e\u003ccode\u003e@​bBlazewavE\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/373\"\u003epydantic/pydantic-extra-types#373\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump the python-packages group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/371\"\u003epydantic/pydantic-extra-types#371\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/download-artifact from 7 to 8 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/370\"\u003epydantic/pydantic-extra-types#370\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e⬆ Bump actions/upload-artifact from 6 to 7 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/369\"\u003epydantic/pydantic-extra-types#369\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat: add IBAN (International Bank Account Number) type by \u003ca href=\"https://github.com/toroleapinc\"\u003e\u003ccode\u003e@​toroleapinc\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/372\"\u003epydantic/pydantic-extra-types#372\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e🔖 Release version 2.11.1  by \u003ca href=\"https://github.com/yezz123\"\u003e\u003ccode\u003e@​yezz123\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/375\"\u003epydantic/pydantic-extra-types#375\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/anthonycicc\"\u003e\u003ccode\u003e@​anthonycicc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/361\"\u003epydantic/pydantic-extra-types#361\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sshaheerkhann\"\u003e\u003ccode\u003e@​sshaheerkhann\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/367\"\u003epydantic/pydantic-extra-types#367\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bBlazewavE\"\u003e\u003ccode\u003e@​bBlazewavE\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/368\"\u003epydantic/pydantic-extra-types#368\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/toroleapinc\"\u003e\u003ccode\u003e@​toroleapinc\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/pull/372\"\u003epydantic/pydantic-extra-types#372\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-extra-types/compare/v2.11.0...v2.11.1\"\u003ehttps://github.com/pydantic/pydantic-extra-types/compare/v2.11.0...v2.11.1\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/blob/main/HISTORY.md\"\u003epydantic-extra-types's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eCHANGELOG\u003c/h1\u003e\n\u003ch2\u003eLatest Changes\u003c/h2\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/efe22fb050b6020950bb4797d36c4aca3c5340ec\"\u003e\u003ccode\u003eefe22fb\u003c/code\u003e\u003c/a\u003e 🔖 Release version 2.11.1  (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/6fc6756c43eb6045eab29c9ab6f37d03f17cc650\"\u003e\u003ccode\u003e6fc6756\u003c/code\u003e\u003c/a\u003e feat: add IBAN (International Bank Account Number) type (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/372\"\u003e#372\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/558e5c891bf86f9dc09fe1bfa47a93bec3f1cd2e\"\u003e\u003ccode\u003e558e5c8\u003c/code\u003e\u003c/a\u003e ⬆ Bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/369\"\u003e#369\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/aab5a5a6a19accb3905cb2825f55a8d10f056186\"\u003e\u003ccode\u003eaab5a5a\u003c/code\u003e\u003c/a\u003e ⬆ Bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/370\"\u003e#370\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/89b2a1615d7411f3fbab2319ef77845aee02b3d4\"\u003e\u003ccode\u003e89b2a16\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group with 2 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/496cf00733b33304ea0b8dae97c8b0e6c9c02c94\"\u003e\u003ccode\u003e496cf00\u003c/code\u003e\u003c/a\u003e Export Color from package \u003cstrong\u003einit\u003c/strong\u003e.py (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/07628d1099aa2751d3e9661134a28fa85fe6e2f8\"\u003e\u003ccode\u003e07628d1\u003c/code\u003e\u003c/a\u003e feat: migrate DSN types from pydantic.networks (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/368\"\u003e#368\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/b999077b5609188f8634d24a9961b1baeff7b64d\"\u003e\u003ccode\u003eb999077\u003c/code\u003e\u003c/a\u003e Add UUID v7 support (and v6/v8) (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/712421fd49fc49f68b68f74913d5e15d346fbcce\"\u003e\u003ccode\u003e712421f\u003c/code\u003e\u003c/a\u003e ⬆ Bump the python-packages group with 4 updates (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/365\"\u003e#365\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydantic/pydantic-extra-types/commit/a99dd63e81652f9e51082f6fc27d6997dbf0f070\"\u003e\u003ccode\u003ea99dd63\u003c/code\u003e\u003c/a\u003e ⬆ Bump actions/download-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pydantic/pydantic-extra-types/issues/363\"\u003e#363\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pydantic/pydantic-extra-types/compare/v2.11.0...v2.11.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pydantic-core` from 2.41.5 to 2.42.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydantic/pydantic-core/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyjwt` from 2.11.0 to 2.12.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jpadilla/pyjwt/releases\"\u003epyjwt's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.12.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd typing_extensions dependency for Python \u0026lt; 3.11 by \u003ca href=\"https://github.com/jpadilla\"\u003e\u003ccode\u003e@​jpadilla\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1151\"\u003ejpadilla/pyjwt#1151\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1\"\u003ehttps://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e2.12.0\u003c/h2\u003e\n\u003ch2\u003eSecurity\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eValidate the crit (Critical) Header Parameter defined in RFC 7515 §4.1.11. by \u003ca href=\"https://github.com/dmbs335\"\u003e\u003ccode\u003e@​dmbs335\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://github.com/jpadilla/pyjwt/security/advisories/GHSA-752w-5fwx-jx9f\"\u003eGHSA-752w-5fwx-jx9f\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1132\"\u003ejpadilla/pyjwt#1132\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(docs): fix docs build by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1137\"\u003ejpadilla/pyjwt#1137\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAnnotate PyJWKSet.keys for pyright by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1134\"\u003ejpadilla/pyjwt#1134\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: close HTTPError to prevent ResourceWarning on Python 3.14 by \u003ca href=\"https://github.com/veeceey\"\u003e\u003ccode\u003e@​veeceey\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1133\"\u003ejpadilla/pyjwt#1133\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore: remove superfluous constants by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1136\"\u003ejpadilla/pyjwt#1136\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1135\"\u003ejpadilla/pyjwt#1135\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003echore(tests): enable mypy by \u003ca href=\"https://github.com/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1138\"\u003ejpadilla/pyjwt#1138\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump actions/download-artifact from 7 to 8 by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1142\"\u003ejpadilla/pyjwt#1142\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1141\"\u003ejpadilla/pyjwt#1141\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e[pre-commit.ci] pre-commit autoupdate by \u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1145\"\u003ejpadilla/pyjwt#1145\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: do not store reference to algorithms dict on PyJWK by \u003ca href=\"https://github.com/akx\"\u003e\u003ccode\u003e@​akx\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1143\"\u003ejpadilla/pyjwt#1143\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse PyJWK algorithm when encoding without explicit algorithm by \u003ca href=\"https://github.com/jpadilla\"\u003e\u003ccode\u003e@​jpadilla\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1148\"\u003ejpadilla/pyjwt#1148\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/tamird\"\u003e\u003ccode\u003e@​tamird\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/jpadilla/pyjwt/pull/1137\"\u003ejpadilla/pyjwt#1137\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/jpadilla/pyjwt/pull/1133\"\u003ejpadilla/pyjwt#1133\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.0\"\u003ehttps://github.com/jpadilla/pyjwt/compare/2.11.0...2.12.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/jpadilla/pyjwt/blob/master/CHANGELOG.rst\"\u003epyjwt's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ccode\u003ev2.12.1 \u0026lt;https://github.com/jpadilla/pyjwt/compare/2.12.0...2.12.1\u0026gt;\u003c/code\u003e__\u003c/h2\u003e\n\u003cp\u003eFixed\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\n- Add missing ``typing_extensions`` dependency for Py...\n\n_Description has been truncated_","html_url":"https://github.com/ral-facilities/object-storage-api/pull/279","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ral-facilities%2Fobject-storage-api/issues/279","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/279/packages"}},{"old_version":"1.5.0","new_version":"1.6.0","update_type":"minor","path":null,"pr_created_at":"2026-03-22T07:14:07.000Z","version_change":"1.5.0 → 1.6.0","issue":{"uuid":"4115191683","node_id":"PR_kwDOQ5AU387MdgjY","number":107,"state":"open","title":"Bump the uv-deps group across 1 directory with 4 updates","user":"dependabot[bot]","labels":["dependencies","python:uv"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-03-22T07:14:07.000Z","updated_at":"2026-03-29T09:00:47.689Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"uv-deps","update_count":4,"packages":[{"name":"sentry-sdk","old_version":"2.54.0","new_version":"2.55.0","repository_url":"https://github.com/getsentry/sentry-python"},{"name":"pytest-cov","old_version":"7.0.0","new_version":"7.1.0","repository_url":"https://github.com/pytest-dev/pytest-cov"},{"name":"pytest-env","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pytest-dev/pytest-env"},{"name":"ruff","old_version":"0.15.4","new_version":"0.15.7","repository_url":"https://github.com/astral-sh/ruff"}],"path":null,"ecosystem":"pip"},"body":"Bumps the uv-deps group with 4 updates in the / directory: [sentry-sdk](https://github.com/getsentry/sentry-python), [pytest-cov](https://github.com/pytest-dev/pytest-cov), [pytest-env](https://github.com/pytest-dev/pytest-env) and [ruff](https://github.com/astral-sh/ruff).\n\nUpdates `sentry-sdk` from 2.54.0 to 2.55.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.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tool description to execute_tool 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/5596\"\u003e#5596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Add owner field to MonitorConfig by \u003ca href=\"https://github.com/julwhitney13\"\u003e\u003ccode\u003e@​julwhitney13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5610\"\u003e#5610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Add collector_url option to OTLPIntegration by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5603\"\u003e#5603\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Truncate list-based message content in AI monitoring 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/5631\"\u003e#5631\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Close span on \u003ccode\u003eGeneratorExit\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/5643\"\u003e#5643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(celery) Propagate user-set headers 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/5581\"\u003e#5581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Wrap finish_reason in array for gen_ai span attribute 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/5666\"\u003e#5666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Fix deadlock in log batcher 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/5684\"\u003e#5684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(profiler) Prevent buffer race condition during rapid start/stop cycles 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/5622\"\u003e#5622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(utils) Avoid double serialization of strings in safe_serialize 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/5587\"\u003e#5587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable unused import ruff check and fix unused imports 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/5652\"\u003e#5652\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(openai-agents) Remove inapplicable comment 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/5495\"\u003e#5495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd AGENTS.md 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/5579\"\u003e#5579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eset_attribute\u003c/code\u003e example to changelog 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/5578\"\u003e#5578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck system and response ID attributes on spans created by \u003ccode\u003estream()\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/5665\"\u003e#5665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip accumulation logic for unexpected types in streamed response 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/5564\"\u003e#5564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFactor out streamed result handling 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/5563\"\u003e#5563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStream valid JSON 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/5641\"\u003e#5641\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop mocking response iterator 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/5573\"\u003e#5573\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\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.55.0\u003c/h2\u003e\n\u003ch3\u003eNew Features ✨\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eRecord finish reasons in AI monitoring 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/5678\"\u003e#5678\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit \u003ccode\u003egen_ai.chat\u003c/code\u003e spans for asynchronous \u003ccode\u003emessages.stream()\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/5572\"\u003e#5572\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEmit AI Client Spans for synchronous \u003ccode\u003emessages.stream()\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/5565\"\u003e#5565\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSet gen_ai.response.id span attribute 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/5662\"\u003e#5662\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003egen_ai.system\u003c/code\u003e attribute to 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/5661\"\u003e#5661\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003ePydantic Ai\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eSupport ImageUrl content type in span instrumentation 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/5629\"\u003e#5629\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd tool description to execute_tool 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/5596\"\u003e#5596\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOther\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e(crons) Add owner field to MonitorConfig by \u003ca href=\"https://github.com/julwhitney13\"\u003e\u003ccode\u003e@​julwhitney13\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5610\"\u003e#5610\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(otlp) Add collector_url option to OTLPIntegration by \u003ca href=\"https://github.com/sl0thentr0py\"\u003e\u003ccode\u003e@​sl0thentr0py\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/getsentry/sentry-python/pull/5603\"\u003e#5603\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug Fixes 🐛\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(ai) Truncate list-based message content in AI monitoring 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/5631\"\u003e#5631\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(anthropic) Close span on \u003ccode\u003eGeneratorExit\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/5643\"\u003e#5643\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(celery) Propagate user-set headers 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/5581\"\u003e#5581\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(langchain) Wrap finish_reason in array for gen_ai span attribute 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/5666\"\u003e#5666\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(logging) Fix deadlock in log batcher 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/5684\"\u003e#5684\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(profiler) Prevent buffer race condition during rapid start/stop cycles 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/5622\"\u003e#5622\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e(utils) Avoid double serialization of strings in safe_serialize 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/5587\"\u003e#5587\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable unused import ruff check and fix unused imports 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/5652\"\u003e#5652\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation 📚\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e(openai-agents) Remove inapplicable comment 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/5495\"\u003e#5495\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd AGENTS.md 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/5579\"\u003e#5579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eset_attribute\u003c/code\u003e example to changelog 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/5578\"\u003e#5578\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eInternal Changes 🔧\u003c/h3\u003e\n\u003ch4\u003eAnthropic\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003eCheck system and response ID attributes on spans created by \u003ccode\u003estream()\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/5665\"\u003e#5665\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSkip accumulation logic for unexpected types in streamed response 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/5564\"\u003e#5564\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFactor out streamed result handling 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/5563\"\u003e#5563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStream valid JSON 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/5641\"\u003e#5641\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStop mocking response iterator 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/5573\"\u003e#5573\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch4\u003eOpenai Agents\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/038a429023b9092503f65d554e7c2ad230bba542\"\u003e\u003ccode\u003e038a429\u003c/code\u003e\u003c/a\u003e release: 2.55.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b29c4bb5ed300d63b4f78eeb1c69c1c6e0f9ec9b\"\u003e\u003ccode\u003eb29c4bb\u003c/code\u003e\u003c/a\u003e fix(logging): Fix deadlock in log batcher (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5684\"\u003e#5684\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/b905cd3297fd824fc0f7ce41c9d67a4e85b43fc2\"\u003e\u003ccode\u003eb905cd3\u003c/code\u003e\u003c/a\u003e feat(anthropic): Record finish reasons in AI monitoring spans (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5678\"\u003e#5678\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/6ea663f71d404bf7a261f31a22602ed85fb93544\"\u003e\u003ccode\u003e6ea663f\u003c/code\u003e\u003c/a\u003e fix(langchain): Wrap finish_reason in array for gen_ai span attribute (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5666\"\u003e#5666\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/6345af9598de0dd730e85048e5fc68733bbd8b98\"\u003e\u003ccode\u003e6345af9\u003c/code\u003e\u003c/a\u003e fix(ai): Truncate list-based message content in AI monitoring (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5631\"\u003e#5631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/01346a9f2d6c900fed8d830c31143a6c089f0fc2\"\u003e\u003ccode\u003e01346a9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/create-github-app-token from 2.2.1 to 3.0.0 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5667\"\u003e#5667\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/0b946246062956e5228329b3a140c1ad3891800b\"\u003e\u003ccode\u003e0b94624\u003c/code\u003e\u003c/a\u003e build(deps): bump getsentry/testing-ai-sdk-integrations from 285c012e522f2415...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/39cf94d458093392c78f92aa167f566827b0f30d\"\u003e\u003ccode\u003e39cf94d\u003c/code\u003e\u003c/a\u003e build(deps): bump getsentry/craft from 2.23.1 to 2.24.1 (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5668\"\u003e#5668\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/ada153bcdc96813064bacccbc523d66cc1368dfe\"\u003e\u003ccode\u003eada153b\u003c/code\u003e\u003c/a\u003e ref: Add cont profiling support to span first (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5672\"\u003e#5672\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/getsentry/sentry-python/commit/0b5f4f85b7d7fd93a6f8dc7932e6b3599c7b3da9\"\u003e\u003ccode\u003e0b5f4f8\u003c/code\u003e\u003c/a\u003e ci: 🤖 Update test matrix with new releases (03/16) (\u003ca href=\"https://redirect.github.com/getsentry/sentry-python/issues/5671\"\u003e#5671\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/getsentry/sentry-python/compare/2.54.0...2.55.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-cov` from 7.0.0 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst\"\u003epytest-cov's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0 (2026-03-21)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFixed total coverage computation to always be consistent, regardless of reporting settings.\nPreviously some reports could produce different total counts, and consequently can make --cov-fail-under behave different depending on\nreporting options.\nSee \u003ccode\u003e[#641](https://github.com/pytest-dev/pytest-cov/issues/641) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/641\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eImprove handling of ResourceWarning from sqlite3.\u003c/p\u003e\n\u003cp\u003eThe plugin adds warning filter for sqlite3 \u003ccode\u003eResourceWarning\u003c/code\u003e unclosed database (since 6.2.0).\nIt checks if there is already existing plugin for this message by comparing filter regular expression.\nWhen filter is specified on command line the message is escaped and does not match an expected message.\nA check for an escaped regular expression is added to handle this case.\u003c/p\u003e\n\u003cp\u003eWith this fix one can suppress \u003ccode\u003eResourceWarning\u003c/code\u003e from sqlite3 from command line::\u003c/p\u003e\n\u003cp\u003epytest -W \u0026quot;ignore:unclosed database in \u0026lt;sqlite3.Connection object at:ResourceWarning\u0026quot; ...\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eVarious improvements to documentation.\nContributed by Art Pelling in \u003ccode\u003e[#718](https://github.com/pytest-dev/pytest-cov/issues/718) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/718\u0026gt;\u003c/code\u003e_ and\n\u0026quot;vivodi\u0026quot; in \u003ccode\u003e[#738](https://github.com/pytest-dev/pytest-cov/issues/738) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/738\u0026gt;\u003c/code\u003e\u003cem\u003e.\nAlso closed \u003ccode\u003e[#736](https://github.com/pytest-dev/pytest-cov/issues/736) \u0026lt;https://github.com/pytest-dev/pytest-cov/issues/736\u0026gt;\u003c/code\u003e\u003c/em\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFixed some assertions in tests.\nContributed by in Markéta Machová in \u003ccode\u003e[#722](https://github.com/pytest-dev/pytest-cov/issues/722) \u0026lt;https://github.com/pytest-dev/pytest-cov/pull/722\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemoved unnecessary coverage configuration copying (meant as a backup because reporting commands had configuration side-effects before coverage 5.0).\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/pytest-dev/pytest-cov/commit/66c8a526b1246b5eb8fb1bc218878131bc628622\"\u003e\u003ccode\u003e66c8a52\u003c/code\u003e\u003c/a\u003e Bump version: 7.0.0 → 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/f7076624784332594aa4cb3585d4757d295db15e\"\u003e\u003ccode\u003ef707662\u003c/code\u003e\u003c/a\u003e Make the examples use pypy 3.11.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/6049a7847872e3139e6c82e93787123df5dc8672\"\u003e\u003ccode\u003e6049a78\u003c/code\u003e\u003c/a\u003e Make context test use the old ctracer (seems the new sysmon tracer behaves di...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/8ebf20bbbc73478b3f8fd36d30237d9ea083f06b\"\u003e\u003ccode\u003e8ebf20b\u003c/code\u003e\u003c/a\u003e Update changelog.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/861d30e60d571f97259c6b718b71c819d5dbc3b9\"\u003e\u003ccode\u003e861d30e\u003c/code\u003e\u003c/a\u003e Remove the backup context manager  - shouldn't be needed since coverage 5.0, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/fd4c956014035527f0c3c8d7faef3f8cfdadac7f\"\u003e\u003ccode\u003efd4c956\u003c/code\u003e\u003c/a\u003e Pass the precision on the nulled total (seems that there's some caching goion...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/78c9c4ecb005faf4962fd86ff7bf9c9cce9554d6\"\u003e\u003ccode\u003e78c9c4e\u003c/code\u003e\u003c/a\u003e Only run the 3.9 on older deps.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/4849a922e8be725c662a3d9175da571ace6545dc\"\u003e\u003ccode\u003e4849a92\u003c/code\u003e\u003c/a\u003e Punctuation.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/197c35e2f37031fd1927715307ab6eed7cb3d2b7\"\u003e\u003ccode\u003e197c35e\u003c/code\u003e\u003c/a\u003e Update changelog and hopefully I don't forget to publish release again :))\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-cov/commit/14dc1c92d44108384e39803888635fdbfc578b7f\"\u003e\u003ccode\u003e14dc1c9\u003c/code\u003e\u003c/a\u003e Update examples to use 3.11 and make the adhoc layout example look a bit more...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-cov/compare/v7.0.0...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-env` from 1.5.0 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/pytest-dev/pytest-env/releases\"\u003epytest-env's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.6.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e✨ feat(env): preserve existing env values by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/213\"\u003epytest-dev/pytest-env#213\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.1...1.6.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e1.5.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd permissions to workflows by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/203\"\u003epytest-dev/pytest-env#203\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd SECURITY.md to .github/ by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/206\"\u003epytest-dev/pytest-env#206\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd missing .github config files by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/207\"\u003epytest-dev/pytest-env#207\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eStandardize .github files to .yaml suffix by \u003ca href=\"https://github.com/gaborbernat\"\u003e\u003ccode\u003e@​gaborbernat\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/208\"\u003epytest-dev/pytest-env#208\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix verbose source attribution when falling back to INI env by \u003ca href=\"https://github.com/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\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/shuofengzhang\"\u003e\u003ccode\u003e@​shuofengzhang\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/pull/211\"\u003epytest-dev/pytest-env#211\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.1\"\u003ehttps://github.com/pytest-dev/pytest-env/compare/1.5.0...1.5.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/pytest-dev/pytest-env/commit/8bd22d1b9d9d7594c408040610868743ca3d5a9b\"\u003e\u003ccode\u003e8bd22d1\u003c/code\u003e\u003c/a\u003e ✨ feat(env): preserve existing env values (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/213\"\u003e#213\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81f9e0e19d17169f03d9c078818421f34c45a67d\"\u003e\u003ccode\u003e81f9e0e\u003c/code\u003e\u003c/a\u003e Fix verbose source attribution when falling back to INI env (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/211\"\u003e#211\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/81dc95d54f09ebb9b6e5f704b86a4bb60552b08b\"\u003e\u003ccode\u003e81dc95d\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/210\"\u003e#210\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/439cc76fecbfbb95b6d3123a32bbc8030a9f95c0\"\u003e\u003ccode\u003e439cc76\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/209\"\u003e#209\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/b1b498e28cb76863a6e88c713a9bb09cdfbb0857\"\u003e\u003ccode\u003eb1b498e\u003c/code\u003e\u003c/a\u003e Standardize .github files to .yaml suffix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/066dadc7b4f8a40818e2c19c6bbd7281671eb081\"\u003e\u003ccode\u003e066dadc\u003c/code\u003e\u003c/a\u003e Add missing .github config files\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/7d01327e395f0080dd6256c0cf30f2a8693c3c32\"\u003e\u003ccode\u003e7d01327\u003c/code\u003e\u003c/a\u003e Add SECURITY.md to .github/\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/04259c91dfbd4b77a053bcad5fd63d5d7d78ae5d\"\u003e\u003ccode\u003e04259c9\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/download-artifact from 7 to 8 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/205\"\u003e#205\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/4fdb9d8d6defe6fc40069455ec672fa3f1bef51f\"\u003e\u003ccode\u003e4fdb9d8\u003c/code\u003e\u003c/a\u003e build(deps): bump actions/upload-artifact from 6 to 7 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/204\"\u003e#204\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-env/commit/672e44f059e03870caf87054aa7426411a8a9658\"\u003e\u003ccode\u003e672e44f\u003c/code\u003e\u003c/a\u003e Add permissions to workflows (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-env/issues/203\"\u003e#203\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-env/compare/1.5.0...1.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.4 to 0.15.7\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.7\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.15.7\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.15.7/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.15.7/ruff-installer.ps1 | iex\u0026quot;\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/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.15.7\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-19.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDisplay output severity in preview (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23845\"\u003e#23845\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDon't show \u003ccode\u003enoqa\u003c/code\u003e hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eServer\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDon't return code actions for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23905\"\u003e#23905\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd company AI policy to contributing guide (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24021\"\u003e#24021\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDocument editor features for Markdown code formatting (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23924\"\u003e#23924\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eOther changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUse PEP 639 license information (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/19661\"\u003e#19661\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/tmimmanuel\"\u003e\u003ccode\u003e@​tmimmanuel\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DimitriPapadopoulos\"\u003e\u003ccode\u003e@​DimitriPapadopoulos\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amyreese\"\u003e\u003ccode\u003e@​amyreese\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/statxc\"\u003e\u003ccode\u003e@​statxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hunterhogan\"\u003e\u003ccode\u003e@​hunterhogan\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/renovate\"\u003e\u003ccode\u003e@​renovate\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.15.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2026-03-12.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for \u003ccode\u003elazy\u003c/code\u003e import parsing (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23755\"\u003e#23755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd support for star-unpacking of comprehensions (PEP 798) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23788\"\u003e#23788\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReject semantic syntax errors for lazy imports (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23757\"\u003e#23757\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eDrop a few rules from the preview default set (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23879\"\u003e#23879\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag \u003ccode\u003eVariable.get()\u003c/code\u003e calls outside of task execution context (\u003ccode\u003eAIR003\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23584\"\u003e#23584\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eairflow\u003c/code\u003e] Flag runtime-varying values in DAG/task constructor arguments (\u003ccode\u003eAIR304\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23631\"\u003e#23631\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bugbear\u003c/code\u003e] Implement \u003ccode\u003edelattr-with-constant\u003c/code\u003e (\u003ccode\u003eB043\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/23737\"\u003e#23737\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/0ef39de46c006994fb1e90f7bd4ba09c0b2c1f79\"\u003e\u003ccode\u003e0ef39de\u003c/code\u003e\u003c/a\u003e Bump 0.15.7 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24049\"\u003e#24049\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/beb543b5c666be9fd3f13c88df818f202b63e9d0\"\u003e\u003ccode\u003ebeb543b\u003c/code\u003e\u003c/a\u003e [ty] ecosystem-analyzer: Fail on newly panicking projects (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24043\"\u003e#24043\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/378fe730929ccd67a7f2426b3012093da814b31d\"\u003e\u003ccode\u003e378fe73\u003c/code\u003e\u003c/a\u003e Don't show noqa hover for non-Python documents (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24040\"\u003e#24040\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/b5665bd18eecab4d3b5ab1256b36904cd99a4c57\"\u003e\u003ccode\u003eb5665bd\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epylint\u003c/code\u003e] Improve phrasing (\u003ccode\u003ePLC0208\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24033\"\u003e#24033\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6e20f2219020e61eeae29458013d2d3684f75a79\"\u003e\u003ccode\u003e6e20f22\u003c/code\u003e\u003c/a\u003e test: migrate \u003ccode\u003eshow_settings\u003c/code\u003e and \u003ccode\u003eversion\u003c/code\u003e tests to use \u003ccode\u003eCliTest\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23702\"\u003e#23702\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/f99b284c1fe1399a82da7f6669467488017d44a7\"\u003e\u003ccode\u003ef99b284\u003c/code\u003e\u003c/a\u003e Drain file watcher events during test setup (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24030\"\u003e#24030\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/744c996c35016a8c0e05aa2823f4f822ac7b842c\"\u003e\u003ccode\u003e744c996\u003c/code\u003e\u003c/a\u003e [ty] Filter out unsatisfiable inference attempts during generic call narrowin...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/16160958bdafb6106b6fffc72ffe2e4db0c0ac33\"\u003e\u003ccode\u003e1616095\u003c/code\u003e\u003c/a\u003e [ty] Avoid inferring intersection types for call arguments (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/23933\"\u003e#23933\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7f275f431bf8c60d59601b74d441e9f4bef89f35\"\u003e\u003ccode\u003e7f275f4\u003c/code\u003e\u003c/a\u003e [ty] Pin mypy_primer in \u003ccode\u003esetup_primer_project.py\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24020\"\u003e#24020\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/7255e362e4b171a641222279cd28d2ca88a74fdc\"\u003e\u003ccode\u003e7255e36\u003c/code\u003e\u003c/a\u003e [\u003ccode\u003epycodestyle\u003c/code\u003e] Recognize \u003ccode\u003epyrefly:\u003c/code\u003e as a pragma comment (\u003ccode\u003eE501\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/24019\"\u003e#24019\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.15.4...0.15.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/neikow/urban-platform/pull/107","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/neikow%2Furban-platform/issues/107","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/107/packages"}}]}