Update pre-commit documentation (#57)

I got some feedback on Mastodon that it wasn't clear how to use the
linter and formatter together in pre-commit.

This also removes `--exit-non-zero-on-fix`, since pre-commit already
exits if files are changed, and changes our recommendation to always put
the formatter after the linter, since if a previous tool ends up
committing changes, pre-commit should fail anyway.
This commit is contained in:
Charlie Marsh 2023-11-07 10:33:28 -08:00 committed by GitHub
parent 3dacd83b1e
commit f1ef5ac6b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -13,67 +13,59 @@ Distributed as a standalone repository to enable installing Ruff via prebuilt wh
### Using Ruff with pre-commit ### Using Ruff with pre-commit
Add this to your `.pre-commit-config.yaml`: To run Ruff's [linter](https://docs.astral.sh/ruff/linter) and [formatter](https://docs.astral.sh/ruff/formatter)
(available as of Ruff v0.0.289) via pre-commit, add the following to your `.pre-commit-config.yaml`:
```yaml ```yaml
- repo: https://github.com/astral-sh/ruff-pre-commit - repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version. # Ruff version.
rev: v0.1.4 rev: v0.1.4
hooks: hooks:
# Run the linter.
- id: ruff - id: ruff
# Run the formatter.
- id: ruff-format
``` ```
Or, to enable autofix: To enable lint fixes, add the `--fix` argument to the lint hook:
```yaml ```yaml
- repo: https://github.com/astral-sh/ruff-pre-commit - repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version. # Ruff version.
rev: v0.1.4 rev: v0.1.4
hooks: hooks:
# Run the linter.
- id: ruff - id: ruff
args: [--fix, --exit-non-zero-on-fix] args: [ --fix ]
# Run the formatter.
- id: ruff-format
``` ```
To run the hook on Jupyter Notebooks too: To run the hooks over Jupyter Notebooks too, add `jupyter` to the list of allowed filetypes:
```yaml ```yaml
- repo: https://github.com/astral-sh/ruff-pre-commit - repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version. # Ruff version.
rev: v0.1.4 rev: v0.1.4
hooks: hooks:
# Run the linter.
- id: ruff - id: ruff
types_or: [ python, pyi, jupyter ] types_or: [ python, pyi, jupyter ]
args: [ --fix ]
# Run the formatter.
- id: ruff-format
types_or: [ python, pyi, jupyter ]
``` ```
Ruff's pre-commit hook should be placed after other formatting tools, such as Black and isort, When running with `--fix`, Ruff's lint hook should be placed _before_ Ruff's formatter hook, and
_unless_ you enable autofix, in which case, Ruff's pre-commit hook should run _before_ Black, isort, _before_ Black, isort, and other formatting tools, as Ruff's fix behavior can output code changes
and other formatting tools, as Ruff's autofix behavior can output code changes that require that require reformatting.
reformatting.
### Using Ruff's formatter (unstable) When running without `--fix`, Ruff's formatter hook can be placed before or after Ruff's lint hook.
[Ruff's formatter](https://docs.astral.sh/ruff/formatter) can used with pre-commit by adding the `ruff-format` hook: (As long as your Ruff configuration avoids any [linter-formatter incompatibilities](https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules),
`ruff format` should never introduce new lint errors, so it's safe to run Ruff's format hook _after_
```yaml `ruff check --fix`.)
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.1.4
hooks:
- id: ruff-format
```
To check formatting without changing files, use `--check`:
```yaml
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.1.4
hooks:
- id: ruff-format
args: [--check]
```
Note `v0.0.290` is the minimum version that provides the `ruff-format` hook.
## License ## License