diff --git a/src/antares/craft/model/binding_constraint.py b/src/antares/craft/model/binding_constraint.py index 667415f0..750c19c0 100644 --- a/src/antares/craft/model/binding_constraint.py +++ b/src/antares/craft/model/binding_constraint.py @@ -11,7 +11,7 @@ # This file is part of the Antares project. from enum import Enum -from typing import Any, Dict, List, Optional, Union +from typing import Any, Dict, List, Optional import pandas as pd @@ -72,7 +72,7 @@ class ClusterData(BaseModel): class ConstraintTerm(TermOperators): - data: Union[LinkData, ClusterData] + data: LinkData | ClusterData id: str = Field(init=False) @model_validator(mode="before") @@ -81,7 +81,7 @@ def fill_id(cls, v: Dict[str, Any]) -> Dict[str, Any]: return v @classmethod - def generate_id(cls, data: Union[Dict[str, str], LinkData, ClusterData]) -> str: + def generate_id(cls, data: Dict[str, str] | LinkData | ClusterData) -> str: if isinstance(data, dict): if "area1" in data: return "%".join(sorted((data["area1"].lower(), data["area2"].lower()))) diff --git a/src/antares/craft/model/output.py b/src/antares/craft/model/output.py index 2046daf8..42254f1d 100644 --- a/src/antares/craft/model/output.py +++ b/src/antares/craft/model/output.py @@ -10,7 +10,7 @@ # # This file is part of the Antares project. from enum import Enum -from typing import Optional, Union +from typing import Optional import pandas as pd @@ -60,7 +60,7 @@ class AggregationEntry(BaseModel): columns_names: names or regexes (if query_file is of type details) to select columns """ - query_file: Union[MCAllAreas, MCIndAreas, MCAllLinks, MCIndLinks] + query_file: MCAllAreas | MCIndAreas | MCAllLinks | MCIndLinks frequency: Frequency mc_years: Optional[list[str]] = None type_ids: Optional[list[str]] = None diff --git a/src/antares/craft/model/settings/optimization.py b/src/antares/craft/model/settings/optimization.py index 8154786f..f53d6e62 100644 --- a/src/antares/craft/model/settings/optimization.py +++ b/src/antares/craft/model/settings/optimization.py @@ -11,7 +11,6 @@ # This file is part of the Antares project. from enum import Enum -from typing import Union from antares.craft.tools.all_optional_meta import all_optional_model from pydantic import BaseModel, ConfigDict, Field @@ -57,8 +56,8 @@ class DefaultOptimizationParameters(BaseModel, alias_generator=to_camel): simplex_optimization_range: SimplexOptimizationRange = Field( default=SimplexOptimizationRange.WEEK, validate_default=True ) - transmission_capacities: Union[bool, Union[LegacyTransmissionCapacities, OptimizationTransmissionCapacities]] = ( - Field(default=OptimizationTransmissionCapacities.LOCAL_VALUES, validate_default=True) + transmission_capacities: bool | LegacyTransmissionCapacities | OptimizationTransmissionCapacities = Field( + default=OptimizationTransmissionCapacities.LOCAL_VALUES, validate_default=True ) binding_constraints: bool = True hurdle_costs: bool = True diff --git a/src/antares/craft/model/study.py b/src/antares/craft/model/study.py index 8eb7ce03..3881d6bd 100644 --- a/src/antares/craft/model/study.py +++ b/src/antares/craft/model/study.py @@ -16,7 +16,7 @@ from pathlib import Path, PurePath from types import MappingProxyType -from typing import List, Optional, Union +from typing import List, Optional import pandas as pd @@ -262,7 +262,7 @@ def __init__( name: str, version: str, service_factory: ServiceFactory, - settings: Union[StudySettings, StudySettingsLocal, None] = None, + settings: StudySettings | StudySettingsLocal | None = None, path: PurePath = PurePath("."), ): self.name = name diff --git a/src/antares/craft/service/api_services/area_api.py b/src/antares/craft/service/api_services/area_api.py index fedf885e..cbc9d6ca 100644 --- a/src/antares/craft/service/api_services/area_api.py +++ b/src/antares/craft/service/api_services/area_api.py @@ -10,7 +10,7 @@ # # This file is part of the Antares project. -from typing import Dict, List, Optional, Union +from typing import Dict, List, Optional import pandas as pd @@ -272,7 +272,7 @@ def _create_thermal_series( self._replace_matrix_request(json_payload) - def _replace_matrix_request(self, json_payload: Union[Dict, List[Dict]]) -> None: + def _replace_matrix_request(self, json_payload: dict | List[dict]) -> None: """ Send a POST request with the given JSON payload to commands endpoint. diff --git a/src/antares/craft/service/local_services/area_local.py b/src/antares/craft/service/local_services/area_local.py index 9cd0ceab..b543c727 100644 --- a/src/antares/craft/service/local_services/area_local.py +++ b/src/antares/craft/service/local_services/area_local.py @@ -379,16 +379,13 @@ def read_areas(self) -> List[Area]: self.config.study_path, InitializationFilesTypes.AREA_UI_INI, area_id=element.name ).ini_dict thermal_area_dict = IniFile(self.config.study_path, InitializationFilesTypes.THERMAL_AREAS_INI).ini_dict + nodal_optimization = optimization_dict["nodal optimization"] area_properties = AreaPropertiesLocal( - non_dispatch_power=optimization_dict["nodal optimization"].get("non-dispatchable-power"), - dispatch_hydro_power=optimization_dict["nodal optimization"].get("dispatchable-hydro-power"), - other_dispatch_power=optimization_dict["nodal optimization"].get("other-dispatchable-power"), - spread_unsupplied_energy_cost=optimization_dict["nodal optimization"].get( - "spread-unsupplied-energy-cost" - ), - spread_spilled_energy_cost=optimization_dict["nodal optimization"].get( - "spread-spilled-energy-cost" - ), + non_dispatch_power=nodal_optimization.get("non-dispatchable-power"), + dispatch_hydro_power=nodal_optimization.get("dispatchable-hydro-power"), + other_dispatch_power=nodal_optimization.get("other-dispatchable-power"), + spread_unsupplied_energy_cost=nodal_optimization.get("spread-unsupplied-energy-cost"), + spread_spilled_energy_cost=nodal_optimization.get("spread-spilled-energy-cost"), energy_cost_unsupplied=thermal_area_dict["unserverdenergycost"].get(element.name), energy_cost_spilled=thermal_area_dict["spilledenergycost"].get(element.name), filter_synthesis=set(optimization_dict["filtering"].get("filter-synthesis").split(", ")), diff --git a/src/antares/craft/service/local_services/renewable_local.py b/src/antares/craft/service/local_services/renewable_local.py index 50c94b5b..824f6e86 100644 --- a/src/antares/craft/service/local_services/renewable_local.py +++ b/src/antares/craft/service/local_services/renewable_local.py @@ -65,4 +65,4 @@ def read_renewables(self, area_id: str) -> List[RenewableCluster]: return renewables_clusters def update_renewable_matrix(self, renewable_cluster: RenewableCluster, matrix: pd.DataFrame) -> None: - pass + raise NotImplementedError diff --git a/src/antares/craft/tools/ini_tool.py b/src/antares/craft/tools/ini_tool.py index 417e668c..d780eacf 100644 --- a/src/antares/craft/tools/ini_tool.py +++ b/src/antares/craft/tools/ini_tool.py @@ -12,7 +12,7 @@ from configparser import DuplicateSectionError from enum import Enum from pathlib import Path -from typing import Any, Iterable, Optional, Union +from typing import Any, Iterable, Optional from antares.craft.tools.custom_raw_config_parser import CustomRawConfigParser from antares.craft.tools.model_tools import filter_out_empty_model_fields @@ -75,7 +75,7 @@ def __init__( ini_file_type: InitializationFilesTypes, area_id: Optional[str] = None, cluster_id: Optional[str] = None, - ini_contents: Union[CustomRawConfigParser, dict[str, dict[str, str]], None] = None, + ini_contents: CustomRawConfigParser | dict[str, dict[str, str]] | None = None, ) -> None: if "{area_id}" in ini_file_type.value and not area_id: raise ValueError(f"Area name not provided, ini type {ini_file_type.name} requires 'area_id'")