From 79526e4c4b71b7cc6c5523657e569b96d1136195 Mon Sep 17 00:00:00 2001 From: belthlemar Date: Tue, 11 Feb 2025 10:32:32 +0100 Subject: [PATCH] instanciate dataclass correctly --- .../service/local_services/models/settings.py | 80 +++++++++++++++---- 1 file changed, 64 insertions(+), 16 deletions(-) diff --git a/src/antares/craft/service/local_services/models/settings.py b/src/antares/craft/service/local_services/models/settings.py index fb8bbe93..f2b7f4f6 100644 --- a/src/antares/craft/service/local_services/models/settings.py +++ b/src/antares/craft/service/local_services/models/settings.py @@ -91,8 +91,17 @@ def from_user_model(user_class: AdequacyPatchParametersType) -> "AdequacyPatchPa return AdequacyPatchParametersLocal.model_validate(user_dict) def to_user_model(self) -> AdequacyPatchParameters: - local_dict = self.model_dump(mode="json", by_alias=False, exclude={"enable_first_step"}) - return AdequacyPatchParameters(**local_dict) + return AdequacyPatchParameters( + include_adq_patch=self.include_adq_patch, + set_to_null_ntc_from_physical_out_to_physical_in_for_first_step=self.set_to_null_ntc_from_physical_out_to_physical_in_for_first_step, + set_to_null_ntc_between_physical_out_for_first_step=self.set_to_null_ntc_between_physical_out_for_first_step, + price_taking_order=self.price_taking_order, + include_hurdle_cost_csr=self.include_hurdle_cost_csr, + check_csr_cost_function=self.check_csr_cost_function, + threshold_initiate_curtailment_sharing_rule=self.threshold_initiate_curtailment_sharing_rule, + threshold_display_local_matching_rule_violations=self.threshold_display_local_matching_rule_violations, + threshold_csr_variable_bounds_relaxation=self.threshold_csr_variable_bounds_relaxation, + ) AdvancedParametersType = Union[AdvancedParameters, AdvancedParametersUpdate] @@ -160,15 +169,28 @@ def from_user_model( return AdvancedAndSeedParametersLocal.model_validate(local_dict) def to_seed_parameters_model(self) -> SeedParameters: - seed_values = self.seeds.model_dump(mode="json", by_alias=False, include=set(asdict(SeedParameters()).keys())) - return SeedParameters(**seed_values) + return SeedParameters( + seed_tsgen_thermal=self.seeds.seed_tsgen_thermal, + seed_tsnumbers=self.seeds.seed_tsnumbers, + seed_unsupplied_energy_costs=self.seeds.seed_unsupplied_energy_costs, + seed_spilled_energy_costs=self.seeds.seed_spilled_energy_costs, + seed_thermal_costs=self.seeds.seed_thermal_costs, + seed_hydro_costs=self.seeds.seed_hydro_costs, + seed_initial_reservoir_levels=self.seeds.seed_initial_reservoir_levels, + ) def to_advanced_parameters_model(self) -> AdvancedParameters: - includes = set(asdict(AdvancedParameters()).keys()) - advanced_values = self.advanced_parameters.model_dump(mode="json", by_alias=False, include=includes) - other_preferences_values = self.other_preferences.model_dump(mode="json", by_alias=False, include=includes) - merged_values = advanced_values | other_preferences_values - return AdvancedParameters(**merged_values) + return AdvancedParameters( + initial_reservoir_levels=self.other_preferences.initial_reservoir_levels, + hydro_heuristic_policy=self.other_preferences.hydro_heuristic_policy, + hydro_pricing_mode=self.other_preferences.hydro_pricing_mode, + power_fluctuations=self.other_preferences.power_fluctuations, + shedding_policy=self.other_preferences.shedding_policy, + unit_commitment_mode=self.other_preferences.unit_commitment_mode, + number_of_cores_mode=self.other_preferences.number_of_cores_mode, + renewable_generation_modelling=self.other_preferences.renewable_generation_modelling, + accuracy_on_correlation=self.advanced_parameters.accuracy_on_correlation, + ) GeneralParametersType = Union[GeneralParameters, GeneralParametersUpdate] @@ -252,12 +274,25 @@ def get_excluded_fields_for_user_class() -> Set[str]: } def to_user_model(self) -> GeneralParameters: - local_dict = self.general.model_dump( - mode="json", by_alias=False, exclude=self.get_excluded_fields_for_user_class() + return GeneralParameters( + mode=self.general.mode, + horizon=self.general.horizon, + nb_years=self.general.nb_years, + simulation_start=self.general.simulation_start, + simulation_end=self.general.simulation_end, + january_first=self.general.january_first, + first_month_in_year=self.general.first_month_in_year, + first_week_day=self.general.first_week_day, + leap_year=self.general.leap_year, + year_by_year=self.general.year_by_year, + simulation_synthesis=self.output.synthesis, + building_mode=self.general.building_mode, + user_playlist=self.general.user_playlist, + thematic_trimming=self.general.thematic_trimming, + geographic_trimming=self.general.geographic_trimming, + store_new_set=self.output.store_new_set, + nb_timeseries_thermal=self.general.nb_timeseries_thermal, ) - local_dict.update(self.output.model_dump(mode="json", by_alias=False, exclude={"archives"})) - local_dict["simulation_synthesis"] = local_dict.pop("synthesis") - return GeneralParameters(**local_dict) OptimizationParametersType = Union[OptimizationParameters, OptimizationParametersUpdate] @@ -284,5 +319,18 @@ def from_user_model(user_class: OptimizationParametersType) -> "OptimizationPara return OptimizationParametersLocal.model_validate(user_dict) def to_user_model(self) -> OptimizationParameters: - local_dict = self.model_dump(mode="json", by_alias=False) - return OptimizationParameters(**local_dict) + return OptimizationParameters( + simplex_range=self.simplex_range, + transmission_capacities=self.transmission_capacities, + include_constraints=self.include_constraints, + include_hurdlecosts=self.include_hurdlecosts, + include_tc_minstablepower=self.include_tc_minstablepower, + include_tc_min_ud_time=self.include_tc_min_ud_time, + include_dayahead=self.include_dayahead, + include_strategicreserve=self.include_strategicreserve, + include_spinningreserve=self.include_spinningreserve, + include_primaryreserve=self.include_primaryreserve, + include_exportmps=self.include_exportmps, + include_exportstructure=self.include_exportstructure, + include_unfeasible_problem_behavior=self.include_unfeasible_problem_behavior, + )