@@ -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+
364380if __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