Introduce ruff formatter and linter

Replace yapf, isort and flake8 with much faster ruff formatter. Remove
conflicting rule and switch to double quotes for strings.

Install:
pip install ."[dev]"
pre-commit install

Run pre-commit hooks:
pre-commit run -a

Related #2295
This commit is contained in:
Matthias Hagmann 2024-02-17 16:32:17 +01:00 committed by Peter F. Patel-Schneider
parent ce00a78e7f
commit fb6285606d
4 changed files with 24 additions and 28 deletions

View File

@ -8,19 +8,14 @@ repos:
- id: check-yaml
- id: check-toml
- id: debug-statements
- id: double-quote-string-fixer
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/pre-commit/mirrors-yapf
rev: v0.32.0
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.2.2
hooks:
- id: yapf
- repo: https://github.com/pre-commit/mirrors-isort
rev: v5.10.1
hooks:
- id: isort
- repo: https://github.com/PyCQA/flake8
rev: 6.0.0
hooks:
- id: flake8
additional_dependencies: ['flake8-bugbear']
- id: ruff
name: ruff lint
args: [--fix, --exit-non-zero-on-fix]
- id: ruff-format
name: ruff format
args: [--diff]

15
pyproject.toml Normal file
View File

@ -0,0 +1,15 @@
[tool.ruff]
line-length = 127
target-version = "py37"
[tool.ruff.lint]
select = [
"F", # Pyflakes
"E", # pycodestyle
"W", # pycodestyle
"B", # flake8-bugbear
"I", # isort
]
[tool.ruff.lint.isort]
lines-between-types = 1

View File

@ -1,15 +0,0 @@
[flake8]
max-line-length = 127
extend-ignore = E266,E731,E741
min-python-version = 3.5
[yapf]
column_limit = 127
dedent_closing_brackets = True
coalesce_brackets = True
[isort]
line_length = 127
lines_between_types = 1
;blocked by https://github.com/google/yapf/issues/429
;lines_after_imports = 2

View File

@ -86,6 +86,7 @@ For instructions on installing Solaar see https://pwr-solaar.github.io/Solaar/in
'desktop-notifications': ['Notify (>= 0.7)'],
'git-commit': ['python-git-info'],
'test': ['pytest', 'pytest-cov'],
'dev': ['ruff'],
},
package_dir={'': 'lib'},
packages=['keysyms', 'hidapi', 'logitech_receiver', 'solaar', 'solaar.ui', 'solaar.cli'],