Skip to content

Preview#

Ruff includes an opt-in preview mode to provide an opportunity for community feedback and increase confidence that changes are a net-benefit before enabling them for everyone.

Preview mode enables a collection of newer lint rules, fixes, and formatter style changes that are considered experimental or unstable,.

Enabling preview mode#

Preview mode can be enabled with the --preview flag on the CLI or by setting preview = true in your Ruff configuration file.

Preview mode can be configured separately for linting and formatting (requires Ruff v0.1.1+). To enable preview lint rules without preview style formatting:

[tool.ruff.lint]
preview = true
[lint]
preview = true

To enable preview style formatting without enabling any preview lint rules:

[tool.ruff.format]
preview = true
[format]
preview = true

Using rules that are in preview#

If a rule is marked as preview, it can only be selected if preview mode is enabled. For example, consider a hypothetical rule, HYP001. If HYP001 were in preview, it would not be enabled by adding following to your config file:

[tool.ruff.lint]
extend-select = ["HYP001"]
[lint]
extend-select = ["HYP001"]

It also would not be enabled by selecting the HYP category, like so:

[tool.ruff.lint]
extend-select = ["HYP"]
[lint]
extend-select = ["HYP"]

Similarly, it would not be enabled via the ALL selector:

[tool.ruff.lint]
select = ["ALL"]
[lint]
select = ["ALL"]

However, it would be enabled in any of the above cases if you enabled preview in your configuration file:

[tool.ruff.lint]
extend-select = ["HYP"]
preview = true
[lint]
extend-select = ["HYP"]
preview = true

Or, if you provided the --preview CLI flag.

To see which rules are currently in preview, visit the rules reference.

Selecting single preview rules#

When preview mode is enabled, selecting rule categories or prefixes will include all preview rules that match. If you'd prefer to opt-in to each preview rule individually, you can toggle the explicit-preview-rules setting in your configuration file:

[tool.ruff.lint]
preview = true
explicit-preview-rules = true
[lint]
preview = true
explicit-preview-rules = true

In our previous example, --select with ALL HYP, HYP0, or HYP00 would not enable HYP001. Each preview rule will need to be selected with its exact code, e.g. --select ALL,HYP001.

If preview mode is not enabled, this setting has no effect.

Deprecated rules#

When preview mode is enabled, deprecated rules will be disabled. If a deprecated rule is selected explicitly, an error will be raised. Deprecated rules will not be included if selected via a rule category or prefix.