Skip to content

Commit 0b67293

Browse files
authored
Rewrite Ruff Check Without Tox (#43011)
* initial ruff script * fix logger.error syntax error * fix import
1 parent 3621b80 commit 0b67293

File tree

6 files changed

+68
-5
lines changed

6 files changed

+68
-5
lines changed

eng/tools/azure-sdk-tools/azpysdk/black.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def run(self, args: argparse.Namespace) -> int:
5050
try:
5151
install_into_venv(executable, [f"black=={BLACK_VERSION}"], package_dir)
5252
except CalledProcessError as e:
53-
logger.error("Failed to install black:", e)
53+
logger.error(f"Failed to install black: {e}")
5454
return e.returncode
5555

5656
logger.info(f"Running black against {package_name}")

eng/tools/azure-sdk-tools/azpysdk/main.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from .pylint import pylint
1919
from .sphinx import sphinx
2020
from .black import black
21+
from .ruff import ruff
2122

2223
from ci_tools.logging import configure_logging, logger
2324

@@ -78,6 +79,7 @@ def build_parser() -> argparse.ArgumentParser:
7879
pylint().register(subparsers, [common])
7980
sphinx().register(subparsers, [common])
8081
black().register(subparsers, [common])
82+
ruff().register(subparsers, [common])
8183

8284
return parser
8385

eng/tools/azure-sdk-tools/azpysdk/mypy.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def run(self, args: argparse.Namespace) -> int:
6868
else:
6969
install_into_venv(executable, [f"mypy=={MYPY_VERSION}"] + additional_requirements, package_dir)
7070
except CalledProcessError as e:
71-
logger.error("Failed to install mypy:", e)
71+
logger.error(f"Failed to install mypy: {e}")
7272
return e.returncode
7373

7474
logger.info(f"Running mypy against {package_name}")

eng/tools/azure-sdk-tools/azpysdk/pylint.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def run(self, args: argparse.Namespace) -> int:
5151
try:
5252
install_into_venv(executable, ["azure-pylint-guidelines-checker==0.5.6", "--index-url=https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/"], package_dir)
5353
except CalledProcessError as e:
54-
logger.error("Failed to install dependencies:", e)
54+
logger.error(f"Failed to install dependencies: {e}")
5555
return e.returncode
5656

5757
# install pylint
@@ -62,7 +62,7 @@ def run(self, args: argparse.Namespace) -> int:
6262
else:
6363
install_into_venv(executable, [f"pylint=={PYLINT_VERSION}"], package_dir)
6464
except CalledProcessError as e:
65-
logger.error("Failed to install pylint:", e)
65+
logger.error(f"Failed to install pylint: {e}")
6666
return e.returncode
6767

6868
top_level_module = parsed.namespace.split(".")[0]
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import argparse
2+
import os
3+
import sys
4+
import subprocess
5+
from typing import Optional, List
6+
7+
from .Check import Check
8+
from ci_tools.functions import install_into_venv
9+
from ci_tools.variables import set_envvar_defaults
10+
from ci_tools.logging import logger
11+
12+
class ruff(Check):
13+
def __init__(self) -> None:
14+
super().__init__()
15+
16+
def register(self, subparsers: "argparse._SubParsersAction", parent_parsers: Optional[List[argparse.ArgumentParser]] = None) -> None:
17+
"""Register the ruff check. The ruff check installs ruff and runs ruff against the target package.
18+
"""
19+
parents = parent_parsers or []
20+
p = subparsers.add_parser("ruff", parents=parents, help="Run the ruff check")
21+
p.set_defaults(func=self.run)
22+
23+
def run(self, args: argparse.Namespace) -> int:
24+
"""Run the ruff check command."""
25+
logger.info("Running ruff check...")
26+
27+
set_envvar_defaults()
28+
targeted = self.get_targeted_directories(args)
29+
30+
results: List[int] = []
31+
32+
for parsed in targeted:
33+
package_dir = parsed.folder
34+
package_name = parsed.name
35+
executable, staging_directory = self.get_executable(args.isolate, args.command, sys.executable, package_dir)
36+
logger.info(f"Processing {package_name} for ruff check")
37+
38+
self.install_dev_reqs(executable, args, package_dir)
39+
40+
try:
41+
install_into_venv(executable, ["ruff"], package_dir)
42+
except subprocess.CalledProcessError as e:
43+
logger.error(f"Failed to install ruff: {e}")
44+
return e.returncode
45+
46+
top_level_module = parsed.namespace.split(".")[0]
47+
48+
try:
49+
subprocess.check_call(
50+
[
51+
executable,
52+
"-m",
53+
"ruff",
54+
"check",
55+
os.path.join(package_dir, top_level_module),
56+
])
57+
except subprocess.CalledProcessError as e:
58+
logger.error(f"ruff check failed for {package_name}: {e}")
59+
results.append(e.returncode)
60+
61+
return max(results) if results else 0

eng/tools/azure-sdk-tools/azpysdk/sphinx.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ def run(self, args: argparse.Namespace) -> int:
294294
package_dir
295295
)
296296
except CalledProcessError as e:
297-
logger.error("Failed to install sphinx:", e)
297+
logger.error(f"Failed to install sphinx: {e}")
298298
return e.returncode
299299

300300
logger.info(f"Running sphinx against {package_name}")

0 commit comments

Comments
 (0)