How to Disable the Ruff Formatter for a Block of Code
Ruff’s formatter collapses extra whitespace, so a hand-aligned matrix or a column-formatted data table comes back as a single dense line after ruff format. The # fmt: off and # fmt: skip pragma comments tell the formatter to leave a region alone, exactly as Black does.
These comments control the formatter only. To stop the linter from reporting a rule, see how to disable Ruff rules for a block of code.
Wrap the Block in fmt: off and fmt: on
Put # fmt: off on its own line before the block and # fmt: on after it. The formatter preserves every line in between.
# fmt: off
ROTATION = [
1, 0, 0,
0, 1, 0,
0, 0, 1,
]
# fmt: onConfirm the block survives a format pass:
uv run ruff format --check --diff .The aligned matrix is left untouched. Code outside the # fmt: off/# fmt: on pair is still formatted normally.
Skip a Single Statement with fmt: skip
For one line, end the statement with # fmt: skip. The formatter leaves that statement’s spacing as written.
grid = [1, 2, 3, 4] # fmt: skip# fmt: skip attaches to a whole statement, including a decorator, a function or class definition, or a case header. It cannot suppress one item inside a list or expression.
Keep Suppression Comments Where They Work
# fmt: off and # fmt: on are enforced at the statement level, so placing either mid-expression does nothing. A # fmt: skip inside a list or argument has no effect either.
Ruff flags these dead comments with RUF028 (invalid-formatter-suppression-comment):
values = [
1, 2, 3, # fmt: skip -> RUF028: this comment cannot take effect here
]Keep RUF028 enabled so a misplaced pragma surfaces in ruff check instead of silently letting the formatter rewrite code you meant to protect.
Map yapf Comments to Ruff
Projects migrating from yapf can leave their # yapf: disable and # yapf: enable comments in place. Ruff treats them as equivalent to # fmt: off and # fmt: on.