Tobias Hernstig
bbc529bc8a
docs: Use correct number of lint rules supported ( #24942 )
2026-04-30 09:08:53 +00:00
renovate[bot]
a7d824529b
Update dependency ruff to v0.15.12 ( #24857 )
2026-04-26 22:22:41 -04:00
Dylan
66f93cf7ed
Bump 0.15.12 ( #24815 )
2026-04-24 12:36:40 -05:00
Amethyst Reese
ed669eab30
Implement #ruff:file-ignore file-level suppressions ( #23599 )
...
Follow-up to #23404
Add support for `#ruff:file-ignore[code]` style file-level suppressions
as own-line comments at global module scope. The range covered by these
suppressions is always the entirety of the file:
```py
# ruff:file-ignore[ARG001]
def foo(
arg1,
arg2,
):
pass
def bar(
arg1,
arg2,
):
pass
```
This currently requires having preview mode enabled. Without preview
mode,
the comments are parsed and processed, but not materialized into active
suppressions at runtime.
2026-04-24 16:02:15 +00:00
Auguste Lalande
ae5e5b9ba9
[docs] Improve rules table accessibility ( #24711 )
2026-04-21 14:27:23 +01:00
Amethyst Reese
49aa2b253d
Implement #ruff:ignore logical-line suppressions ( #23404 )
...
Adds support for `#ruff:ignore[code]` style suppressions as either
own-line
or end-of-line comments. The range covered by these suppressions is
determined
by the comment's position relative to the associated logical line
(statement
or suite header).
Standalone `ignore` comments apply to an entire multi-line
statement/header if the comment appears above the first line:
```py
# covers the entire header
def foo(
arg1,
arg2,
):
pass
```
But will only apply to a single following line if it appears in the
middle of a multi-line statement/header:
```py
def foo(
# only covers the next line
arg1,
arg2,
):
pass
```
Trailing comments will only apply to a single physical line, similar to
existing `#noqa` comments:
```py
def foo(
arg1, # only covers arg1
arg2,
):
pass
```
Intervening comments are allowed, which enables "stacking" of
`#ruff:ignore` comments with other own-line pragma comments:
```py
# ruff:ignore[code]
# fmt:off
value = [
1, 2,
3, 4,
]
# fmt:on
```
Includes some refactoring of the structs to generalize the naming/terms
used, otherwise the rest of the suppression system should be able to
stay unchanged.
2026-04-20 11:38:32 -07:00
renovate[bot]
fd8e921461
Update dependency ruff to v0.15.11 ( #24723 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-19 22:11:12 -04:00
Amethyst Reese
53554b1cfe
Bump 0.15.11 ( #24678 )
2026-04-16 11:17:46 -07:00
Ben Berry-Allwood
8d0cdb32dd
Update Neovim config examples to use vim.lsp.config ( #24577 )
...
## Summary
Neovim 0.11 (in March 2025) added
[vim.lsp.config()](https://neovim.io/doc/user/lsp/#vim.lsp.config() )
which is now the recommended way to set up language servers. This was
added to the Ruff docs in #18108 in addition to the legacy method using
`nvim-lspconfig`.
Calling `nvim-lspconfig` to configure a language server is deprecated -
see [their
documentation](https://github.com/neovim/nvim-lspconfig?tab=readme-ov-file#important-%EF%B8%8F ).
This PR:
- updates the documentation which describes both methods to now prefer
`vim.lsp.config`
- updates all other examples which only show the legacy method to now
use `vim.lsp.config`.
## Test Plan
I have tested a subset of the examples locally using Neovim 0.12.1.
---
I considered just removing the legacy method but was unsure. I'll follow
others' guidance on when that should be kept until.
https://github.com/user-attachments/assets/93984c45-a2f1-48dd-9fec-ed291b0a144e
---------
Co-authored-by: Dhruv Manilawala <dhruvmanila@gmail.com >
2026-04-13 07:44:45 +00:00
renovate[bot]
e0c94198f0
Update dependency ruff to v0.15.10 ( #24587 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-13 08:42:10 +02:00
Brent Westbrook
252f76102a
Bump 0.15.10 ( #24519 )
2026-04-09 09:48:41 -04:00
shizuku
16c4090d0a
docs: fix JSON typo in settings example ( #24517 )
...
## Summary
Fix a typo in the `fixViolation` example in `docs/editors/settings.md`
by removing a stray `=`.
## Test Plan
- not applicable (documentation-only change)
2026-04-09 11:27:19 +00:00
renovate[bot]
6ce1905aed
Update dependency ruff to v0.15.9 ( #24431 )
2026-04-05 22:05:31 -04:00
renovate[bot]
2703ec64fd
Update dependency mkdocs-redirects to v1.2.3 ( #24430 )
2026-04-05 22:05:23 -04:00
Dylan
724ccc1ae8
Bump 0.15.9 ( #24369 )
2026-04-02 12:59:00 -05:00
Matthew Lloyd
6468a35e9b
Add nested-string-quote-style formatting option ( #24312 )
2026-03-31 18:48:24 +02:00
renovate[bot]
fe84a4e987
Update dependency mkdocs-material to v9.7.6 ( #24285 )
2026-03-29 20:30:34 -04:00
renovate[bot]
d11fd4bacb
Update dependency ruff to v0.15.8 ( #24286 )
2026-03-29 20:29:32 -04:00
Amethyst Reese
c2a8815842
Release 0.15.8 ( #24217 )
...
- **changelog**
- **everything else**
2026-03-26 11:20:09 -07:00
renovate[bot]
926036071f
Update dependency mkdocs-material to v9.7.5 ( #24118 )
2026-03-22 20:28:39 -04:00
renovate[bot]
3852760371
Update dependency ruff to v0.15.7 ( #24119 )
2026-03-23 00:27:13 +00:00
Brent Westbrook
0ef39de46c
Bump 0.15.7 ( #24049 )
2026-03-19 12:09:44 -04:00
renovate[bot]
c48370cb55
Update dependency mkdocs-material to v9.7.4 ( #23978 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|
|
[mkdocs-material](https://redirect.github.com/squidfunk/mkdocs-material )
([changelog](https://squidfunk.github.io/mkdocs-material/changelog/ )) |
`==9.7.3` → `==9.7.4` |

|

|
---
### Release Notes
<details>
<summary>squidfunk/mkdocs-material (mkdocs-material)</summary>
###
[`v9.7.4`](https://redirect.github.com/squidfunk/mkdocs-material/releases/tag/9.7.4 ):
mkdocs-material-9.7.4
[Compare
Source](https://redirect.github.com/squidfunk/mkdocs-material/compare/9.7.3...9.7.4 )
> \[!WARNING]
>
> **Material for MkDocs is in maintenance mode**
>
> Going forward, the Material for MkDocs team focuses on [Zensical], 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.
>
> [Read the full announcement on our blog]
[Zensical]: https://zensical.org
[Read the full announcement on our blog]:
https://squidfunk.github.io/mkdocs-material/blog/2025/11/05/zensical/
#### Changes
- Hardened social cards plugin by switching to sandboxed environment
(recommended by
[@​caveeroo](https://redirect.github.com/caveeroo ))
- Updated MkDocs 2.0 incompatibility warning
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 07:51:06 +00:00
renovate[bot]
786df75f71
Update dependency ruff to v0.15.6 ( #23979 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|
| [ruff](https://docs.astral.sh/ruff )
([source](https://redirect.github.com/astral-sh/ruff ),
[changelog](https://redirect.github.com/astral-sh/ruff/blob/main/CHANGELOG.md ))
| `==0.15.5` → `==0.15.6` |

|

|
---
### Release Notes
<details>
<summary>astral-sh/ruff (ruff)</summary>
###
[`v0.15.6`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0156 )
[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.15.5...0.15.6 )
Released on 2026-03-12.
##### Preview features
- Add support for `lazy` import parsing
([#​23755](https://redirect.github.com/astral-sh/ruff/pull/23755 ))
- Add support for star-unpacking of comprehensions (PEP 798)
([#​23788](https://redirect.github.com/astral-sh/ruff/pull/23788 ))
- Reject semantic syntax errors for lazy imports
([#​23757](https://redirect.github.com/astral-sh/ruff/pull/23757 ))
- Drop a few rules from the preview default set
([#​23879](https://redirect.github.com/astral-sh/ruff/pull/23879 ))
- \[`airflow`] Flag `Variable.get()` calls outside of task execution
context (`AIR003`)
([#​23584](https://redirect.github.com/astral-sh/ruff/pull/23584 ))
- \[`airflow`] Flag runtime-varying values in DAG/task constructor
arguments (`AIR304`)
([#​23631](https://redirect.github.com/astral-sh/ruff/pull/23631 ))
- \[`flake8-bugbear`] Implement `delattr-with-constant` (`B043`)
([#​23737](https://redirect.github.com/astral-sh/ruff/pull/23737 ))
- \[`flake8-tidy-imports`] Add `TID254` to enforce lazy imports
([#​23777](https://redirect.github.com/astral-sh/ruff/pull/23777 ))
- \[`flake8-tidy-imports`] Allow users to ban lazy imports with `TID254`
([#​23847](https://redirect.github.com/astral-sh/ruff/pull/23847 ))
- \[`isort`] Retain `lazy` keyword when sorting imports
([#​23762](https://redirect.github.com/astral-sh/ruff/pull/23762 ))
- \[`pyupgrade`] Add `from __future__ import annotations` automatically
(`UP006`)
([#​23260](https://redirect.github.com/astral-sh/ruff/pull/23260 ))
- \[`refurb`] Support `newline` parameter in `FURB101` for Python 3.13+
([#​23754](https://redirect.github.com/astral-sh/ruff/pull/23754 ))
- \[`ruff`] Add `os-path-commonprefix` (`RUF071`)
([#​23814](https://redirect.github.com/astral-sh/ruff/pull/23814 ))
- \[`ruff`] Add unsafe fix for os-path-commonprefix (`RUF071`)
([#​23852](https://redirect.github.com/astral-sh/ruff/pull/23852 ))
- \[`ruff`] Limit `RUF036` to typing contexts; make it unsafe for
non-typing-only
([#​23765](https://redirect.github.com/astral-sh/ruff/pull/23765 ))
- \[`ruff`] Use starred unpacking for `RUF017` in Python 3.15+
([#​23789](https://redirect.github.com/astral-sh/ruff/pull/23789 ))
##### Bug fixes
- Fix `--add-noqa` creating unwanted leading whitespace
([#​23773](https://redirect.github.com/astral-sh/ruff/pull/23773 ))
- Fix `--add-noqa` breaking shebangs
([#​23577](https://redirect.github.com/astral-sh/ruff/pull/23577 ))
- \[formatter] Fix lambda body formatting for multiline calls and
subscripts
([#​23866](https://redirect.github.com/astral-sh/ruff/pull/23866 ))
- \[formatter] Preserve required annotation parentheses in annotated
assignments
([#​23865](https://redirect.github.com/astral-sh/ruff/pull/23865 ))
- \[formatter] Preserve type-expression parentheses in the formatter
([#​23867](https://redirect.github.com/astral-sh/ruff/pull/23867 ))
- \[`flake8-annotations`] Fix stack overflow in `ANN401` on quoted
annotations with escape sequences
([#​23912](https://redirect.github.com/astral-sh/ruff/pull/23912 ))
- \[`pep8-naming`] Check naming conventions in `match` pattern bindings
(`N806`, `N815`, `N816`)
([#​23899](https://redirect.github.com/astral-sh/ruff/pull/23899 ))
- \[`perflint`] Fix comment duplication in fixes (`PERF401`, `PERF403`)
([#​23729](https://redirect.github.com/astral-sh/ruff/pull/23729 ))
- \[`pyupgrade`] Properly trigger `super` change in nested class
(`UP008`)
([#​22677](https://redirect.github.com/astral-sh/ruff/pull/22677 ))
- \[`ruff`] Avoid syntax errors in `RUF036` fixes
([#​23764](https://redirect.github.com/astral-sh/ruff/pull/23764 ))
##### Rule changes
- \[`flake8-bandit`] Flag `S501` with `requests.request`
([#​23873](https://redirect.github.com/astral-sh/ruff/pull/23873 ))
- \[`flake8-executable`] Fix WSL detection in non-Docker containers
([#​22879](https://redirect.github.com/astral-sh/ruff/pull/22879 ))
- \[`flake8-print`] Ignore `pprint` calls with `stream=`
([#​23787](https://redirect.github.com/astral-sh/ruff/pull/23787 ))
##### Documentation
- Update docs for Markdown code block formatting
([#​23871](https://redirect.github.com/astral-sh/ruff/pull/23871 ))
- \[`flake8-bugbear`] Fix misleading description for `B904`
([#​23731](https://redirect.github.com/astral-sh/ruff/pull/23731 ))
##### Contributors
- [@​zsol](https://redirect.github.com/zsol )
- [@​carljm](https://redirect.github.com/carljm )
- [@​ntBre](https://redirect.github.com/ntBre )
- [@​Bortlesboat](https://redirect.github.com/Bortlesboat )
- [@​sososonia-cyber](https://redirect.github.com/sososonia-cyber )
- [@​chirizxc](https://redirect.github.com/chirizxc )
- [@​leandrobbraga](https://redirect.github.com/leandrobbraga )
- [@​11happy](https://redirect.github.com/11happy )
- [@​Acelogic](https://redirect.github.com/Acelogic )
- [@​anishgirianish](https://redirect.github.com/anishgirianish )
- [@​amyreese](https://redirect.github.com/amyreese )
- [@​xvchris](https://redirect.github.com/xvchris )
- [@​charliermarsh](https://redirect.github.com/charliermarsh )
- [@​getehen](https://redirect.github.com/getehen )
- [@​Dev-iL](https://redirect.github.com/Dev-iL )
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My42Ni40IiwidXBkYXRlZEluVmVyIjoiNDMuNjYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 07:50:18 +00:00
Amethyst Reese
3f96e100c8
Document editor features for markdown code formatting ( #23924 )
2026-03-13 12:32:18 -07:00
Dylan
e4c7f35777
Bump 0.15.6 ( #23919 )
2026-03-12 17:48:57 -05:00
Amethyst Reese
919febc9b8
Update docs for Markdown code block formatting ( #23871 )
2026-03-10 11:11:26 -07:00
renovate[bot]
413d60570a
Update dependency ruff to v0.15.5 ( #23819 )
2026-03-08 22:13:23 -04:00
renovate[bot]
b6b861ca83
Update dependency mkdocs-material to v9.7.3 ( #23818 )
2026-03-08 22:13:14 -04:00
Amethyst Reese
5e4a3d9c3b
Bump 0.15.5 ( #23743 )
...
Co-authored-by: Brent Westbrook <36778786+ntBre@users.noreply.github.com >
2026-03-05 19:48:21 +00:00
Amethyst Reese
9a70f5eb2f
Discover markdown files by default in preview mode ( #23434 )
...
Adds `*.md` to the list of default globs in preview mode.
Adds a simple filter to the `check` CLI command to exclude file types
that aren't
supported for linting before checking if the set of resolved paths is
empty, preserving
existing behavior of warning "No Python files found under the given
path(s)" even if
there are markdown files present and preview mode is enabled.
Fixes #3792
2026-03-05 09:55:23 -08:00
renovate[bot]
1fc3aff61f
Update dependency mkdocs-material to v9.7.2 ( #23659 )
...
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 11:28:20 +00:00
renovate[bot]
c8f8f5ede5
Update dependency ruff to v0.15.4 ( #23660 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|
| [ruff](https://docs.astral.sh/ruff )
([source](https://redirect.github.com/astral-sh/ruff ),
[changelog](https://redirect.github.com/astral-sh/ruff/blob/main/CHANGELOG.md ))
| `==0.15.2` → `==0.15.4` |

|

|
---
### Release Notes
<details>
<summary>astral-sh/ruff (ruff)</summary>
###
[`v0.15.4`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0154 )
[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.15.3...0.15.4 )
Released on 2026-02-26.
This is a follow-up release to 0.15.3 that resolves a panic when the new
rule `PLR1712` was enabled with any rule that analyzes definitions, such
as many of the `ANN` or `D` rules.
##### Bug fixes
- Fix panic on access to definitions after analyzing definitions
([#​23588](https://redirect.github.com/astral-sh/ruff/pull/23588 ))
- \[`pyflakes`] Suppress false positive in `F821` for names used before
`del` in stub files
([#​23550](https://redirect.github.com/astral-sh/ruff/pull/23550 ))
##### Documentation
- Clarify first-party import detection in Ruff
([#​23591](https://redirect.github.com/astral-sh/ruff/pull/23591 ))
- Fix incorrect `import-heading` example
([#​23568](https://redirect.github.com/astral-sh/ruff/pull/23568 ))
##### Contributors
- [@​stakeswky](https://redirect.github.com/stakeswky )
- [@​ntBre](https://redirect.github.com/ntBre )
- [@​thejcannon](https://redirect.github.com/thejcannon )
- [@​GeObts](https://redirect.github.com/GeObts )
###
[`v0.15.3`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0153 )
[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.15.2...0.15.3 )
Released on 2026-02-26.
##### Preview features
- Drop explicit support for `.qmd` file extension
([#​23572](https://redirect.github.com/astral-sh/ruff/pull/23572 ))
This can now be enabled instead by setting the
[`extension`](https://docs.astral.sh/ruff/settings/#extension ) option:
```toml
# ruff.toml
extension = { qmd = "markdown" }
# pyproject.toml
[tool.ruff]
extension = { qmd = "markdown" }
```
- Include configured extensions in file discovery
([#​23400](https://redirect.github.com/astral-sh/ruff/pull/23400 ))
- \[`flake8-bandit`] Allow suspicious imports in `TYPE_CHECKING` blocks
(`S401`-`S415`)
([#​23441](https://redirect.github.com/astral-sh/ruff/pull/23441 ))
- \[`flake8-bugbear`] Allow `B901` in pytest hook wrappers
([#​21931](https://redirect.github.com/astral-sh/ruff/pull/21931 ))
- \[`flake8-import-conventions`] Add missing conventions from upstream
(`ICN001`, `ICN002`)
([#​21373](https://redirect.github.com/astral-sh/ruff/pull/21373 ))
- \[`pydocstyle`] Add rule to enforce docstring section ordering
(`D420`)
([#​23537](https://redirect.github.com/astral-sh/ruff/pull/23537 ))
- \[`pylint`] Implement `swap-with-temporary-variable` (`PLR1712`)
([#​22205](https://redirect.github.com/astral-sh/ruff/pull/22205 ))
- \[`ruff`] Add `unnecessary-assign-before-yield` (`RUF070`)
([#​23300](https://redirect.github.com/astral-sh/ruff/pull/23300 ))
- \[`ruff`] Support file-level noqa in `RUF102`
([#​23535](https://redirect.github.com/astral-sh/ruff/pull/23535 ))
- \[`ruff`] Suppress diagnostic for invalid f-strings before Python 3.12
(`RUF027`)
([#​23480](https://redirect.github.com/astral-sh/ruff/pull/23480 ))
- \[`flake8-bandit`] Don't flag `BaseLoader`/`CBaseLoader` as unsafe
(`S506`)
([#​23510](https://redirect.github.com/astral-sh/ruff/pull/23510 ))
##### Bug fixes
- Avoid infinite loop between `I002` and `PYI025`
([#​23352](https://redirect.github.com/astral-sh/ruff/pull/23352 ))
- \[`pyflakes`] Fix false positive for `@overload` from
`lint.typing-modules` (`F811`)
([#​23357](https://redirect.github.com/astral-sh/ruff/pull/23357 ))
- \[`pyupgrade`] Fix false positive for `TypeVar` default before Python
3.12 (`UP046`)
([#​23540](https://redirect.github.com/astral-sh/ruff/pull/23540 ))
- \[`pyupgrade`] Fix handling of `\N` in raw strings (`UP032`)
([#​22149](https://redirect.github.com/astral-sh/ruff/pull/22149 ))
##### Rule changes
- Render sub-diagnostics in the GitHub output format
([#​23455](https://redirect.github.com/astral-sh/ruff/pull/23455 ))
- \[`flake8-bugbear`] Tag certain `B007` diagnostics as unnecessary
([#​23453](https://redirect.github.com/astral-sh/ruff/pull/23453 ))
- \[`ruff`] Ignore unknown rule codes in `RUF100`
([#​23531](https://redirect.github.com/astral-sh/ruff/pull/23531 ))
These are now flagged by
[`RUF102`](https://docs.astral.sh/ruff/rules/invalid-rule-code/ )
instead.
##### Documentation
- Fix missing settings links for several linters
([#​23519](https://redirect.github.com/astral-sh/ruff/pull/23519 ))
- Update isort action comments heading
([#​23515](https://redirect.github.com/astral-sh/ruff/pull/23515 ))
- \[`pydocstyle`] Fix double comma in description of `D404`
([#​23440](https://redirect.github.com/astral-sh/ruff/pull/23440 ))
##### Other changes
- Update the Python module (notably `find_ruff_bin`) for parity with uv
([#​23406](https://redirect.github.com/astral-sh/ruff/pull/23406 ))
##### Contributors
- [@​zanieb](https://redirect.github.com/zanieb )
- [@​o1x3](https://redirect.github.com/o1x3 )
- [@​assadyousuf](https://redirect.github.com/assadyousuf )
- [@​kar-ganap](https://redirect.github.com/kar-ganap )
- [@​denyszhak](https://redirect.github.com/denyszhak )
- [@​amyreese](https://redirect.github.com/amyreese )
- [@​carljm](https://redirect.github.com/carljm )
- [@​anishgirianish](https://redirect.github.com/anishgirianish )
- [@​Bnyro](https://redirect.github.com/Bnyro )
- [@​danparizher](https://redirect.github.com/danparizher )
- [@​ntBre](https://redirect.github.com/ntBre )
- [@​gcomneno](https://redirect.github.com/gcomneno )
- [@​jaap3](https://redirect.github.com/jaap3 )
- [@​stakeswky](https://redirect.github.com/stakeswky )
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My40My4yIiwidXBkYXRlZEluVmVyIjoiNDMuNDMuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiaW50ZXJuYWwiXX0=-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 07:46:25 +00:00
Brent Westbrook
bc12fbb565
Update default Python version examples ( #23605 )
...
## Summary
Brings our documentation up to date with the implementation, see
https://github.com/astral-sh/ruff/pull/17529#issuecomment-3972000021
## Test Plan
2026-02-27 18:00:03 -05:00
Amethyst Reese
9982ad302a
Document extension mapping for markdown code formatting ( #23574 )
...
Co-authored-by: Brent Westbrook <36778786+ntBre@users.noreply.github.com >
2026-02-26 21:24:50 +00:00
Brent Westbrook
f14edd8661
Bump 0.15.4 ( #23595 )
...
Just to be sure, I ran the example from #23587 again on this branch:
```console
~/astral/ruff on brent/0.15.4 [$] is 📦 v0.15.4 via 🐍 v3.14.2 via 🦀 v1.93.0
❯ echo 'x = id' | uvx ruff@latest --isolated check - --preview --select ANN003,PLR1712
error: Ruff crashed. If you could open an issue at:
https://github.com/astral-sh/ruff/issues/new?title=%5BPanic%5D
...quoting the executed command, along with the relevant file contents and `pyproject.toml` settings, we'd be very appreciative!
thread 'main' (1681253) panicked at crates/ruff_python_semantic/src/definition.rs:285:26:
index out of bounds: the len is 0 but the index is 0
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
~/astral/ruff on brent/0.15.4 [$] is 📦 v0.15.4 via 🐍 v3.14.2 via 🦀 v1.93.0
❯ echo 'x = id' | just run --isolated check - --preview --select ANN003,PLR1712
cargo run -p ruff -- --isolated check - --preview --select ANN003,PLR1712
Compiling ruff_python_semantic v0.0.0 (/home/brent/astral/ruff/crates/ruff_python_semantic)
Compiling ruff v0.15.4 (/home/brent/astral/ruff/crates/ruff)
Compiling ruff_linter v0.15.4 (/home/brent/astral/ruff/crates/ruff_linter)
Compiling ruff_graph v0.1.0 (/home/brent/astral/ruff/crates/ruff_graph)
Compiling ruff_workspace v0.0.0 (/home/brent/astral/ruff/crates/ruff_workspace)
Compiling ruff_markdown v0.0.0 (/home/brent/astral/ruff/crates/ruff_markdown)
Compiling ruff_server v0.2.2 (/home/brent/astral/ruff/crates/ruff_server)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.14s
Running `target/debug/ruff --isolated check - --preview --select ANN003,PLR1712`
warning: Detected debug build without --no-cache.
All checks passed!
```
2026-02-26 14:46:41 -05:00
Josh Cannon
625b4f5a67
[ruff] docs: Clarify first-party import detection in Ruff ( #23591 )
2026-02-26 10:38:39 -08:00
Brent Westbrook
e5f2f36a3f
Bump 0.15.3 ( #23585 )
2026-02-26 10:22:43 -05:00
Brent Westbrook
e5ca9dd8f0
Update isort action comments heading ( #23515 )
...
Summary
--
Closes #23450 by renaming the `Action comments` heading to `isort action
comments`. I agree with the issue author that this should make it easier
to find.
Test Plan
--
2026-02-23 09:15:26 -05:00
renovate[bot]
630aa3ae45
Update dependency ruff to v0.15.2 ( #23485 )
2026-02-23 02:04:27 +00:00
Dylan
7cc15f024b
Bump 0.15.2 ( #23430 )
2026-02-19 15:04:36 -06:00
Toshiki Kataoka
a04d67ec1c
Add Q004 to the list of conflicting rules ( #23340 )
...
## Summary
The page of unnecessary-escaped-quote (Q004) says it's redundant with
the formatter.
https://docs.astral.sh/ruff/rules/unnecessary-escaped-quote/#formatter-compatibility
But the list of the [conflicting lint
rules](https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules )
missed it.
<!-- What's the purpose of the change? What does it do, and why? -->
## Test Plan
<!-- How was it tested? -->
2026-02-16 14:43:11 +00:00
renovate[bot]
9d1e79b2c9
Update dependency ruff to v0.15.1 ( #23308 )
...
This PR contains the following updates:
| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/ ) |
[Confidence](https://docs.renovatebot.com/merge-confidence/ ) |
|---|---|---|---|
| [ruff](https://docs.astral.sh/ruff )
([source](https://redirect.github.com/astral-sh/ruff ),
[changelog](https://redirect.github.com/astral-sh/ruff/blob/main/CHANGELOG.md ))
| `==0.15.0` → `==0.15.1` |

|

|
---
### Release Notes
<details>
<summary>astral-sh/ruff (ruff)</summary>
###
[`v0.15.1`](https://redirect.github.com/astral-sh/ruff/blob/HEAD/CHANGELOG.md#0151 )
[Compare
Source](https://redirect.github.com/astral-sh/ruff/compare/0.15.0...0.15.1 )
Released on 2026-02-12.
##### Preview features
- \[`airflow`] Add ruff rules to catch deprecated Airflow imports for
Airflow 3.1 (`AIR321`)
([#​22376](https://redirect.github.com/astral-sh/ruff/pull/22376 ))
- \[`airflow`] Third positional parameter not named `ti_key` should be
flagged for `BaseOperatorLink.get_link` (`AIR303`)
([#​22828](https://redirect.github.com/astral-sh/ruff/pull/22828 ))
- \[`flake8-gettext`] Fix false negatives for plural argument of
`ngettext` (`INT001`, `INT002`, `INT003`)
([#​21078](https://redirect.github.com/astral-sh/ruff/pull/21078 ))
- \[`pyflakes`] Fix infinite loop in preview fix for `unused-import`
(`F401`)
([#​23038](https://redirect.github.com/astral-sh/ruff/pull/23038 ))
- \[`pygrep-hooks`] Detect non-existent mock methods in standalone
expressions (`PGH005`)
([#​22830](https://redirect.github.com/astral-sh/ruff/pull/22830 ))
- \[`pylint`] Allow dunder submodules and improve diagnostic range
(`PLC2701`)
([#​22804](https://redirect.github.com/astral-sh/ruff/pull/22804 ))
- \[`pyupgrade`] Improve diagnostic range for tuples (`UP024`)
([#​23013](https://redirect.github.com/astral-sh/ruff/pull/23013 ))
- \[`refurb`] Check subscripts in tuple do not use lambda parameters in
`reimplemented-operator` (`FURB118`)
([#​23079](https://redirect.github.com/astral-sh/ruff/pull/23079 ))
- \[`ruff`] Detect mutable defaults in `field` calls (`RUF008`)
([#​23046](https://redirect.github.com/astral-sh/ruff/pull/23046 ))
- \[`ruff`] Ignore std `cmath.inf` (`RUF069`)
([#​23120](https://redirect.github.com/astral-sh/ruff/pull/23120 ))
- \[`ruff`] New rule `float-equality-comparison` (`RUF069`)
([#​20585](https://redirect.github.com/astral-sh/ruff/pull/20585 ))
- Don't format unlabeled Markdown code blocks
([#​23106](https://redirect.github.com/astral-sh/ruff/pull/23106 ))
- Markdown formatting support in LSP
([#​23063](https://redirect.github.com/astral-sh/ruff/pull/23063 ))
- Support Quarto Markdown language markers
([#​22947](https://redirect.github.com/astral-sh/ruff/pull/22947 ))
- Support formatting `pycon` Markdown code blocks
([#​23112](https://redirect.github.com/astral-sh/ruff/pull/23112 ))
- Use extension mapping to select Markdown code block language
([#​22934](https://redirect.github.com/astral-sh/ruff/pull/22934 ))
##### Bug fixes
- Avoid false positive for undefined variables in `FAST001`
([#​23224](https://redirect.github.com/astral-sh/ruff/pull/23224 ))
- Avoid introducing syntax errors for `FAST003` autofix
([#​23227](https://redirect.github.com/astral-sh/ruff/pull/23227 ))
- Avoid suggesting `InitVar` for `__post_init__` that references PEP 695
type parameters
([#​23226](https://redirect.github.com/astral-sh/ruff/pull/23226 ))
- Deduplicate type variables in generic functions
([#​23225](https://redirect.github.com/astral-sh/ruff/pull/23225 ))
- Fix exception handler parenthesis removal for Python 3.14+
([#​23126](https://redirect.github.com/astral-sh/ruff/pull/23126 ))
- Fix f-string middle panic when parsing t-strings
([#​23232](https://redirect.github.com/astral-sh/ruff/pull/23232 ))
- Wrap `RUF020` target for multiline fixes
([#​23210](https://redirect.github.com/astral-sh/ruff/pull/23210 ))
- Wrap `UP007` target for multiline fixes
([#​23208](https://redirect.github.com/astral-sh/ruff/pull/23208 ))
- Fix missing diagnostics for last range suppression in file
([#​23242](https://redirect.github.com/astral-sh/ruff/pull/23242 ))
- \[`pyupgrade`] Fix syntax error on string with newline escape and
comment (`UP037`)
([#​22968](https://redirect.github.com/astral-sh/ruff/pull/22968 ))
##### Rule changes
- Use `ruff` instead of `Ruff` as the program name in GitHub output
format
([#​23240](https://redirect.github.com/astral-sh/ruff/pull/23240 ))
- \[`PT006`] Fix syntax error when unpacking nested tuples in
`parametrize` fixes
([#​22441](https://redirect.github.com/astral-sh/ruff/issues/22441 ))
([#​22464](https://redirect.github.com/astral-sh/ruff/pull/22464 ))
- \[`airflow`] Catch deprecated attribute access from context key for
Airflow 3.0 (`AIR301`)
([#​22850](https://redirect.github.com/astral-sh/ruff/pull/22850 ))
- \[`airflow`] Capture deprecated arguments and a decorator (`AIR301`)
([#​23170](https://redirect.github.com/astral-sh/ruff/pull/23170 ))
- \[`flake8-boolean-trap`] Add `multiprocessing.Value` to excluded
functions for `FBT003`
([#​23010](https://redirect.github.com/astral-sh/ruff/pull/23010 ))
- \[`flake8-bugbear`] Add a secondary annotation showing the previous
occurrence (`B033`)
([#​22634](https://redirect.github.com/astral-sh/ruff/pull/22634 ))
- \[`flake8-type-checking`] Add sub-diagnostic showing the runtime use
of an annotation (`TC004`)
([#​23091](https://redirect.github.com/astral-sh/ruff/pull/23091 ))
- \[`isort`] Support configurable import section heading comments
([#​23151](https://redirect.github.com/astral-sh/ruff/pull/23151 ))
- \[`ruff`] Improve the diagnostic for `RUF012`
([#​23202](https://redirect.github.com/astral-sh/ruff/pull/23202 ))
##### Formatter
- Suppress diagnostic output for `format --check --silent`
([#​17736](https://redirect.github.com/astral-sh/ruff/pull/17736 ))
##### Documentation
- Add tabbed shell completion documentation
([#​23169](https://redirect.github.com/astral-sh/ruff/pull/23169 ))
- Explain how to enable Markdown formatting for pre-commit hook
([#​23077](https://redirect.github.com/astral-sh/ruff/pull/23077 ))
- Fixed import in `runtime-evaluated-decorators` example
([#​23187](https://redirect.github.com/astral-sh/ruff/pull/23187 ))
- Update ruff server contributing guide
([#​23060](https://redirect.github.com/astral-sh/ruff/pull/23060 ))
##### Other changes
- Exclude WASM artifacts from GitHub releases
([#​23221](https://redirect.github.com/astral-sh/ruff/pull/23221 ))
##### Contributors
- [@​mkniewallner](https://redirect.github.com/mkniewallner )
- [@​bxff](https://redirect.github.com/bxff )
- [@​dylwil3](https://redirect.github.com/dylwil3 )
- [@​Avasam](https://redirect.github.com/Avasam )
- [@​amyreese](https://redirect.github.com/amyreese )
- [@​charliermarsh](https://redirect.github.com/charliermarsh )
- [@​Alex-ley-scrub](https://redirect.github.com/Alex-ley-scrub )
- [@​Kalmaegi](https://redirect.github.com/Kalmaegi )
- [@​danparizher](https://redirect.github.com/danparizher )
- [@​AiyionPrime](https://redirect.github.com/AiyionPrime )
- [@​eureka928](https://redirect.github.com/eureka928 )
- [@​11happy](https://redirect.github.com/11happy )
- [@​Jkhall81](https://redirect.github.com/Jkhall81 )
- [@​chirizxc](https://redirect.github.com/chirizxc )
- [@​leandrobbraga](https://redirect.github.com/leandrobbraga )
- [@​tvatter](https://redirect.github.com/tvatter )
- [@​anishgirianish](https://redirect.github.com/anishgirianish )
- [@​shaanmajid](https://redirect.github.com/shaanmajid )
- [@​ntBre](https://redirect.github.com/ntBre )
- [@​sjyangkevin](https://redirect.github.com/sjyangkevin )
</details>
---
### Configuration
📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/ ).
View the [repository job
log](https://developer.mend.io/github/astral-sh/ruff ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My44LjUiLCJ1cGRhdGVkSW5WZXIiOiI0My44LjUiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbImludGVybmFsIl19-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 01:31:42 +00:00
Amethyst Reese
a2f11d239f
Prepare for 0.15.1 ( #23253 )
...
- **Changelog**
- **Everything else**
---------
Co-authored-by: Brent Westbrook <36778786+ntBre@users.noreply.github.com >
2026-02-12 14:17:21 -08:00
Charlie Marsh
0c52521b4b
Add tabbed shell completion documentation ( #23169 )
...
## Summary
Closes https://github.com/astral-sh/ruff/issues/23168 .
2026-02-09 09:01:52 -05:00
renovate[bot]
96bbc5b306
Update dependency ruff to v0.15.0 ( #23164 )
2026-02-08 21:21:05 -05:00
renovate[bot]
f0d1b7a8c8
Update dependency mdformat-mkdocs to v5.1.4 ( #23155 )
2026-02-08 21:15:07 -05:00
Thibault Vatter
ddd192ac18
Support Quarto Markdown language markers ( #22947 )
...
See [this
comment](https://github.com/astral-sh/ruff/pull/22470#issuecomment-3818540650 )
from #22470 . Also related to #6140 .
## Summary
Add support for formatting code blocks with curly brace syntax (e.g.,
\`\`\`{python}, \`\`\`{py}, \`\`\`{pyi}) in Markdown files. This syntax
is commonly used in tools like Quarto and R Markdown.
The regex pattern now matches both the standard syntax (\`\`\`python)
and the curly brace variant (\`\`\`{python}).
## Test Plan
Added test cases.
Fix #22951
---------
Co-authored-by: Amethyst Reese <amethyst@n7.gg >
2026-02-04 16:21:34 -08:00
Mathieu Kniewallner
0f02d48e6f
Explain how to enable Markdown formatting for pre-commit hook ( #23077 )
...
## Summary
When running Ruff through pre-commit, since [`types_or` does not include
`markdown`](https://github.com/astral-sh/ruff-pre-commit/blob/0470f7c8a653e950f7cc5a653204ceb3fde4c02a/.pre-commit-hooks.yaml#L17 ),
Markdown files are not included. I believe it could be useful to
indicate what needs be done in that case.
We could also set `markdown` to `ruff-format` hook, but we probably
don't want to do that until the feature is stable?
## Test Plan
Tested the hook locally on a project using Markdown files.
For the documentation, checked it locally:
<img width="1058" height="259" alt="image"
src="https://github.com/user-attachments/assets/251a67e2-e1f7-4357-ba0c-52d6f65fe39a "
/>
2026-02-04 16:12:04 -08:00
Brent Westbrook
ce5f7b6127
Bump 0.15.0 ( #23055 )
2026-02-03 12:20:59 -05:00