Skip to content

Commit 2efee60

Browse files
committed
utils: add option to only change one rule
Signed-off-by: Vitor Bandeira <[email protected]>
1 parent 1c4eda9 commit 2efee60

File tree

1 file changed

+37
-4
lines changed

1 file changed

+37
-4
lines changed

flow/util/genRuleFile.py

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def get_metrics(commitSHA, platform, design, api_base_url):
5252
return None, f"An error occurred: {str(e)}"
5353

5454

55-
def update_rules(designDir, variant, golden_metrics, overwrite):
55+
def update_rules(designDir, variant, golden_metrics, overwrite, include_metrics):
5656
if overwrite:
5757
gen_rule_file(
5858
designDir, # design directory
@@ -61,6 +61,7 @@ def update_rules(designDir, variant, golden_metrics, overwrite):
6161
False, # failing
6262
variant, # variant
6363
golden_metrics, # metrics needed for update, default is {} in case of file
64+
include_metrics,
6465
)
6566
else:
6667
gen_rule_file(
@@ -70,10 +71,12 @@ def update_rules(designDir, variant, golden_metrics, overwrite):
7071
False, # failing
7172
variant, # variant
7273
golden_metrics, # metrics needed for update, default is {} in case of file
74+
include_metrics,
7375
)
7476

7577

76-
def gen_rule_file(design_dir, update, tighten, failing, variant, golden_metrics={}):
78+
def gen_rule_file(design_dir, update, tighten, failing, variant,
79+
golden_metrics={}, include_metrics=[]):
7780
original_directory = getcwd()
7881
chdir(design_dir)
7982

@@ -307,7 +310,14 @@ def gen_rule_file(design_dir, update, tighten, failing, variant, golden_metrics=
307310
else:
308311
rule_value = ceil(rule_value * 100) / 100.0
309312

310-
if OLD_RULES is not None and field in OLD_RULES.keys():
313+
skip_metric = False if len(
314+
include_metrics) > 0 and field in include_metrics else True
315+
316+
can_compare = OLD_RULES is not None and field in OLD_RULES.keys()
317+
if can_compare and field not in include_metrics:
318+
rule_value = OLD_RULES[field]["value"]
319+
320+
if can_compare and field in include_metrics:
311321
old_rule = OLD_RULES[field]
312322
if old_rule["compare"] != option["compare"]:
313323
print("[WARNING] Compare operator changed since last update.")
@@ -361,6 +371,12 @@ def gen_rule_file(design_dir, update, tighten, failing, variant, golden_metrics=
361371
chdir(original_directory)
362372

363373

374+
def comma_separated_list(value):
375+
if value is None or value == "all":
376+
return []
377+
return [item.strip() for item in value.split(',')]
378+
379+
364380
if __name__ == "__main__":
365381
parser = argparse.ArgumentParser(
366382
description="Generates or updates rules file for CI."
@@ -390,6 +406,13 @@ def gen_rule_file(design_dir, update, tighten, failing, variant, golden_metrics=
390406
default=False,
391407
help="Update failing rules.",
392408
)
409+
parser.add_argument(
410+
"-m",
411+
"--metrics",
412+
type=comma_separated_list,
413+
default="all",
414+
help="Only consider the following metrics to change. [default=all]",
415+
)
393416
args = parser.parse_args()
394417

395418
if not args.update and not args.tighten and not args.failing:
@@ -400,4 +423,14 @@ def gen_rule_file(design_dir, update, tighten, failing, variant, golden_metrics=
400423
parser.print_help()
401424
sys.exit(1)
402425

403-
gen_rule_file(args.dir, args.update, args.tighten, args.failing, args.variant)
426+
golden_metrics = {}
427+
428+
gen_rule_file(
429+
args.dir, # design directory
430+
args.update,
431+
args.tighten,
432+
args.failing,
433+
args.variant,
434+
golden_metrics,
435+
args.metrics
436+
)

0 commit comments

Comments
 (0)