Skip to content
Suraj Subramanian edited this page Jul 24, 2023 · 8 revisions

In PyTorch, we enforce lint rules on code in order to help us catch common mistakes and enforce a greater degree of uniformity in our codebase than human reviewers can normally enforce.

PyTorch uses lintrunner to execute lints locally and in CI. This provides developers with a single command to run all the linters, and ensures consistency between the CI and local development environments. See the lintrunner repo for more info.

To get started, run the following to install lintrunner. Make sure you are at the root of the PyTorch repo:

pip install lintrunner
lintrunner init

This will install lintrunner on your system and download all the necessary dependencies to run linters locally. Note that this will install new packages with pip and download binaries maintained by the PyTorch team. If you want to see what lintrunner init will install, run lintrunner init --dry-run.

How do I run linters locally?

lintrunner

to lint your local changes (by default, this is your working tree changes and the HEAD commit).

How do I autoformat my code?

lintrunner f

to format locally changed files.

How do I run lint on my entire PR/branch?

If, say, your PR is targeting main, run:

lintrunner -m main

How do I run lint on specific files?

lintrunner torch/jit/_script.py torch/jit/_trace.py

xargs also works fine:

find -type f torch/onnx | xargs lintrunner

How do I run lint on all files?

lintrunner --all-files

Warning: this may take a while, PyTorch has a lot of files.

How do I run only a specific linter?

lintrunner --take BLACK,CLANGFORMAT

To see what linter names to pass, consult the config. By default, lintrunner runs all linters. To skip a linter, use --skip.

I have another question

For more docs run lintrunner --help, or see the lintrunner repo.

Clone this wiki locally