Skip to content

Commit

Permalink
utils: add option to only change one rule
Browse files Browse the repository at this point in the history
Signed-off-by: Vitor Bandeira <[email protected]>
  • Loading branch information
Vitor Bandeira committed Feb 11, 2025
1 parent d3da3b8 commit ede17e3
Showing 1 changed file with 39 additions and 4 deletions.
43 changes: 39 additions & 4 deletions flow/util/genRuleFile.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def get_metrics(commitSHA, platform, design, api_base_url):
return None, f"An error occurred: {str(e)}"


def update_rules(designDir, variant, golden_metrics, overwrite):
def update_rules(designDir, variant, golden_metrics, overwrite, include_metrics):
if overwrite:
gen_rule_file(
designDir, # design directory
Expand All @@ -61,6 +61,7 @@ def update_rules(designDir, variant, golden_metrics, overwrite):
False, # failing
variant, # variant
golden_metrics, # metrics needed for update, default is {} in case of file
include_metrics,
)
else:
gen_rule_file(
Expand All @@ -70,10 +71,13 @@ def update_rules(designDir, variant, golden_metrics, overwrite):
False, # failing
variant, # variant
golden_metrics, # metrics needed for update, default is {} in case of file
include_metrics,
)


def gen_rule_file(design_dir, update, tighten, failing, variant, golden_metrics={}):
def gen_rule_file(
design_dir, update, tighten, failing, variant, golden_metrics={}, include_metrics=[]
):
original_directory = getcwd()
chdir(design_dir)

Expand Down Expand Up @@ -307,7 +311,15 @@ def gen_rule_file(design_dir, update, tighten, failing, variant, golden_metrics=
else:
rule_value = ceil(rule_value * 100) / 100.0

if OLD_RULES is not None and field in OLD_RULES.keys():
skip_metric = (
False if len(include_metrics) > 0 and field in include_metrics else True
)

can_compare = OLD_RULES is not None and field in OLD_RULES.keys()
if can_compare and field not in include_metrics:
rule_value = OLD_RULES[field]["value"]

if can_compare and field in include_metrics:
old_rule = OLD_RULES[field]
if old_rule["compare"] != option["compare"]:
print("[WARNING] Compare operator changed since last update.")
Expand Down Expand Up @@ -361,6 +373,12 @@ def gen_rule_file(design_dir, update, tighten, failing, variant, golden_metrics=
chdir(original_directory)


def comma_separated_list(value):
if value is None or value == "all":
return []
return [item.strip() for item in value.split(",")]


if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="Generates or updates rules file for CI."
Expand Down Expand Up @@ -390,6 +408,13 @@ def gen_rule_file(design_dir, update, tighten, failing, variant, golden_metrics=
default=False,
help="Update failing rules.",
)
parser.add_argument(
"-m",
"--metrics",
type=comma_separated_list,
default="all",
help="Only consider the following metrics to change. [default=all]",
)
args = parser.parse_args()

if not args.update and not args.tighten and not args.failing:
Expand All @@ -400,4 +425,14 @@ def gen_rule_file(design_dir, update, tighten, failing, variant, golden_metrics=
parser.print_help()
sys.exit(1)

gen_rule_file(args.dir, args.update, args.tighten, args.failing, args.variant)
golden_metrics = {}

gen_rule_file(
args.dir, # design directory
args.update,
args.tighten,
args.failing,
args.variant,
golden_metrics,
args.metrics,
)

0 comments on commit ede17e3

Please sign in to comment.