ryantam626 / jupyterlab_code_formatter

A JupyterLab plugin to facilitate invocation of code formatters.
MIT License
822 stars 52 forks source link

Support ruff as a formatter #296

Closed felix-cw closed 1 year ago

felix-cw commented 1 year ago

Ruff is a linter for python that also has the ability to fix the lints automatically. I'm using it as an alternative to isort.

I think it would be good to add it as a supported option in this package.

Here is the code I used to add it as a custom formatter:

from jupyterlab_code_formatter.formatters import (
    SERVER_FORMATTERS,
    CommandLineFormatter,
)

class RuffFixFormatter(CommandLineFormatter):
    def __init__(self):
        try:
            from ruff.__main__ import find_ruff_bin

            ruff_command = find_ruff_bin()
        except (ImportError, FileNotFoundError):
            ruff_command = "ruff"
        self.command = [ruff_command, "check", "--fix-only", "-", "--select=COM,I"]

SERVER_FORMATTERS["ruff_isort"] = RuffFixFormatter()

I'm not sure how to pass args to a custom function via the normal jupyter lab config, so I hardcoded my rule selection argument --select=COM,I.

jbusecke commented 1 year ago

+1 👍

ryantam626 commented 1 year ago

Forgot to report back, 2.0.0/2.1.0+ would have ruff support, thanks again for your PR!