Migrate to Ruff
Consider migrating to ruff for linting and for formatting.
Ruff already implements the black formatting style mostly, as well as other formatting tools like isort etc.
Generally I use the following in my pyproject.toml file
[tool.ruff.lint]
select = [
# pycodestyle
"E",
# Warning
"W",
# Pyflakes
"F",
# pyupgrade
"UP",
# flake8-bugbear
"B",
# flake8-simplify
"SIM",
# isort
"I",
]
Also consider using precommit to lint and format on the commit, to take the hassle out of running the formatted manually. You can also include the npm formatter at the same time.
For example my .pre-commit-config.yaml is as follows:
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.2.2
hooks:
# Run the linter.
- id: ruff
args: [ --fix ]
# Run the formatter.
- id: ruff-format
What would be the benefit? I'm quite happy with using Black for formatting at the moment, it's helpful and quite snappy.
Not sure about adding linting either. I've never worked with Python in a professional setting, so the codebase is mostly me making stuff work in a non-consistent style. I'm also not particularly interested in refactoring code just to satisfy the linter. Adding it might prevent some bugs, but so far there haven't been a lot of those, and some decent test coverage is more important to me.
Ruff has two big benefits over most other tools in the space:
- it is a lot faster
- it has self-fix capability for linting errors for wide variety of things you might want to change
Due to that I am usually using it in a lot of projects just to get consistent formatting as well as style ( linting ). It also has (semi)automated upgrade support if and when you want to get rid of code constructs that are legacy ( eg most typing module ).
No plans to switch tools at this point.