Source code for kappa_sdk.user_tasks.simulation.parameters_dictionary

from uuid import UUID
from datetime import datetime
import yaml
from typing import Dict, Optional, Union, ItemsView, Any
from .._parameters_group_enum import ParametersGroupEnum
from .._parameter import Parameter
from ..parameters_dictionary import ParametersDictionary


[docs] class ParametersDictionarySimulation(ParametersDictionary): def __init__(self, yaml_definition: str, parameter_group_type: ParametersGroupEnum = ParametersGroupEnum.input): self.__supported_data_types = { 'boolean': bool, 'dataset': UUID, 'datetime': datetime, 'double': float, 'int': int, 'string': str, 'enum': str, 'file': UUID, 'wellproperty': str, 'wellpropertycontainer': str, 'pvt': str, 'filefolder': str} self.__parameters_dictionary: Dict[str, Parameter] = dict() yaml_parameters = yaml.load(yaml_definition, Loader=yaml.FullLoader) if yaml_parameters is None: return try: yaml_parameters_group = yaml_parameters[parameter_group_type.value] except KeyError: return if yaml_parameters_group is None: return for yaml_parameter in yaml_parameters_group: data_type = self.__supported_data_types[yaml_parameters_group[yaml_parameter]['type'].lower()] value = yaml_parameters_group[yaml_parameter].get('currentValue', None) self.__parameters_dictionary[str(yaml_parameter).lower()] = Parameter(data_type, value) def __getitem__(self, parameter_name: str) -> Optional[Union[bool, UUID, datetime, float, int, str]]: r"""Gets the value of the user task parameter identified by its name. Parameters ---------- parameter_name : str The name of the user task parameter. """ if parameter_name.lower() not in self.__parameters_dictionary: raise KeyError('Parameter "{}" is not defined'.format(parameter_name)) return self.__parameters_dictionary[parameter_name.lower()].value def __setitem__(self, parameter_name: str, value: Optional[Union[bool, UUID, datetime, float, int, str]]) -> None: r"""Sets the value of the user task parameter identified by its name. Parameters ---------- parameter_name : str The name of the user task parameter. """ if parameter_name.lower() not in self.__parameters_dictionary: raise KeyError('Parameter "{}" is not defined'.format(parameter_name)) self.__parameters_dictionary[parameter_name.lower()].value = value def items(self) -> ItemsView[str, Any]: """ Access to the class like a real dictionnary Returns ------- key, values of the class """ return self.__parameters_dictionary.items() def add_parameter(self, parameter_name: str, data_type_name: str, value: Optional[Union[bool, UUID, datetime, float, int, str]] = None) -> None: r"""Adds a new parameter to the dictionary. Parameters ---------- parameter_name : str The name of the parameter to add. data_type_name : str The type of the parameter (e.g., 'file', 'string', 'double', etc.) value : Optional The initial value for the parameter (default is None). Raises ------ ValueError If the specified data_type_name is not supported. """ if data_type_name.lower() not in self.__supported_data_types: raise ValueError(f"Data type '{data_type_name}' is not supported. Supported types are: {', '.join(self.__supported_data_types.keys())}") data_type = self.__supported_data_types[data_type_name.lower()] self.__parameters_dictionary[parameter_name.lower()] = Parameter(data_type, value)