Skip to content

Commit 7f61271

Browse files
committed
Do defaults, mapping and args squentially for all measures in a group
1 parent a4227b6 commit 7f61271

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

buildstockbatch/workflow_generator/residential/residential_hpxml.py

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,25 @@ def create_osw(self, sim_id, building_id, upgrade_idx):
126126
steps = []
127127
measure_args = {}
128128
debug = workflow_args.get("debug", False)
129+
130+
# start with defaults
131+
for workflow_key, measure_name in workflow_key_to_measure_names.items():
132+
measure_args[measure_name] = self.default_args.get(measure_name, {}).copy()
133+
134+
# update with mapped args
135+
for workflow_key, measure_name in workflow_key_to_measure_names.items():
136+
measure_args[measure_name].update(self._get_mapped_args(workflow_args, measure_name))
137+
138+
# update with workflow block args
139+
for workflow_key, measure_name in workflow_key_to_measure_names.items():
140+
measure_args[measure_name].update(workflow_args.get(workflow_key, {}).copy())
141+
142+
# Verify the arguments and add to steps
129143
for workflow_key, measure_name in workflow_key_to_measure_names.items():
130-
measure_args[measure_name] = self._get_measure_args(workflow_args, workflow_key, measure_name, debug)
144+
xml_args = self.get_measure_arguments_from_xml(self.buildstock_dir, measure_name)
145+
self._validate_against_xml_args(measure_args[measure_name], measure_name, xml_args)
146+
if "debug" in xml_args:
147+
measure_args[measure_name]["debug"] = debug
131148
steps.append(
132149
{
133150
"measure_dir_name": measure_name,
@@ -194,33 +211,20 @@ def add_upgrade_step_to_osw(self, upgrade_idx, osw):
194211
)
195212
osw["steps"].insert(1, apply_upgrade_measure) # right after BuildExistingModel
196213

197-
def _get_measure_args(self, workflow_args, workflow_key, measure_dir_name, debug):
214+
def _validate_against_xml_args(self, measure_args, measure_dir_name, xml_args):
198215
"""
199-
Get the arguments to the measure from the workflow_args and defaults. The arguments are filtered based
200-
on the measure's measure.xml file. If an argument is not found in the measure.xml file, it is not
201-
passed to the measure and a warning is logged.
216+
Check if the arguments in the measure_args are valid for the measure_dir_name
217+
based on the measure.xml file in the measure directory.
218+
Optionally add the debug argument if it is present in the measure.xml file.
202219
"""
203220
xml_args = self.get_measure_arguments_from_xml(self.buildstock_dir, measure_dir_name)
204-
measure_args = {}
205-
206-
default_args = self.default_args.get(measure_dir_name, {}).copy()
207-
mapped_args = self._get_mapped_args(workflow_args, measure_dir_name)
208-
workflow_block_args = workflow_args.get(workflow_key, {}).copy()
209-
210-
for update_dict in [default_args, mapped_args, workflow_block_args]:
211-
measure_args.update(update_dict)
212-
213221
for key in list(measure_args.keys()):
214222
if key not in xml_args:
215-
location = "workflow_generator" if key in workflow_block_args else "defaults"
216223
logger.warning(
217-
f"'{key}' in {location} not found in '{measure_dir_name}'. This key will not be passed"
224+
f"'{key}' not found in '{measure_dir_name}'. This key will not be passed"
218225
" to the measure. This warning is expected if you are using older version of ResStock."
219226
)
220227
del measure_args[key]
221-
if "debug" in xml_args:
222-
measure_args["debug"] = debug
223-
return measure_args
224228

225229
def _get_mapped_args(
226230
self,

0 commit comments

Comments
 (0)