Skip to content

Commit ede17e3

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

File tree

1 file changed

+39
-4
lines changed

1 file changed

+39
-4
lines changed

flow/util/genRuleFile.py

Lines changed: 39 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,13 @@ 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(
79+
design_dir, update, tighten, failing, variant, golden_metrics={}, include_metrics=[]
80+
):
7781
original_directory = getcwd()
7882
chdir(design_dir)
7983

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

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

363375

376+
def comma_separated_list(value):
377+
if value is None or value == "all":
378+
return []
379+
return [item.strip() for item in value.split(",")]
380+
381+
364382
if __name__ == "__main__":
365383
parser = argparse.ArgumentParser(
366384
description="Generates or updates rules file for CI."
@@ -390,6 +408,13 @@ def gen_rule_file(design_dir, update, tighten, failing, variant, golden_metrics=
390408
default=False,
391409
help="Update failing rules.",
392410
)
411+
parser.add_argument(
412+
"-m",
413+
"--metrics",
414+
type=comma_separated_list,
415+
default="all",
416+
help="Only consider the following metrics to change. [default=all]",
417+
)
393418
args = parser.parse_args()
394419

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

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

0 commit comments

Comments
 (0)