@@ -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+
364382if __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 ,
432+ args .update ,
433+ args .tighten ,
434+ args .failing ,
435+ args .variant ,
436+ golden_metrics ,
437+ args .metrics ,
438+ )
0 commit comments