ruff
e938ce16 - fill in missing metadata with a script

Commit
39 days ago
fill in missing metadata with a script ```py import json import re import subprocess import sys from dataclasses import dataclass def to_camelcase(s): return "".join(item.title() for item in s.split("-")) @dataclass class Rule: name: str code: str file: str line: int rules = [ Rule( name=rule["name"], code=rule["code"], file=rule["source_location"]["file"], line=rule["source_location"]["line"], ) for rule in json.loads( subprocess.run( ["uvx", "ruff@latest", "rule", "--all", "--output-format=json"], text=True, capture_output=True, ).stdout ) ] name_to_rule = {to_camelcase(rule.name).lower(): rule for rule in rules} error_re = re.compile( r"Expected fix for rule (?P<rule>[a-zA-z0-9]+) to be at least (?:Safe|Unsafe|DisplayOnly) but got (?P<safety>:Safe|Unsafe|DisplayOnly)" ) to_fix = {} for line in sys.stdin: print(line) m = error_re.fullmatch(line.strip()) if not m: raise ValueError(line) match m["safety"]: case "Safe": safety = "safe" case "Unsafe": safety = "unsafe" case "DisplayOnly": safety = "display-only" case s: raise ValueError(s) to_fix[m["rule"]] = safety for name, safety in to_fix.items(): rule = name_to_rule[name.lower()] with open(rule.file) as f: lines = f.readlines() lines[rule.line] = re.sub( r'(, safety = "[^"]+")*\)\]$', f', safety = "{safety}")]', lines[rule.line] ) with open(rule.file, "w") as f: f.writelines(lines) print(f"fixed {len(to_fix)} rules") ```
Author
Committer
Parents
Loading