Skip to content

Commit ada0e14

Browse files
authored
Merge pull request #2902 from vvbandeira/gen-rule-arg
util: genRuleFile gets reference metrics from args
2 parents 8a4c87e + 8a1e508 commit ada0e14

File tree

2 files changed

+29
-20
lines changed

2 files changed

+29
-20
lines changed

flow/util/genRuleFile.py

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@
1010
import 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
)

flow/util/utils.mk

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ update_metadata:
2828

2929
.PHONY: update_rules
3030
update_rules:
31-
$(UTILS_DIR)/genRuleFile.py $(DESIGN_DIR) --variant $(FLOW_VARIANT) --failing --tighten
31+
$(UTILS_DIR)/genRuleFile.py $(DESIGN_DIR) \
32+
--reference $(REPORTS_DIR)/metadata-$(FLOW_VARIANT).json \
33+
--variant $(FLOW_VARIANT) \
34+
--failing \
35+
--tighten
3236

3337
.PHONY: update_rules_force
3438
update_rules_force:

0 commit comments

Comments
 (0)