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.20 to 0.15.21.
<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.21</h2>
<h2>Release Notes</h2>
<p>Released on 2026-07-09.</p>
<h3>Preview features</h3>
<ul>
<li>Add <code>--add-ignore</code> for adding <code>ruff:ignore</code> comments (<a href="https://redirect.github.com/astral-sh/ruff/pull/26346">#26346</a>)</li>
<li>[<code>flake8-comprehensions</code>] Drop <code>C409</code> tuple comprehension preview behavior (<a href="https://redirect.github.com/astral-sh/ruff/pull/25707">#25707</a>)</li>
<li>Avoid whitespace normalization when formatting comments (<a href="https://redirect.github.com/astral-sh/ruff/pull/26455">#26455</a>)</li>
<li>[<code>pyupgrade</code>] Lint and fix use of deprecated <code>abc</code> decorators (<code>UP051</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/26417">#26417</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Refine non-empty f-string detection (<a href="https://redirect.github.com/astral-sh/ruff/pull/26526">#26526</a>)</li>
<li>Detect syntax errors in individual notebook cells (<a href="https://redirect.github.com/astral-sh/ruff/pull/26419">#26419</a>)</li>
<li>[<code>flake8-implicit-str-concat</code>] Fix <code>ISC003</code> autofix incorrectly stripping <code>+</code> from comments (<a href="https://redirect.github.com/astral-sh/ruff/pull/26554">#26554</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-executable</code>] Mark <code>EXE004</code> fix as unsafe (<a href="https://redirect.github.com/astral-sh/ruff/pull/26033">#26033</a>)</li>
<li>[<code>flake8-pyi</code>] Mark <code>PYI061</code> fixes as unsafe in Python files (<a href="https://redirect.github.com/astral-sh/ruff/pull/26533">#26533</a>)</li>
<li>[<code>pydocstyle</code>] Skip <code>overload-with-docstring</code> in stub files (<code>D418</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/26318">#26318</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid per-token source index visitor calls (<a href="https://redirect.github.com/astral-sh/ruff/pull/26506">#26506</a>)</li>
<li>Cache parenthesized expression boundaries in the formatter (<a href="https://redirect.github.com/astral-sh/ruff/pull/26344">#26344</a>)</li>
<li>Improve performance of rendering edits in preview mode (<a href="https://redirect.github.com/astral-sh/ruff/pull/26565">#26565</a>)</li>
<li>Inline <code>fits_element</code> in formatter (<a href="https://redirect.github.com/astral-sh/ruff/pull/26429">#26429</a>)</li>
<li>Inline formatter printing hot paths (<a href="https://redirect.github.com/astral-sh/ruff/pull/26504">#26504</a>)</li>
<li>Lazily create builtin bindings (<a href="https://redirect.github.com/astral-sh/ruff/pull/26510">#26510</a>)</li>
<li>Skip empty trivia scans in the source indexer (<a href="https://redirect.github.com/astral-sh/ruff/pull/26507">#26507</a>)</li>
<li>Use ICF for macOS release builds (<a href="https://redirect.github.com/astral-sh/ruff/pull/25780">#25780</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Add <code>--extend-exclude</code> to <code>ruff format</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/26372">#26372</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Add "How does Ruff's import sorting compare to isort?" link to README (<a href="https://redirect.github.com/astral-sh/ruff/pull/26530">#26530</a>)</li>
<li>Fix Mozilla Firefox repository link in README (<a href="https://redirect.github.com/astral-sh/ruff/pull/26537">#26537</a>)</li>
<li>[<code>flake8-bandit</code>] Fix misleading docstring for <code>mako-templates</code> (<code>S702</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/26432">#26432</a>)</li>
<li>[<code>ruff</code>] Fix non-triggering example for <code>if-key-in-dict-del</code> (<code>RUF051</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/26433">#26433</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/EkriirkE"><code>@EkriirkE</code></a></li>
<li><a href="https://github.com/tingerrr"><code>@tingerrr</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.21</h2>
<p>Released on 2026-07-09.</p>
<h3>Preview features</h3>
<ul>
<li>Add <code>--add-ignore</code> for adding <code>ruff:ignore</code> comments (<a href="https://redirect.github.com/astral-sh/ruff/pull/26346">#26346</a>)</li>
<li>[<code>flake8-comprehensions</code>] Drop <code>C409</code> tuple comprehension preview behavior (<a href="https://redirect.github.com/astral-sh/ruff/pull/25707">#25707</a>)</li>
<li>Avoid whitespace normalization when formatting comments (<a href="https://redirect.github.com/astral-sh/ruff/pull/26455">#26455</a>)</li>
<li>[<code>pyupgrade</code>] Lint and fix use of deprecated <code>abc</code> decorators (<code>UP051</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/26417">#26417</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Refine non-empty f-string detection (<a href="https://redirect.github.com/astral-sh/ruff/pull/26526">#26526</a>)</li>
<li>Detect syntax errors in individual notebook cells (<a href="https://redirect.github.com/astral-sh/ruff/pull/26419">#26419</a>)</li>
<li>[<code>flake8-implicit-str-concat</code>] Fix <code>ISC003</code> autofix incorrectly stripping <code>+</code> from comments (<a href="https://redirect.github.com/astral-sh/ruff/pull/26554">#26554</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>flake8-executable</code>] Mark <code>EXE004</code> fix as unsafe (<a href="https://redirect.github.com/astral-sh/ruff/pull/26033">#26033</a>)</li>
<li>[<code>flake8-pyi</code>] Mark <code>PYI061</code> fixes as unsafe in Python files (<a href="https://redirect.github.com/astral-sh/ruff/pull/26533">#26533</a>)</li>
<li>[<code>pydocstyle</code>] Skip <code>overload-with-docstring</code> in stub files (<code>D418</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/26318">#26318</a>)</li>
</ul>
<h3>Performance</h3>
<ul>
<li>Avoid per-token source index visitor calls (<a href="https://redirect.github.com/astral-sh/ruff/pull/26506">#26506</a>)</li>
<li>Cache parenthesized expression boundaries in the formatter (<a href="https://redirect.github.com/astral-sh/ruff/pull/26344">#26344</a>)</li>
<li>Improve performance of rendering edits in preview mode (<a href="https://redirect.github.com/astral-sh/ruff/pull/26565">#26565</a>)</li>
<li>Inline <code>fits_element</code> in formatter (<a href="https://redirect.github.com/astral-sh/ruff/pull/26429">#26429</a>)</li>
<li>Inline formatter printing hot paths (<a href="https://redirect.github.com/astral-sh/ruff/pull/26504">#26504</a>)</li>
<li>Lazily create builtin bindings (<a href="https://redirect.github.com/astral-sh/ruff/pull/26510">#26510</a>)</li>
<li>Skip empty trivia scans in the source indexer (<a href="https://redirect.github.com/astral-sh/ruff/pull/26507">#26507</a>)</li>
<li>Use ICF for macOS release builds (<a href="https://redirect.github.com/astral-sh/ruff/pull/25780">#25780</a>)</li>
</ul>
<h3>Formatter</h3>
<ul>
<li>Add <code>--extend-exclude</code> to <code>ruff format</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/26372">#26372</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Add "How does Ruff's import sorting compare to isort?" link to README (<a href="https://redirect.github.com/astral-sh/ruff/pull/26530">#26530</a>)</li>
<li>Fix Mozilla Firefox repository link in README (<a href="https://redirect.github.com/astral-sh/ruff/pull/26537">#26537</a>)</li>
<li>[<code>flake8-bandit</code>] Fix misleading docstring for <code>mako-templates</code> (<code>S702</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/26432">#26432</a>)</li>
<li>[<code>ruff</code>] Fix non-triggering example for <code>if-key-in-dict-del</code> (<code>RUF051</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/26433">#26433</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/EkriirkE"><code>@EkriirkE</code></a></li>
<li><a href="https://github.com/tingerrr"><code>@tingerrr</code></a></li>
<li><a href="https://github.com/s-rigaud"><code>@s-rigaud</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/3e1f63645109e69f9bccc7be354c5ee4672fb8f3"><code>3e1f636</code></a> Bump 0.15.21 (<a href="https://redirect.github.com/astral-sh/ruff/issues/26676">#26676</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/4059807d0c853fbb79110b1f5fd7212e1a532888"><code>4059807</code></a> [ty] Infer metaclass-declared attributes on class instances (<a href="https://redirect.github.com/astral-sh/ruff/issues/26512">#26512</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/013e5d0ff64e6198af1770f8b71d35d1390def39"><code>013e5d0</code></a> [ty] Use a dedicated project name type (<a href="https://redirect.github.com/astral-sh/ruff/issues/26665">#26665</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/7ad39ad5fae00226fbe6bc17a6f05d1746abbfde"><code>7ad39ad</code></a> [ty] Avoid allocating decorated parameter names (<a href="https://redirect.github.com/astral-sh/ruff/issues/26666">#26666</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/c36f66207d6968dbbe1769bd50f80a4c02d17b57"><code>c36f662</code></a> Improve performance of rendering edits in preview mode (<a href="https://redirect.github.com/astral-sh/ruff/issues/26565">#26565</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/ad264082c713ec6aad9191e5a6a8d342ed480a4b"><code>ad26408</code></a> [ty] Gate membership narrowing on <code>__contains__</code> semantics (<a href="https://redirect.github.com/astral-sh/ruff/issues/25964">#25964</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/4594ca7366773b2a4b6d2ee08001d6e80d6e3eae"><code>4594ca7</code></a> [ty] Add variant discriminators for <code>CodeGeneratorKind</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/26659">#26659</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/1af03da7b8cf1b37c344bef9ec85f9408ac3ff0e"><code>1af03da</code></a> [ty] Pydantic: Fix float conversion in unions (<a href="https://redirect.github.com/astral-sh/ruff/issues/26655">#26655</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/a004a3620518d1b67f4d7aae584ab1dd156a0ef6"><code>a004a36</code></a> [ty] Handle callable classes in solver (<a href="https://redirect.github.com/astral-sh/ruff/issues/26090">#26090</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/d8ef3b058704256431e50352301d5afb41ba606d"><code>d8ef3b0</code></a> [ty] Parse all supported Google docstring sections. (<a href="https://redirect.github.com/astral-sh/ruff/issues/26653">#26653</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.15.20...0.15.21">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.20 to 0.15.21.
Release notes
Sourced from ruff's releases.
... (truncated)
Changelog
Sourced from ruff's changelog.
... (truncated)
Commits
3e1f636Bump 0.15.21 (#26676)4059807[ty] Infer metaclass-declared attributes on class instances (#26512)013e5d0[ty] Use a dedicated project name type (#26665)7ad39ad[ty] Avoid allocating decorated parameter names (#26666)c36f662Improve performance of rendering edits in preview mode (#26565)ad26408[ty] Gate membership narrowing on__contains__semantics (#25964)4594ca7[ty] Add variant discriminators forCodeGeneratorKind(#26659)1af03da[ty] Pydantic: Fix float conversion in unions (#26655)a004a36[ty] Handle callable classes in solver (#26090)d8ef3b0[ty] Parse all supported Google docstring sections. (#26653)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)