Skip to content

Commit 8d82973

Browse files
committed
Update FormulaGenerators to pass custom constructors to engines
This is because the default constructors for specialized quantity types will stop working in a subsequent commit. Signed-off-by: Sahas Subramanian <[email protected]>
1 parent f67039e commit 8d82973

File tree

10 files changed

+23
-15
lines changed

10 files changed

+23
-15
lines changed

src/frequenz/sdk/timeseries/_formula_engine/_formula_generators/_battery_power_formula.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def generate(
4343
in the component graph.
4444
"""
4545
builder = self._get_builder(
46-
"battery-power", ComponentMetricId.ACTIVE_POWER, Power
46+
"battery-power", ComponentMetricId.ACTIVE_POWER, Power.from_watts
4747
)
4848
component_ids = self._config.component_ids
4949
if not component_ids:

src/frequenz/sdk/timeseries/_formula_engine/_formula_generators/_chp_power_formula.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ def generate(self) -> FormulaEngine[Power]:
3838
FormulaGenerationError: If there's no dedicated meter attached to every CHP.
3939
4040
"""
41-
builder = self._get_builder("chp-power", ComponentMetricId.ACTIVE_POWER, Power)
41+
builder = self._get_builder(
42+
"chp-power", ComponentMetricId.ACTIVE_POWER, Power.from_watts
43+
)
4244

4345
chp_meter_ids = self._get_chp_meters()
4446
if not chp_meter_ids:

src/frequenz/sdk/timeseries/_formula_engine/_formula_generators/_consumer_power_formula.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def generate(self) -> FormulaEngine[Power]:
3535
meter.
3636
"""
3737
builder = self._get_builder(
38-
"consumer-power", ComponentMetricId.ACTIVE_POWER, Power
38+
"consumer-power", ComponentMetricId.ACTIVE_POWER, Power.from_watts
3939
)
4040
component_graph = connection_manager.get().component_graph
4141
grid_component = next(

src/frequenz/sdk/timeseries/_formula_engine/_formula_generators/_ev_charger_current_formula.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,21 @@ def generate(self) -> FormulaEngine3Phase[Current]:
3737
# frequency as the other streams. So we subscribe with a non-existing
3838
# component id, just to get a `None` message at the resampling interval.
3939
builder = self._get_builder(
40-
"ev-current", ComponentMetricId.ACTIVE_POWER, Current
40+
"ev-current", ComponentMetricId.ACTIVE_POWER, Current.from_amperes
4141
)
4242
builder.push_component_metric(
4343
NON_EXISTING_COMPONENT_ID, nones_are_zeros=True
4444
)
4545
engine = builder.build()
4646
return FormulaEngine3Phase(
4747
"ev-current",
48-
Current,
48+
Current.from_amperes,
4949
(engine, engine, engine),
5050
)
5151

5252
return FormulaEngine3Phase(
5353
"ev-current",
54-
Current,
54+
Current.from_amperes,
5555
(
5656
(
5757
self._gen_phase_formula(
@@ -76,7 +76,7 @@ def _gen_phase_formula(
7676
component_ids: abc.Set[int],
7777
metric_id: ComponentMetricId,
7878
) -> FormulaEngine[Current]:
79-
builder = self._get_builder("ev-current", metric_id, Current)
79+
builder = self._get_builder("ev-current", metric_id, Current.from_amperes)
8080

8181
# generate a formula that just adds values from all EV Chargers.
8282
for idx, component_id in enumerate(component_ids):

src/frequenz/sdk/timeseries/_formula_engine/_formula_generators/_ev_charger_power_formula.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ def generate(self) -> FormulaEngine[Power]:
2222
Returns:
2323
A formula engine that calculates total EV Charger power values.
2424
"""
25-
builder = self._get_builder("ev-power", ComponentMetricId.ACTIVE_POWER, Power)
25+
builder = self._get_builder(
26+
"ev-power", ComponentMetricId.ACTIVE_POWER, Power.from_watts
27+
)
2628

2729
component_ids = self._config.component_ids
2830
if not component_ids:

src/frequenz/sdk/timeseries/_formula_engine/_formula_generators/_grid_current_formula.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ def generate(self) -> FormulaEngine3Phase[Current]:
4343

4444
return FormulaEngine3Phase(
4545
"grid-current",
46-
Current,
46+
Current.from_amperes,
4747
(
4848
self._gen_phase_formula(
4949
grid_successors, ComponentMetricId.CURRENT_PHASE_1
@@ -62,7 +62,7 @@ def _gen_phase_formula(
6262
grid_successors: Set[Component],
6363
metric_id: ComponentMetricId,
6464
) -> FormulaEngine[Current]:
65-
builder = self._get_builder("grid-current", metric_id, Current)
65+
builder = self._get_builder("grid-current", metric_id, Current.from_amperes)
6666

6767
# generate a formula that just adds values from all components that are
6868
# directly connected to the grid.

src/frequenz/sdk/timeseries/_formula_engine/_formula_generators/_grid_power_formula.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ def generate(
2424
Raises:
2525
ComponentNotFound: when the component graph doesn't have a `GRID` component.
2626
"""
27-
builder = self._get_builder("grid-power", ComponentMetricId.ACTIVE_POWER, Power)
27+
builder = self._get_builder(
28+
"grid-power", ComponentMetricId.ACTIVE_POWER, Power.from_watts
29+
)
2830
component_graph = connection_manager.get().component_graph
2931
grid_component = next(
3032
(

src/frequenz/sdk/timeseries/_formula_engine/_formula_generators/_producer_power_formula.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def generate(self) -> FormulaEngine[Power]:
3636
meter.
3737
"""
3838
builder = self._get_builder(
39-
"producer_power", ComponentMetricId.ACTIVE_POWER, Power
39+
"producer_power", ComponentMetricId.ACTIVE_POWER, Power.from_watts
4040
)
4141
component_graph = connection_manager.get().component_graph
4242
grid_component = next(

src/frequenz/sdk/timeseries/_formula_engine/_formula_generators/_pv_power_formula.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ def generate(self) -> FormulaEngine[Power]:
3434
Raises:
3535
ComponentNotFound: if there are no PV inverters in the component graph.
3636
"""
37-
builder = self._get_builder("pv-power", ComponentMetricId.ACTIVE_POWER, Power)
37+
builder = self._get_builder(
38+
"pv-power", ComponentMetricId.ACTIVE_POWER, Power.from_watts
39+
)
3840

3941
pv_meters = self._get_pv_meters()
4042
if not pv_meters:

tests/timeseries/test_logical_meter.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ async def test_grid_power_1(self, mocker: MockerFixture) -> None:
3434
logical_meter._namespace, # pylint: disable=protected-access
3535
mockgrid.main_meter_id,
3636
ComponentMetricId.ACTIVE_POWER,
37-
Power,
37+
Power.from_watts,
3838
)
3939

4040
results = []
@@ -73,7 +73,7 @@ async def test_grid_power_2(
7373
logical_meter._namespace, # pylint: disable=protected-access
7474
meter_id,
7575
ComponentMetricId.ACTIVE_POWER,
76-
Power,
76+
Power.from_watts,
7777
)
7878
for meter_id in mockgrid.meter_ids
7979
]

0 commit comments

Comments
 (0)