Dependabot 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.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase will rebase this PR
@dependabot recreate will recreate this PR, overwriting any edits that have been made to it
@dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
@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)
@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)
@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)
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.15.8 to 0.15.9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p>
<blockquote>
<h2>0.15.9</h2>
<h2>Release Notes</h2>
<p>Released on 2026-04-02.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>pyflakes</code>] Flag annotated variable redeclarations as <code>F811</code> in preview mode (<a href="https://redirect.github.com/astral-sh/ruff/pull/24244">#24244</a>)</li>
<li>[<code>ruff</code>] Allow dunder-named assignments in non-strict mode for <code>RUF067</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24089">#24089</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-errmsg</code>] Avoid shadowing existing <code>msg</code> in fix for <code>EM101</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24363">#24363</a>)</li>
<li>[<code>flake8-simplify</code>] Ignore pre-initialization references in <code>SIM113</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24235">#24235</a>)</li>
<li>[<code>pycodestyle</code>] Fix <code>W391</code> fixes for consecutive empty notebook cells (<a href="https://redirect.github.com/astral-sh/ruff/pull/24236">#24236</a>)</li>
<li>[<code>pyupgrade</code>] Fix <code>UP008</code> nested class matching (<a href="https://redirect.github.com/astral-sh/ruff/pull/24273">#24273</a>)</li>
<li>[<code>pyupgrade</code>] Ignore strings with string-only escapes (<code>UP012</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16058">#16058</a>)</li>
<li>[<code>ruff</code>] <code>RUF072</code>: skip formfeeds on dedent (<a href="https://redirect.github.com/astral-sh/ruff/pull/24308">#24308</a>)</li>
<li>[<code>ruff</code>] Avoid re-using symbol in <code>RUF024</code> fix (<a href="https://redirect.github.com/astral-sh/ruff/pull/24316">#24316</a>)</li>
<li>[<code>ruff</code>] Parenthesize expression in <code>RUF050</code> fix (<a href="https://redirect.github.com/astral-sh/ruff/pull/24234">#24234</a>)</li>
<li>Disallow starred expressions as values of starred expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/24280">#24280</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-simplify</code>] Suppress <code>SIM105</code> for <code>except*</code> before Python 3.12 (<a href="https://redirect.github.com/astral-sh/ruff/pull/23869">#23869</a>)</li>
<li>[<code>pyflakes</code>] Extend <code>F507</code> to flag <code>%</code>-format strings with zero placeholders (<a href="https://redirect.github.com/astral-sh/ruff/pull/24215">#24215</a>)</li>
<li>[<code>pyupgrade</code>] <code>UP018</code> should detect more unnecessarily wrapped literals (UP018) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24093">#24093</a>)</li>
<li>[<code>pyupgrade</code>] Fix <code>UP008</code> callable scope handling to support lambdas (<a href="https://redirect.github.com/astral-sh/ruff/pull/24274">#24274</a>)</li>
<li>[<code>ruff</code>] <code>RUF010</code>: Mark fix as unsafe when it deletes a comment (<a href="https://redirect.github.com/astral-sh/ruff/pull/24270">#24270</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Add <code>nested-string-quote-style</code> formatting option (<a href="https://redirect.github.com/astral-sh/ruff/pull/24312">#24312</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>[<code>flake8-bugbear</code>] Clarify RUF071 fix safety for non-path string comparisons (<a href="https://redirect.github.com/astral-sh/ruff/pull/24149">#24149</a>)</li>
<li>[<code>flake8-type-checking</code>] Clarify import cycle wording for <code>TC001</code>/<code>TC002</code>/<code>TC003</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24322">#24322</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Avoid rendering fix lines with trailing whitespace after <code>|</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24343">#24343</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/charliermarsh"><code>@charliermarsh</code></a></li>
<li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li>
<li><a href="https://github.com/tranhoangtu-it"><code>@tranhoangtu-it</code></a></li>
<li><a href="https://github.com/dylwil3"><code>@dylwil3</code></a></li>
<li><a href="https://github.com/zsol"><code>@zsol</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p>
<blockquote>
<h2>0.15.9</h2>
<p>Released on 2026-04-02.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>pyflakes</code>] Flag annotated variable redeclarations as <code>F811</code> in preview mode (<a href="https://redirect.github.com/astral-sh/ruff/pull/24244">#24244</a>)</li>
<li>[<code>ruff</code>] Allow dunder-named assignments in non-strict mode for <code>RUF067</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24089">#24089</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>flake8-errmsg</code>] Avoid shadowing existing <code>msg</code> in fix for <code>EM101</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24363">#24363</a>)</li>
<li>[<code>flake8-simplify</code>] Ignore pre-initialization references in <code>SIM113</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24235">#24235</a>)</li>
<li>[<code>pycodestyle</code>] Fix <code>W391</code> fixes for consecutive empty notebook cells (<a href="https://redirect.github.com/astral-sh/ruff/pull/24236">#24236</a>)</li>
<li>[<code>pyupgrade</code>] Fix <code>UP008</code> nested class matching (<a href="https://redirect.github.com/astral-sh/ruff/pull/24273">#24273</a>)</li>
<li>[<code>pyupgrade</code>] Ignore strings with string-only escapes (<code>UP012</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/16058">#16058</a>)</li>
<li>[<code>ruff</code>] <code>RUF072</code>: skip formfeeds on dedent (<a href="https://redirect.github.com/astral-sh/ruff/pull/24308">#24308</a>)</li>
<li>[<code>ruff</code>] Avoid re-using symbol in <code>RUF024</code> fix (<a href="https://redirect.github.com/astral-sh/ruff/pull/24316">#24316</a>)</li>
<li>[<code>ruff</code>] Parenthesize expression in <code>RUF050</code> fix (<a href="https://redirect.github.com/astral-sh/ruff/pull/24234">#24234</a>)</li>
<li>Disallow starred expressions as values of starred expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/24280">#24280</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-simplify</code>] Suppress <code>SIM105</code> for <code>except*</code> before Python 3.12 (<a href="https://redirect.github.com/astral-sh/ruff/pull/23869">#23869</a>)</li>
<li>[<code>pyflakes</code>] Extend <code>F507</code> to flag <code>%</code>-format strings with zero placeholders (<a href="https://redirect.github.com/astral-sh/ruff/pull/24215">#24215</a>)</li>
<li>[<code>pyupgrade</code>] <code>UP018</code> should detect more unnecessarily wrapped literals (UP018) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24093">#24093</a>)</li>
<li>[<code>pyupgrade</code>] Fix <code>UP008</code> callable scope handling to support lambdas (<a href="https://redirect.github.com/astral-sh/ruff/pull/24274">#24274</a>)</li>
<li>[<code>ruff</code>] <code>RUF010</code>: Mark fix as unsafe when it deletes a comment (<a href="https://redirect.github.com/astral-sh/ruff/pull/24270">#24270</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Add <code>nested-string-quote-style</code> formatting option (<a href="https://redirect.github.com/astral-sh/ruff/pull/24312">#24312</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>[<code>flake8-bugbear</code>] Clarify RUF071 fix safety for non-path string comparisons (<a href="https://redirect.github.com/astral-sh/ruff/pull/24149">#24149</a>)</li>
<li>[<code>flake8-type-checking</code>] Clarify import cycle wording for <code>TC001</code>/<code>TC002</code>/<code>TC003</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24322">#24322</a>)</li>
</ul>
<h3>Other changes</h3>
<ul>
<li>Avoid rendering fix lines with trailing whitespace after <code>|</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24343">#24343</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/charliermarsh"><code>@charliermarsh</code></a></li>
<li><a href="https://github.com/MichaReiser"><code>@MichaReiser</code></a></li>
<li><a href="https://github.com/tranhoangtu-it"><code>@tranhoangtu-it</code></a></li>
<li><a href="https://github.com/dylwil3"><code>@dylwil3</code></a></li>
<li><a href="https://github.com/zsol"><code>@zsol</code></a></li>
<li><a href="https://github.com/renovate"><code>@renovate</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/astral-sh/ruff/commit/724ccc1ae8a61e872cf58435f2c073189dc248f2"><code>724ccc1</code></a> Bump 0.15.9 (<a href="https://redirect.github.com/astral-sh/ruff/issues/24369">#24369</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/96d9e0964cb87498ef15510ea7f896ba336659f9"><code>96d9e09</code></a> [ty] Move the <code>deferred</code> submodule inside <code>infer/builder</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/24368">#24368</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/130da28d610a466721bb942e8a5e0ec47bbe3469"><code>130da28</code></a> [ty] Infer the <code>extra_items</code> keyword argument to class-based TypedDicts as an...</li>
<li><a href="https://github.com/astral-sh/ruff/commit/a617c54b0708a8c1eb850cc3b2a5caee21137a28"><code>a617c54</code></a> [ty] Validate type qualifiers in functional TypedDict fields and the `extra_i...</li>
<li><a href="https://github.com/astral-sh/ruff/commit/d8517087c6cd0aa4f33dcede605ff642941dd74b"><code>d851708</code></a> [ty] Improve robustness of various type-qualifier-related checks (<a href="https://redirect.github.com/astral-sh/ruff/issues/24251">#24251</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/aecb5877c6d6fe035c03aba994ec3a7b935b8f02"><code>aecb587</code></a> Only run the release-gate on workflow dispatch (<a href="https://redirect.github.com/astral-sh/ruff/issues/24366">#24366</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/b88957174311030927bf564da32d05dee0eb89d9"><code>b889571</code></a> [ty] Use <code>infer_type_expression</code> for parsing parameter annotations and return...</li>
<li><a href="https://github.com/astral-sh/ruff/commit/3286a62be986a8d6d04d95b3bc619f06e012fa2f"><code>3286a62</code></a> Add a "release-gate" step to the release workflow (<a href="https://redirect.github.com/astral-sh/ruff/issues/24365">#24365</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/5f88756ee10e3faf0e96c883c34c95fc78200536"><code>5f88756</code></a> Disallow starred expressions as values of starred expressions (<a href="https://redirect.github.com/astral-sh/ruff/issues/24280">#24280</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/5c59f8a46965cac3470f09972196c8620faa4626"><code>5c59f8a</code></a> [<code>pyupgrade</code>] Ignore strings with string-only escapes (<code>UP012</code>) (<a href="https://redirect.github.com/astral-sh/ruff/issues/16058">#16058</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.15.8...0.15.9">compare view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot 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`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@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)
- `@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)
- `@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)
</details>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Bumps ruff from 0.15.8 to 0.15.9.
Release notes
Sourced from ruff's releases.
... (truncated)
Changelog
Sourced from ruff's changelog.
... (truncated)
Commits
724ccc1Bump 0.15.9 (#24369)96d9e09[ty] Move thedeferredsubmodule insideinfer/builder(#24368)130da28[ty] Infer theextra_itemskeyword argument to class-based TypedDicts as an...a617c54[ty] Validate type qualifiers in functional TypedDict fields and the `extra_i...d851708[ty] Improve robustness of various type-qualifier-related checks (#24251)aecb587Only run the release-gate on workflow dispatch (#24366)b889571[ty] Useinfer_type_expressionfor parsing parameter annotations and return...3286a62Add a "release-gate" step to the release workflow (#24365)5f88756Disallow starred expressions as values of starred expressions (#24280)5c59f8a[pyupgrade] Ignore strings with string-only escapes (UP012) (#16058)Dependabot 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.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)