From 4c9173da75b7500d53262c4ec550ae660be9bf42 Mon Sep 17 00:00:00 2001 From: Samuel Colvin Date: Sun, 26 Mar 2023 20:01:32 +0100 Subject: [PATCH] add ruff_select, use --extend-select, add ignore_errors --- pytest_examples/config.py | 4 ++++ pytest_examples/eval_example.py | 5 ++++- pytest_examples/lint.py | 8 +++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/pytest_examples/config.py b/pytest_examples/config.py index 6e4d0d0..cb1fa2e 100644 --- a/pytest_examples/config.py +++ b/pytest_examples/config.py @@ -26,6 +26,7 @@ class ExamplesConfig: upgrade: bool = False isort: bool = False ruff_line_length: int | None = None + ruff_select: list[str] | None = None ruff_ignore: list[str] | None = None def black_mode(self): @@ -54,6 +55,9 @@ def ruff_config(self) -> tuple[str, ...]: else: args.append(f'--line-length={self.ruff_line_length}') + if self.ruff_select: + select.extend(self.ruff_select) + if self.quotes == 'single': # enforce single quotes using ruff, black will enforce double quotes select.append('Q') diff --git a/pytest_examples/eval_example.py b/pytest_examples/eval_example.py index 337aadc..2dc5b93 100644 --- a/pytest_examples/eval_example.py +++ b/pytest_examples/eval_example.py @@ -41,6 +41,7 @@ def set_config( upgrade: bool = False, isort: bool = False, ruff_line_length: int | None = None, + ruff_select: list[str] | None = None, ruff_ignore: list[str] | None = None, ): """ @@ -53,7 +54,8 @@ def set_config( :param upgrade: If True, upgrade the code to the target version, defaults to False. :param isort: If True, run ruff's isort extension on the code, defaults to False. :param ruff_line_length: In general, we disable line-length checks in ruff, to let black take care of them. - :param ruff_ignore: Ruff rule to ignore + :param ruff_select: Ruff rules to select + :param ruff_ignore: Ruff rules to ignore """ self.config = ExamplesConfig( line_length=line_length, @@ -63,6 +65,7 @@ def set_config( upgrade=upgrade, isort=isort, ruff_line_length=ruff_line_length, + ruff_select=ruff_select, ruff_ignore=ruff_ignore, ) diff --git a/pytest_examples/lint.py b/pytest_examples/lint.py index ef18bcf..4fe8f8c 100644 --- a/pytest_examples/lint.py +++ b/pytest_examples/lint.py @@ -23,8 +23,12 @@ class FormatError(ValueError): def ruff_format( example: CodeExample, config: ExamplesConfig | None, + *, + ignore_errors: bool = False, ) -> str: args = ('--fix',) + if ignore_errors: + args += ('--exit-zero',) try: return ruff_check(example, config, extra_ruff_args=args) except FormatError: @@ -43,9 +47,7 @@ def ruff_check( *, extra_ruff_args: tuple[str, ...] = (), ) -> str: - args = 'ruff', '-', *config.ruff_config() - - args += extra_ruff_args + args = 'ruff', '-', *config.ruff_config(), *extra_ruff_args p = Popen(args, stdin=PIPE, stdout=PIPE, stderr=PIPE, universal_newlines=True) stdout, stderr = p.communicate(example.source, timeout=2)