From 4c3ba10b3e9a5d0685c532c29db5714f8dc6c1df Mon Sep 17 00:00:00 2001 From: Joris Roovers Date: Thu, 5 Jan 2023 12:03:35 +0000 Subject: [PATCH 1/2] Use ruff for linting Also fixes a few items that were marked as issues by ruff. --- gitlint-core/gitlint/cli.py | 8 ++--- gitlint-core/gitlint/tests/cli/test_cli.py | 1 - .../gitlint/tests/cli/test_cli_hooks.py | 1 - .../gitlint/tests/git/test_git_commit.py | 1 - pyproject.toml | 30 +++++++++++++++++-- qa/samples/user_rules/extra/extra_rules.py | 6 ++-- qa/shell.py | 2 +- 7 files changed, 35 insertions(+), 14 deletions(-) diff --git a/gitlint-core/gitlint/cli.py b/gitlint-core/gitlint/cli.py index 387072ef..d1ed4561 100644 --- a/gitlint-core/gitlint/cli.py +++ b/gitlint-core/gitlint/cli.py @@ -172,11 +172,9 @@ def build_git_context(lint_config, msg_filename, commit_hash, refspec): from_commit_msg = GitContext.from_commit_msg if lint_config.staged: LOG.debug("Fetching additional meta-data from staged commit") - from_commit_msg = ( - lambda message: GitContext.from_staged_commit( # pylint: disable=unnecessary-lambda-assignment - message, lint_config.target - ) - ) + + def from_commit_msg(message): + return GitContext.from_staged_commit(message, lint_config.target) # Order of precedence: # 1. Any data specified via --msg-filename diff --git a/gitlint-core/gitlint/tests/cli/test_cli.py b/gitlint-core/gitlint/tests/cli/test_cli.py index 45093dd6..f0177c43 100644 --- a/gitlint-core/gitlint/tests/cli/test_cli.py +++ b/gitlint-core/gitlint/tests/cli/test_cli.py @@ -1,4 +1,3 @@ -import io import os import sys import platform diff --git a/gitlint-core/gitlint/tests/cli/test_cli_hooks.py b/gitlint-core/gitlint/tests/cli/test_cli_hooks.py index 6564a64f..cfdb7043 100644 --- a/gitlint-core/gitlint/tests/cli/test_cli_hooks.py +++ b/gitlint-core/gitlint/tests/cli/test_cli_hooks.py @@ -1,4 +1,3 @@ -import io from io import StringIO import os diff --git a/gitlint-core/gitlint/tests/git/test_git_commit.py b/gitlint-core/gitlint/tests/git/test_git_commit.py index b27deaf9..ee76a96b 100644 --- a/gitlint-core/gitlint/tests/git/test_git_commit.py +++ b/gitlint-core/gitlint/tests/git/test_git_commit.py @@ -10,7 +10,6 @@ from gitlint.tests.base import BaseTestCase from gitlint.git import ( - GitChangedFileStats, GitContext, GitCommit, GitContextError, diff --git a/pyproject.toml b/pyproject.toml index f4083d06..45e79982 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -80,6 +80,7 @@ dependencies = [ "pytest-cov==4.0.0", "python-coveralls==2.9.3", "pylint==2.15.3", + "ruff==0.0.211", "radon==5.1.0", "pdbr==0.7.5; sys_platform != \"win32\"" ] @@ -91,12 +92,17 @@ unit-tests = [ u = "unit-tests" unit-tests-no-cov = "pytest -rw -s {args:gitlint-core}" format = "black --check --diff ." -lint = "pylint gitlint-core/gitlint qa" +plint = "pylint gitlint-core/gitlint qa" +lint = "ruff gitlint-core/gitlint qa" +autofix = [ + "ruff --fix gitlint-core/gitlint qa", + "black .", +] all = [ "unit-tests", "format", - "lint" + "lint", ] # QA @@ -143,6 +149,26 @@ line-length = 120 # extend-exclude: keep excluding files from .gitignore in addition to the ones specified extend-exclude = "gitlint-core/gitlint/tests/samples/user_rules/import_exception/invalid_python.py" +[tool.ruff] +target-version = "py37" +extend-exclude = ["gitlint-core/gitlint/tests/samples/user_rules/import_exception/invalid_python.py"] + +ignore = [ + "E501", # Never enforce `E501` (line length violations) - taken care of by black +] + +select = [ + "E", # Pycodestyle + "F", # PyFlakes + "T20", # no print statements + "UP", # pyupgrade + "PLC", # pylint + "PLE", # pylint + "PLR", # pylint + "PLW", # pylint + "RUF", # ruff specific +] + [tool.coverage.run] branch = true # measure branch coverage in addition to statement coverage diff --git a/qa/samples/user_rules/extra/extra_rules.py b/qa/samples/user_rules/extra/extra_rules.py index cad531bb..fa058795 100644 --- a/qa/samples/user_rules/extra/extra_rules.py +++ b/qa/samples/user_rules/extra/extra_rules.py @@ -64,9 +64,9 @@ class ConfigurableCommitRule(CommitRule): def validate(self, _): violations = [ - RuleViolation(self.id, f"int-öption: {self.options[u'int-öption'].value}", line_nr=1), - RuleViolation(self.id, f"str-öption: {self.options[u'str-öption'].value}", line_nr=1), - RuleViolation(self.id, f"list-öption: {self.options[u'list-öption'].value}", line_nr=1), + RuleViolation(self.id, f"int-öption: {self.options['int-öption'].value}", line_nr=1), + RuleViolation(self.id, f"str-öption: {self.options['str-öption'].value}", line_nr=1), + RuleViolation(self.id, f"list-öption: {self.options['list-öption'].value}", line_nr=1), ] return violations diff --git a/qa/shell.py b/qa/shell.py index 7cddf3bc..60b2e545 100644 --- a/qa/shell.py +++ b/qa/shell.py @@ -49,7 +49,7 @@ def stderr(self): def __getattr__(self, p): # pylint: disable=invalid-name # https://github.com/amoffat/sh/blob/e0ed8e244e9d973ef4e0749b2b3c2695e7b5255b/sh.py#L952= - _unicode_methods = set(dir(str())) + _unicode_methods = set(dir(str())) # noqa if p in _unicode_methods: return getattr(str(self), p) From bb5c2917813ea5effd7b0eb4e76be119be05d54a Mon Sep 17 00:00:00 2001 From: Joris Roovers Date: Thu, 5 Jan 2023 12:07:45 +0000 Subject: [PATCH 2/2] fixup! Use ruff for linting --- qa/shell.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qa/shell.py b/qa/shell.py index 60b2e545..ef947276 100644 --- a/qa/shell.py +++ b/qa/shell.py @@ -49,7 +49,7 @@ def stderr(self): def __getattr__(self, p): # pylint: disable=invalid-name # https://github.com/amoffat/sh/blob/e0ed8e244e9d973ef4e0749b2b3c2695e7b5255b/sh.py#L952= - _unicode_methods = set(dir(str())) # noqa + _unicode_methods = set(dir(str())) # noqa if p in _unicode_methods: return getattr(str(self), p)