@@ -1115,7 +1115,8 @@ def getSolutions(self, varList: Optional[str | list[str]] = None, resultfile: Op
11151115
11161116 @staticmethod
11171117 def _prepare_input_data (
1118- raw_input : str | list [str ] | dict [str , Any ],
1118+ input_args : Any ,
1119+ input_kwargs : dict [str , Any ],
11191120 ) -> dict [str , str ]:
11201121 """
11211122 Convert raw input to a structured dictionary {'key1': 'value1', 'key2': 'value2'}.
@@ -1133,38 +1134,42 @@ def prepare_str(str_in: str) -> dict[str, str]:
11331134
11341135 input_data : dict [str , str ] = {}
11351136
1136- if isinstance (raw_input , str ):
1137- warnings .warn (message = "The definition of values to set should use a dictionary, "
1138- "i.e. {'key1': 'val1', 'key2': 'val2', ...}. Please convert all cases which "
1139- "use a string ('key=val') or list ['key1=val1', 'key2=val2', ...]" ,
1140- category = DeprecationWarning ,
1141- stacklevel = 3 )
1142- return prepare_str (raw_input )
1143-
1144- if isinstance (raw_input , list ):
1145- warnings .warn (message = "The definition of values to set should use a dictionary, "
1146- "i.e. {'key1': 'val1', 'key2': 'val2', ...}. Please convert all cases which "
1147- "use a string ('key=val') or list ['key1=val1', 'key2=val2', ...]" ,
1148- category = DeprecationWarning ,
1149- stacklevel = 3 )
1150-
1151- for item in raw_input :
1152- input_data |= prepare_str (item )
1153-
1154- return input_data
1155-
1156- if isinstance (raw_input , dict ):
1157- for key , val in raw_input .items ():
1158- # convert all values to strings to align it on one type: dict[str, str]
1159- # spaces have to be removed as setInput() could take list of tuples as input and spaces would
1160- str_val = str (val ).replace (' ' , '' )
1137+ for input_arg in input_args :
1138+ if isinstance (input_arg , str ):
1139+ warnings .warn (message = "The definition of values to set should use a dictionary, "
1140+ "i.e. {'key1': 'val1', 'key2': 'val2', ...}. Please convert all cases which "
1141+ "use a string ('key=val') or list ['key1=val1', 'key2=val2', ...]" ,
1142+ category = DeprecationWarning ,
1143+ stacklevel = 3 )
1144+ input_data = input_data | prepare_str (input_arg )
1145+ elif isinstance (input_arg , list ):
1146+ warnings .warn (message = "The definition of values to set should use a dictionary, "
1147+ "i.e. {'key1': 'val1', 'key2': 'val2', ...}. Please convert all cases which "
1148+ "use a string ('key=val') or list ['key1=val1', 'key2=val2', ...]" ,
1149+ category = DeprecationWarning ,
1150+ stacklevel = 3 )
1151+
1152+ for item in input_arg :
1153+ if not isinstance (item , str ):
1154+ raise ModelicaSystemError (f"Invalid input data type for set*() function: { type (item )} !" )
1155+ input_data = input_data | prepare_str (item )
1156+ else :
1157+ raise ModelicaSystemError (f"Invalid input data type for set*() function: { type (input_arg )} !" )
1158+
1159+ if len (input_kwargs ):
1160+ for key , val in input_kwargs .items ():
1161+ # ensure all values are strings to align it on one type: dict[str, str]
1162+ if not isinstance (val , str ):
1163+ # spaces have to be removed as setInput() could take list of tuples as input and spaces would
1164+ # result in an error on recreating the input data
1165+ str_val = str (val ).replace (' ' , '' )
1166+ else :
1167+ str_val = val
11611168 if ' ' in key or ' ' in str_val :
11621169 raise ModelicaSystemError (f"Spaces not allowed in key/value pairs: { repr (key )} = { repr (val )} !" )
11631170 input_data [key ] = str_val
11641171
1165- return input_data
1166-
1167- raise ModelicaSystemError (f"Invalid type of input: { type (raw_input )} " )
1172+ return input_data
11681173
11691174 def _set_method_helper (
11701175 self ,
@@ -1225,17 +1230,21 @@ def isParameterChangeable(
12251230
12261231 def setContinuous (
12271232 self ,
1228- cvals : str | list [str ] | dict [str , Any ],
1233+ * args : Any ,
1234+ ** kwargs : dict [str , Any ],
12291235 ) -> bool :
12301236 """
12311237 This method is used to set continuous values. It can be called:
12321238 with a sequence of continuous name and assigning corresponding values as arguments as show in the example below:
12331239 usage
12341240 >>> setContinuous("Name=value") # depreciated
12351241 >>> setContinuous(["Name1=value1","Name2=value2"]) # depreciated
1236- >>> setContinuous(cvals={"Name1": "value1", "Name2": "value2"})
1242+
1243+ >>> setContinuous(Name1="value1", Name2="value2")
1244+ >>> param = {"Name1": "value1", "Name2": "value2"}
1245+ >>> setContinuous(**param)
12371246 """
1238- inputdata = self ._prepare_input_data (raw_input = cvals )
1247+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
12391248
12401249 return self ._set_method_helper (
12411250 inputdata = inputdata ,
@@ -1245,17 +1254,21 @@ def setContinuous(
12451254
12461255 def setParameters (
12471256 self ,
1248- pvals : str | list [str ] | dict [str , Any ],
1257+ * args : Any ,
1258+ ** kwargs : dict [str , Any ],
12491259 ) -> bool :
12501260 """
12511261 This method is used to set parameter values. It can be called:
12521262 with a sequence of parameter name and assigning corresponding value as arguments as show in the example below:
12531263 usage
12541264 >>> setParameters("Name=value") # depreciated
12551265 >>> setParameters(["Name1=value1","Name2=value2"]) # depreciated
1256- >>> setParameters(pvals={"Name1": "value1", "Name2": "value2"})
1266+
1267+ >>> setParameters(Name1="value1", Name2="value2")
1268+ >>> param = {"Name1": "value1", "Name2": "value2"}
1269+ >>> setParameters(**param)
12571270 """
1258- inputdata = self ._prepare_input_data (raw_input = pvals )
1271+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
12591272
12601273 return self ._set_method_helper (
12611274 inputdata = inputdata ,
@@ -1265,17 +1278,21 @@ def setParameters(
12651278
12661279 def setSimulationOptions (
12671280 self ,
1268- simOptions : str | list [str ] | dict [str , Any ],
1281+ * args : Any ,
1282+ ** kwargs : dict [str , Any ],
12691283 ) -> bool :
12701284 """
12711285 This method is used to set simulation options. It can be called:
12721286 with a sequence of simulation options name and assigning corresponding values as arguments as show in the example below:
12731287 usage
12741288 >>> setSimulationOptions("Name=value") # depreciated
12751289 >>> setSimulationOptions(["Name1=value1","Name2=value2"]) # depreciated
1276- >>> setSimulationOptions(simOptions={"Name1": "value1", "Name2": "value2"})
1290+
1291+ >>> setSimulationOptions(Name1="value1", Name2="value2")
1292+ >>> param = {"Name1": "value1", "Name2": "value2"}
1293+ >>> setSimulationOptions(**param)
12771294 """
1278- inputdata = self ._prepare_input_data (raw_input = simOptions )
1295+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
12791296
12801297 return self ._set_method_helper (
12811298 inputdata = inputdata ,
@@ -1285,17 +1302,21 @@ def setSimulationOptions(
12851302
12861303 def setLinearizationOptions (
12871304 self ,
1288- linearizationOptions : str | list [str ] | dict [str , Any ],
1305+ * args : Any ,
1306+ ** kwargs : dict [str , Any ],
12891307 ) -> bool :
12901308 """
12911309 This method is used to set linearization options. It can be called:
12921310 with a sequence of linearization options name and assigning corresponding value as arguments as show in the example below
12931311 usage
12941312 >>> setLinearizationOptions("Name=value") # depreciated
12951313 >>> setLinearizationOptions(["Name1=value1","Name2=value2"]) # depreciated
1296- >>> setLinearizationOptions(linearizationOtions={"Name1": "value1", "Name2": "value2"})
1314+
1315+ >>> setLinearizationOptions(Name1="value1", Name2="value2")
1316+ >>> param = {"Name1": "value1", "Name2": "value2"}
1317+ >>> setLinearizationOptions(**param)
12971318 """
1298- inputdata = self ._prepare_input_data (raw_input = linearizationOptions )
1319+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
12991320
13001321 return self ._set_method_helper (
13011322 inputdata = inputdata ,
@@ -1305,17 +1326,21 @@ def setLinearizationOptions(
13051326
13061327 def setOptimizationOptions (
13071328 self ,
1308- optimizationOptions : str | list [str ] | dict [str , Any ],
1329+ * args : Any ,
1330+ ** kwargs : dict [str , Any ],
13091331 ) -> bool :
13101332 """
13111333 This method is used to set optimization options. It can be called:
13121334 with a sequence of optimization options name and assigning corresponding values as arguments as show in the example below:
13131335 usage
13141336 >>> setOptimizationOptions("Name=value") # depreciated
13151337 >>> setOptimizationOptions(["Name1=value1","Name2=value2"]) # depreciated
1316- >>> setOptimizationOptions(optimizationOptions={"Name1": "value1", "Name2": "value2"})
1338+
1339+ >>> setOptimizationOptions(Name1="value1", Name2="value2")
1340+ >>> param = {"Name1": "value1", "Name2": "value2"}
1341+ >>> setOptimizationOptions(**param)
13171342 """
1318- inputdata = self ._prepare_input_data (raw_input = optimizationOptions )
1343+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
13191344
13201345 return self ._set_method_helper (
13211346 inputdata = inputdata ,
@@ -1325,7 +1350,8 @@ def setOptimizationOptions(
13251350
13261351 def setInputs (
13271352 self ,
1328- name : str | list [str ] | dict [str , Any ],
1353+ * args : Any ,
1354+ ** kwargs : dict [str , Any ],
13291355 ) -> bool :
13301356 """
13311357 This method is used to set input values. It can be called with a sequence of input name and assigning
@@ -1335,9 +1361,12 @@ def setInputs(
13351361
13361362 >>> setInputs("Name=value") # depreciated
13371363 >>> setInputs(["Name1=value1","Name2=value2"]) # depreciated
1338- >>> setInputs(name={"Name1": "value1", "Name2": "value2"})
1364+
1365+ >>> setInputs(Name1="value1", Name2="value2")
1366+ >>> param = {"Name1": "value1", "Name2": "value2"}
1367+ >>> setInputs(**param)
13391368 """
1340- inputdata = self ._prepare_input_data (raw_input = name )
1369+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
13411370
13421371 for key , val in inputdata .items ():
13431372 if key not in self ._inputs :
0 commit comments