Ruff¶
Ruff ist ein extrem schneller Python-Linter und Code-Formatierer, geschrieben in Rust, der u.a. die Regeln von flake8, isort, perflint, Black und Bandit ausführen kann. Insgesamt kann Ruff über 800 Regeln überprüfen.
Installation¶
$ uv add --dev ruff
Überprüfen¶
Anschließend könnt ihr die Installation überprüfen mit
$ uv run ruff check /PATH/TO/YOUR/SOURCE/FILE
Shell-Autovervollständigung¶
Ruff unterstützt Autovervollständigung für die meisten Shells. Ein
shellspezifisches Skript kann mit uv run ruff generate-shell-completion
SHELL generiert werden, wobei SHELL entweder bash, elvish,
fig, fish, powershell oder zsh ist, z. B.
$ ruff generate-shell-completion zsh >> ~/.bash_completion
% ruff generate-shell-completion zsh > ~/.zfunc/_ruff
Anschließend müssen dann die folgenden Zeilen in eure ~/.zshrc
eingefügt werden, falls sie dort noch nicht vorhanden sind:
fpath+=~/.zfunc
autoload -Uz compinit && compinit
% mkdir $ZSH_CUSTOM/plugins/ruff
% ruff generate-shell-completion zsh > $ZSH_CUSTOM/plugins/ruff/_ruff
Siehe auch
Konfiguration¶
Im Gegensatz zur Standardformatierung von Black mit 88 Zeichen bevorzuge
ich eine Zeilenlänge von 79 Zeichen. Hierfür könnt ihr in die
pyproject.toml-Datei folgendes eintragen:
[tool.ruff]
line-length = 79
Tipp
Üblicherweise fügen wir ruff lint zunächst alle Regeln hinzu, bevor wir
dann einzelne wieder ausschließen, also z. B.:
[tool.ruff.lint]
select = ["ALL"]
ignore = [
"A", # Shaddowing is fine
]
Ruff unterstützt auch auch Monorepos mit unterschiedlichen Regeln durch hierarchische und kaskadierende Konfigurationen.
Siehe auch
Integration¶
Jupyter Notebooks¶
Ruff unterstützt das Linting und Formatieren von Jupyter Notebooks mit nbQA. Mit jupyter-ruff könnt ihr ruff auch in euren Notebooks verwenden.
IDE¶
Auch die Integration in andere Editoren wie Visual Studio Code, PyCharm oder Vim ist möglich. Für die Editor-spezifische Konfiguration schaut euch Setup an.
pre-commit¶
Ruff kann über ruff-pre-commit als Pre-Commit-Hook verwendet werden:
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.12.10
hooks:
- id: ruff-check
args: [--fix, --exit-non-zero-on-fix]
exclude: docs
- id: ruff-format