File: ruff.py

package info (click to toggle)
python-azure 20251104%2Bgit-1
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 770,224 kB
  • sloc: python: 6,357,217; ansic: 804; javascript: 287; makefile: 198; sh: 193; xml: 109
file content (64 lines) | stat: -rw-r--r-- 2,227 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import argparse
import os
import sys
import subprocess
from typing import Optional, List

from .Check import Check
from ci_tools.functions import install_into_venv
from ci_tools.variables import set_envvar_defaults
from ci_tools.logging import logger


class ruff(Check):
    def __init__(self) -> None:
        super().__init__()

    def register(
        self, subparsers: "argparse._SubParsersAction", parent_parsers: Optional[List[argparse.ArgumentParser]] = None
    ) -> None:
        """Register the ruff check. The ruff check installs ruff and runs ruff against the target package."""
        parents = parent_parsers or []
        p = subparsers.add_parser("ruff", parents=parents, help="Run the ruff check")
        p.set_defaults(func=self.run)

    def run(self, args: argparse.Namespace) -> int:
        """Run the ruff check command."""
        logger.info("Running ruff check...")

        set_envvar_defaults()
        targeted = self.get_targeted_directories(args)

        results: List[int] = []

        for parsed in targeted:
            package_dir = parsed.folder
            package_name = parsed.name
            executable, staging_directory = self.get_executable(args.isolate, args.command, sys.executable, package_dir)
            logger.info(f"Processing {package_name} for ruff check")

            self.install_dev_reqs(executable, args, package_dir)

            try:
                install_into_venv(executable, ["ruff"], package_dir)
            except subprocess.CalledProcessError as e:
                logger.error(f"Failed to install ruff: {e}")
                return e.returncode

            top_level_module = parsed.namespace.split(".")[0]

            try:
                subprocess.check_call(
                    [
                        executable,
                        "-m",
                        "ruff",
                        "check",
                        os.path.join(package_dir, top_level_module),
                    ]
                )
            except subprocess.CalledProcessError as e:
                logger.error(f"ruff check failed for {package_name}: {e}")
                results.append(e.returncode)

        return max(results) if results else 0