Skip to content

Commit 9962fe3

Browse files
committed
feat[DEI-263]: add multi-year parameters to parser
1 parent bf65145 commit 9962fe3

5 files changed

Lines changed: 29 additions & 1 deletion

File tree

decoimpact/business/entities/rules/time_aggregation_rule.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,21 @@ def multi_year_start(self) -> Optional[int]:
5858
"""Start year for the aggregation (inclusive)"""
5959
return self._multi_year_start
6060

61+
@multi_year_start.setter
62+
def multi_year_start(self, value: Optional[int]) -> None:
63+
# optional validation here
64+
self._multi_year_start = value
65+
6166
@property
6267
def multi_year_end(self) -> Optional[int]:
6368
"""End year for the aggregation (inclusive)"""
6469
return self._multi_year_end
6570

71+
@multi_year_end.setter
72+
def multi_year_end(self, value: Optional[int]) -> None:
73+
# optional validation here
74+
self._multi_year_end = value
75+
6676
def validate(self, logger: ILogger) -> bool:
6777
"""Validates if the rule is valid
6878

decoimpact/business/workflow/model_builder.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,8 @@ def _create_rule(rule_data: IRuleData) -> IRule:
147147
)
148148
rule.settings.percentile_value = rule_data.percentile_value
149149
rule.settings.time_scale = rule_data.time_scale
150+
rule.multi_year_start = rule_data.multi_year_start
151+
rule.multi_year_end = rule_data.multi_year_end
150152
elif isinstance(rule_data, IRollingStatisticsRuleData):
151153
rule = RollingStatisticsRule(
152154
rule_data.name, [rule_data.input_variable], rule_data.operation
@@ -159,7 +161,7 @@ def _create_rule(rule_data: IRuleData) -> IRule:
159161
rule_data.name,
160162
rule_data.input_variable_names,
161163
MultiArrayOperationType[rule_data.operation_type],
162-
rule_data.ignore_nan
164+
rule_data.ignore_nan,
163165
)
164166
elif isinstance(rule_data, IResponseCurveRuleData):
165167
rule = ResponseCurveRule(

decoimpact/data/entities/time_aggregation_rule_data.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,17 @@ def multi_year_start(self) -> Optional[int]:
4747
"""Start year for aggregation"""
4848
return self._multi_year_start
4949

50+
@multi_year_start.setter
51+
def multi_year_start(self, value: Optional[int]) -> None:
52+
# optional validation here
53+
self._multi_year_start = value
54+
5055
@property
5156
def multi_year_end(self) -> Optional[int]:
5257
"""End year for aggregation"""
5358
return self._multi_year_end
59+
60+
@multi_year_end.setter
61+
def multi_year_end(self, value: Optional[int]) -> None:
62+
# optional validation here
63+
self._multi_year_end = value

decoimpact/data/parsers/parser_time_aggregation_rule.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ def parse_dict(self, dictionary: Dict[str, Any], logger: ILogger) -> IRuleData:
4242
input_variable_name: str = get_dict_element("input_variable", dictionary)
4343
operation: str = get_dict_element("operation", dictionary)
4444
time_scale: str = get_dict_element("time_scale", dictionary)
45+
multi_year_start: int = get_dict_element("multi_year_start", dictionary, False)
46+
multi_year_end: int = get_dict_element("multi_year_end", dictionary, False)
4547
output_variable_name: str = get_dict_element("output_variable", dictionary)
4648

4749
operation_value, percentile_value = parse_operation_values(operation)
@@ -50,6 +52,8 @@ def parse_dict(self, dictionary: Dict[str, Any], logger: ILogger) -> IRuleData:
5052

5153
rule_data.percentile_value = percentile_value
5254
rule_data.time_scale = time_scale
55+
rule_data.multi_year_start = multi_year_start
56+
rule_data.multi_year_end = multi_year_end
5357
rule_data.output_variable = output_variable_name
5458
rule_data.description = description
5559

template_input.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ rules:
2929
time_scale:
3030
input_variable:
3131
output_variable:
32+
multi_year_start:
33+
multi_year_end:
3234

3335
- step_function_rule:
3436
name:

0 commit comments

Comments
 (0)