Skip to content

Commit

Permalink
instanciate dataclass correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
MartinBelthle committed Feb 11, 2025
1 parent d31a9eb commit 79526e4
Showing 1 changed file with 64 additions and 16 deletions.
80 changes: 64 additions & 16 deletions src/antares/craft/service/local_services/models/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -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]
Expand All @@ -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,
)

0 comments on commit 79526e4

Please sign in to comment.