The executables in our macOS and Windows release archives and ruff wheels are now code-signed.
macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows
executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables
verification of the release publisher and binary integrity, supports publisher-based allowlisting,
and should reduce security warnings and antivirus false positives.
Breaking changes
Update the default and latest Python versions for 3.15 (#28792)
Ruff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through
target-version or
requires-python. When
checking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15
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.16.10 to 0.17.1.
<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.17.1</h2>
<h2>Release Notes</h2>
<p>Released on 2026-10-15.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>pycodestyle</code>] Don't treat <code>None</code>, <code>True</code>, or <code>False</code> as keywords (<code>E271</code>-<code>E274</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/29322">#29322</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix dedent with multiple leading comments (<a href="https://redirect.github.com/astral-sh/ruff/pull/29382">#29382</a>)</li>
<li>[<code>flake8-pyi</code>] Detect legacy positional-only parameters in <code>__new__</code> methods (<code>PYI063</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/28502">#28502</a>)</li>
<li>[<code>flake8-pyi</code>] Fix false positives on quoted annotations (<code>PYI036</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/29274">#29274</a>)</li>
<li>[<code>perflint</code>] Avoid invalid comprehension suggestions (<code>PERF401</code>, <code>PERF403</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/29366">#29366</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>Treat more <code>collections</code> and <code>weakref</code> containers as mutable (<a href="https://redirect.github.com/astral-sh/ruff/pull/29213">#29213</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>[<code>flake8-import-conventions</code>] Update default and example <code>aliases</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/29333">#29333</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/fixfon"><code>@fixfon</code></a></li>
<li><a href="https://github.com/mmaxjr"><code>@mmaxjr</code></a></li>
<li><a href="https://github.com/joshuavetos"><code>@joshuavetos</code></a></li>
<li><a href="https://github.com/nekomario28"><code>@nekomario28</code></a></li>
<li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li>
<li><a href="https://github.com/shan3520"><code>@shan3520</code></a></li>
</ul>
<h2>Install ruff 0.17.1</h2>
<h3>Install prebuilt binaries via shell script</h3>
<pre lang="sh"><code>curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ruff/releases/download/0.17.1/ruff-installer.sh | sh
</code></pre>
<h3>Install prebuilt binaries via powershell script</h3>
<pre lang="sh"><code>powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ruff/releases/download/0.17.1/ruff-installer.ps1 | iex"
</code></pre>
<h2>Download ruff 0.17.1</h2>
<p>| File | Platform | Checksum |</p>
<!-- 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.17.1</h2>
<p>Released on 2026-10-15.</p>
<h3>Preview features</h3>
<ul>
<li>[<code>pycodestyle</code>] Don't treat <code>None</code>, <code>True</code>, or <code>False</code> as keywords (<code>E271</code>-<code>E274</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/29322">#29322</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Fix dedent with multiple leading comments (<a href="https://redirect.github.com/astral-sh/ruff/pull/29382">#29382</a>)</li>
<li>[<code>flake8-pyi</code>] Detect legacy positional-only parameters in <code>__new__</code> methods (<code>PYI063</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/28502">#28502</a>)</li>
<li>[<code>flake8-pyi</code>] Fix false positives on quoted annotations (<code>PYI036</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/29274">#29274</a>)</li>
<li>[<code>perflint</code>] Avoid invalid comprehension suggestions (<code>PERF401</code>, <code>PERF403</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/29366">#29366</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>Treat more <code>collections</code> and <code>weakref</code> containers as mutable (<a href="https://redirect.github.com/astral-sh/ruff/pull/29213">#29213</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>[<code>flake8-import-conventions</code>] Update default and example <code>aliases</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/29333">#29333</a>)</li>
</ul>
<h3>Contributors</h3>
<ul>
<li><a href="https://github.com/fixfon"><code>@fixfon</code></a></li>
<li><a href="https://github.com/mmaxjr"><code>@mmaxjr</code></a></li>
<li><a href="https://github.com/joshuavetos"><code>@joshuavetos</code></a></li>
<li><a href="https://github.com/nekomario28"><code>@nekomario28</code></a></li>
<li><a href="https://github.com/ntBre"><code>@ntBre</code></a></li>
<li><a href="https://github.com/shan3520"><code>@shan3520</code></a></li>
</ul>
<h2>0.17.0</h2>
<p>Released on 2026-10-09.</p>
<p>The executables in our macOS and Windows release archives and <code>ruff</code> wheels are now code-signed.
macOS executables are signed with an Apple Developer ID certificate and notarized by Apple. Windows
executables have timestamped Authenticode signatures from Azure Artifact Signing. This enables
verification of the release publisher and binary integrity, supports publisher-based allowlisting,
and should reduce security warnings and antivirus false positives.</p>
<h3>Breaking changes</h3>
<ul>
<li>
<p>Update the default and latest Python versions for 3.15 (<a href="https://redirect.github.com/astral-sh/ruff/pull/28792">#28792</a>)</p>
<p>Ruff now defaults to Python 3.11 instead of 3.10 when no Python version is configured through
<a href="https://docs.astral.sh/ruff/settings/#target-version"><code>target-version</code></a> or
<a href="https://docs.astral.sh/ruff/configuration/#inferring-the-python-version"><code>requires-python</code></a>. When
checking for syntax errors without a configured Python version, Ruff now defaults to Python 3.15</p>
</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/4683270c69cbdaf6ad64d3f983fc458d5a43b41f"><code>4683270</code></a> Bump version to 0.17.1 (<a href="https://redirect.github.com/astral-sh/ruff/issues/29420">#29420</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/3514027edb659bbc3c787d355be9d130e5587f15"><code>3514027</code></a> [ty] Update typing conformance suite pin (<a href="https://redirect.github.com/astral-sh/ruff/issues/29417">#29417</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/829455624d78f2e89669e4b4b14af2b96abdb1ae"><code>8294556</code></a> Update referenced PR security-review workflow (<a href="https://redirect.github.com/astral-sh/ruff/issues/29237">#29237</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/d1e1b1f69b511df4385f64b510eeec4da01c1a0e"><code>d1e1b1f</code></a> [ty] Preserve recursive aliases when rebuilding intersections (<a href="https://redirect.github.com/astral-sh/ruff/issues/29057">#29057</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/93526150df078af7dd8fc4226cdcc469539d2001"><code>9352615</code></a> [<code>perflint</code>] Avoid invalid comprehension suggestions (<code>PERF401</code>, <code>PERF403</code>) (...</li>
<li><a href="https://github.com/astral-sh/ruff/commit/83a3afc3156d73ae4296f3fa74ede28e4c72bfcd"><code>83a3afc</code></a> Fix dedent with multiple leading comments (<a href="https://redirect.github.com/astral-sh/ruff/issues/29382">#29382</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/b42a8734410230f4529151782cae951b99bed858"><code>b42a873</code></a> [ty] Clarify object attribute write-contract rationale (<a href="https://redirect.github.com/astral-sh/ruff/issues/29384">#29384</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/d01678ebf594c97a7767d4372061c1f80ae5b5bb"><code>d01678e</code></a> [ty] Clarify object attribute write-contract rationale (<a href="https://redirect.github.com/astral-sh/ruff/issues/29384">#29384</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/355b42a7719d8a555e3ee50c89848b42d8a11eb5"><code>355b42a</code></a> [ty] Avoid writable override contracts from object (<a href="https://redirect.github.com/astral-sh/ruff/issues/29373">#29373</a>)</li>
<li><a href="https://github.com/astral-sh/ruff/commit/e26e6d2a54ac2c5e1f5b1945042de3ff3885bf8e"><code>e26e6d2</code></a> [ty] Collect intersection inference through constraint relations (<a href="https://redirect.github.com/astral-sh/ruff/issues/28677">#28677</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.16.10...0.17.1">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.16.10 to 0.17.1.
Release notes
Sourced from ruff's releases.
... (truncated)
Changelog
Sourced from ruff's changelog.
... (truncated)
Commits
4683270Bump version to 0.17.1 (#29420)3514027[ty] Update typing conformance suite pin (#29417)8294556Update referenced PR security-review workflow (#29237)d1e1b1f[ty] Preserve recursive aliases when rebuilding intersections (#29057)9352615[perflint] Avoid invalid comprehension suggestions (PERF401,PERF403) (...83a3afcFix dedent with multiple leading comments (#29382)b42a873[ty] Clarify object attribute write-contract rationale (#29384)d01678e[ty] Clarify object attribute write-contract rationale (#29384)355b42a[ty] Avoid writable override contracts from object (#29373)e26e6d2[ty] Collect intersection inference through constraint relations (#28677)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)