1010import sys
1111
1212
13- def update_rules (designDir , variant , golden_metrics , overwrite , metrics_to_consider ):
13+ def update_rules (designDir , variant , reference , overwrite , metrics_to_consider ):
1414 if overwrite :
1515 gen_rule_file (
1616 designDir , # design directory
1717 True , # update
1818 False , # tighten
1919 False , # failing
2020 variant , # variant
21- golden_metrics , # metrics needed for update, default is {} in case of file
21+ reference , # metrics for update
2222 metrics_to_consider ,
2323 )
2424 else :
@@ -28,7 +28,7 @@ def update_rules(designDir, variant, golden_metrics, overwrite, metrics_to_consi
2828 True , # tighten
2929 False , # failing
3030 variant , # variant
31- golden_metrics , # metrics needed for update, default is {} in case of file
31+ reference , # metrics for update
3232 metrics_to_consider ,
3333 )
3434
@@ -39,26 +39,26 @@ def gen_rule_file(
3939 tighten ,
4040 failing ,
4141 variant ,
42- golden_metrics = {} ,
42+ metrics = None ,
4343 metrics_to_consider = [],
4444):
45+
46+ golden_metrics = f"metadata-{ variant } -ok.json"
47+ if isinstance (metrics , str ) and isfile (metrics ):
48+ with open (metrics , "r" ) as f :
49+ metrics = json .load (f )
50+ elif isfile (golden_metrics ):
51+ with open (golden_metrics , "r" ) as f :
52+ metrics = json .load (f )
53+ if not isinstance (metrics , dict ):
54+ print (f"[ERROR] Invalid format for reference metrics { design_dir } " )
55+ sys .exit (1 )
56+
4557 original_directory = getcwd ()
4658 chdir (design_dir )
47-
48- metrics_file = f"metadata-{ variant } -ok.json"
4959 rules_file = f"rules-{ variant } .json"
5060 rules = dict ()
5161
52- if golden_metrics == {}:
53- if isfile (metrics_file ):
54- with open (metrics_file , "r" ) as f :
55- metrics = json .load (f )
56- else :
57- print (f"[ERROR] Golden metrics file not found { design_dir } " )
58- sys .exit (1 )
59- else :
60- metrics = golden_metrics
61-
6262 if isfile (rules_file ):
6363 with open (rules_file , "r" ) as f :
6464 OLD_RULES = json .load (f )
@@ -374,6 +374,13 @@ def comma_separated_list(value):
374374 default = False ,
375375 help = "Update failing rules." ,
376376 )
377+ parser .add_argument (
378+ "-r" ,
379+ "--reference" ,
380+ type = str ,
381+ default = None ,
382+ help = "Reference metadata file." ,
383+ )
377384 parser .add_argument (
378385 "-m" ,
379386 "--metrics" ,
@@ -391,14 +398,12 @@ def comma_separated_list(value):
391398 parser .print_help ()
392399 sys .exit (1 )
393400
394- golden_metrics = {}
395-
396401 gen_rule_file (
397402 args .dir ,
398403 args .update ,
399404 args .tighten ,
400405 args .failing ,
401406 args .variant ,
402- golden_metrics ,
407+ args . reference ,
403408 args .metrics ,
404409 )
0 commit comments