sissbruecker / linkding

Self-hosted bookmark manager that is designed be to be minimal, fast, and easy to set up using Docker.
MIT License
5.33k stars 261 forks source link

Migrate to Ruff #707

Open ab623 opened 2 months ago

ab623 commented 2 months ago

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
sissbruecker commented 2 months ago

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.

fingon commented 1 month ago

Ruff has two big benefits over most other tools in the space:

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 ).