88from libecalc .common .temporal_model import TemporalModel
99from libecalc .common .time_utils import Period , define_time_model_for_period
1010from libecalc .common .utils .rates import RateType
11+ from libecalc .common .variables import ExpressionEvaluator
1112from libecalc .domain .condition import Condition
1213from libecalc .domain .infrastructure .energy_components .legacy_consumer .consumer_function import ConsumerFunction
1314from libecalc .domain .infrastructure .energy_components .legacy_consumer .consumer_function .compressor_consumer_function import (
@@ -182,9 +183,14 @@ def __init__(
182183 self ._target_period = target_period
183184
184185 def _map_direct (
185- self , model : YamlEnergyUsageModelDirectFuel | YamlEnergyUsageModelDirectElectricity , consumes : ConsumptionType
186+ self ,
187+ model : YamlEnergyUsageModelDirectFuel | YamlEnergyUsageModelDirectElectricity ,
188+ consumes : ConsumptionType ,
189+ expression_evaluator : ExpressionEvaluator ,
186190 ) -> DirectExpressionConsumerFunction :
187- condition = convert_expression (_map_condition (model ))
191+ condition_input = _map_condition (model )
192+ condition = Condition (expression_input = condition_input , expression_evaluator = expression_evaluator )
193+
188194 consumption_rate_type = RateType ((model .consumption_rate_type or ConsumptionRateType .STREAM_DAY ).value )
189195 power_loss_factor = convert_expression (model .power_loss_factor )
190196 if isinstance (model , YamlEnergyUsageModelDirectFuel ):
@@ -193,7 +199,7 @@ def _map_direct(
193199 return DirectExpressionConsumerFunction (
194200 energy_usage_type = EnergyUsageType .FUEL ,
195201 fuel_rate = convert_expression (model .fuel_rate ), # type: ignore[arg-type]
196- condition = condition , # type: ignore[arg-type]
202+ condition = condition ,
197203 power_loss_factor = power_loss_factor , # type: ignore[arg-type]
198204 consumption_rate_type = consumption_rate_type ,
199205 )
@@ -206,12 +212,17 @@ def _map_direct(
206212 return DirectExpressionConsumerFunction (
207213 energy_usage_type = EnergyUsageType .POWER ,
208214 load = convert_expression (model .load ), # type: ignore[arg-type]
209- condition = condition , # type: ignore[arg-type]
215+ condition = condition ,
210216 power_loss_factor = power_loss_factor , # type: ignore[arg-type]
211217 consumption_rate_type = consumption_rate_type ,
212218 )
213219
214- def _map_tabular (self , model : YamlEnergyUsageModelTabulated , consumes : ConsumptionType ) -> TabularConsumerFunction :
220+ def _map_tabular (
221+ self ,
222+ model : YamlEnergyUsageModelTabulated ,
223+ consumes : ConsumptionType ,
224+ expression_evaluator : ExpressionEvaluator ,
225+ ) -> TabularConsumerFunction :
215226 energy_model = self .__references .get_tabulated_model (model .energy_function )
216227 energy_usage_type = energy_model .get_energy_usage_type ()
217228 energy_usage_type_as_consumption_type = (
@@ -222,7 +233,7 @@ def _map_tabular(self, model: YamlEnergyUsageModelTabulated, consumes: Consumpti
222233 raise InvalidConsumptionType (actual = energy_usage_type_as_consumption_type , expected = consumes )
223234
224235 condition_input = _map_condition (model )
225- condition = Condition (expression_input = condition_input )
236+ condition = Condition (expression_input = condition_input , expression_evaluator = expression_evaluator )
226237
227238 power_loss_factor = convert_expression (model .power_loss_factor )
228239
@@ -503,14 +514,17 @@ def from_yaml_to_dto(
503514 self ,
504515 data : YamlTemporalModel [YamlFuelEnergyUsageModel ] | YamlTemporalModel [YamlElectricityEnergyUsageModel ],
505516 consumes : ConsumptionType ,
517+ expression_evaluator : ExpressionEvaluator ,
506518 ) -> TemporalModel [ConsumerFunction ]:
507519 time_adjusted_model = define_time_model_for_period (data , target_period = self ._target_period )
508520
509521 temporal_dict : dict [Period , ConsumerFunction ] = {}
510522 for period , model in time_adjusted_model .items ():
511523 try :
512524 if isinstance (model , YamlEnergyUsageModelDirectElectricity | YamlEnergyUsageModelDirectFuel ):
513- mapped_model = self ._map_direct (model = model , consumes = consumes )
525+ mapped_model = self ._map_direct (
526+ model = model , consumes = consumes , expression_evaluator = expression_evaluator
527+ )
514528 elif isinstance (model , YamlEnergyUsageModelCompressor ):
515529 mapped_model = self ._map_compressor (model , consumes = consumes )
516530 elif isinstance (model , YamlEnergyUsageModelPump ):
@@ -520,7 +534,9 @@ def from_yaml_to_dto(
520534 elif isinstance (model , YamlEnergyUsageModelPumpSystem ):
521535 mapped_model = self ._map_pump_system (model , consumes = consumes )
522536 elif isinstance (model , YamlEnergyUsageModelTabulated ):
523- mapped_model = self ._map_tabular (model = model , consumes = consumes )
537+ mapped_model = self ._map_tabular (
538+ model = model , consumes = consumes , expression_evaluator = expression_evaluator
539+ )
524540 elif isinstance (model , YamlEnergyUsageModelCompressorTrainMultipleStreams ):
525541 mapped_model = self ._map_multiple_streams_compressor (model , consumes = consumes )
526542 else :
0 commit comments