HumanSignal / label-studio-sdk

Label Studio SDK
https://api.labelstud.io
Apache License 2.0
99 stars 61 forks source link

[Suggestion] Autofix PRs with pre-commit.ci #143

Open lmmx opened 1 year ago

lmmx commented 1 year ago

I was reading the PR below and saw that the merge had been prevented by linting:

Can you rerun the linter locally against your changes, it is failing the lint step.

This sounds like the exact use case pre-commit.ci was intended to solve: it does not require a GitHub Action workflow config, it just runs based on adding it to a repo:

Developers spend a fair chunk of time during their development flow on fixing relatively trivial problems in their code. pre-commit.ci both enforces that these issues are discovered (which is opt-in for each developer's workflow via pre-commit) but also fixes the issues automatically, letting developers focus their time on more valuable problems.

In other words, it removes the requirement for someone (be it someone sending a PR or someone reviewing it) to run the linter. The pre-commit.ci bot will run it and if it doesn't pass, it'll add a commit onto the PR branch that fixes the linting (ensuring no PR is blocked by linting).

Your lint step runs black --check --skip-string-normalization ./label_studio_sdk (here).

This would need to be a .pre-commit-config.yaml at the base of the repo. Here's the example from black's docs:

repos:
  - repo: https://github.com/psf/black
    rev: 23.7.0
    hooks:
      - id: black
        # It is recommended to specify the latest version of Python
        # supported by your project here, or alternatively use
        # pre-commit's default_language_version, see
        # https://pre-commit.com/#top_level-default_language_version
        language_version: python3.11

If you do want to use it in a GitHub Actions workflow you can use the lite version (but it doesn't autoupdate hook versions and runs slower). By default pre-commit will autoupdate weekly on a Monday.

Feel free to reject if it doesn't suit your needs, just a suggestion that might make life easier for LabelStudio :smile_cat: