@@ -1115,7 +1115,8 @@ def getSolutions(self, varList: Optional[str | list[str]] = None, resultfile: Op
1115
1115
1116
1116
@staticmethod
1117
1117
def _prepare_input_data (
1118
- raw_input : str | list [str ] | dict [str , Any ],
1118
+ input_args : Any ,
1119
+ input_kwargs : dict [str , Any ],
1119
1120
) -> dict [str , str ]:
1120
1121
"""
1121
1122
Convert raw input to a structured dictionary {'key1': 'value1', 'key2': 'value2'}.
@@ -1133,38 +1134,42 @@ def prepare_str(str_in: str) -> dict[str, str]:
1133
1134
1134
1135
input_data : dict [str , str ] = {}
1135
1136
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
1161
1168
if ' ' in key or ' ' in str_val :
1162
1169
raise ModelicaSystemError (f"Spaces not allowed in key/value pairs: { repr (key )} = { repr (val )} !" )
1163
1170
input_data [key ] = str_val
1164
1171
1165
- return input_data
1166
-
1167
- raise ModelicaSystemError (f"Invalid type of input: { type (raw_input )} " )
1172
+ return input_data
1168
1173
1169
1174
def _set_method_helper (
1170
1175
self ,
@@ -1225,17 +1230,21 @@ def isParameterChangeable(
1225
1230
1226
1231
def setContinuous (
1227
1232
self ,
1228
- cvals : str | list [str ] | dict [str , Any ],
1233
+ * args : Any ,
1234
+ ** kwargs : dict [str , Any ],
1229
1235
) -> bool :
1230
1236
"""
1231
1237
This method is used to set continuous values. It can be called:
1232
1238
with a sequence of continuous name and assigning corresponding values as arguments as show in the example below:
1233
1239
usage
1234
1240
>>> setContinuous("Name=value") # depreciated
1235
1241
>>> 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)
1237
1246
"""
1238
- inputdata = self ._prepare_input_data (raw_input = cvals )
1247
+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
1239
1248
1240
1249
return self ._set_method_helper (
1241
1250
inputdata = inputdata ,
@@ -1245,17 +1254,21 @@ def setContinuous(
1245
1254
1246
1255
def setParameters (
1247
1256
self ,
1248
- pvals : str | list [str ] | dict [str , Any ],
1257
+ * args : Any ,
1258
+ ** kwargs : dict [str , Any ],
1249
1259
) -> bool :
1250
1260
"""
1251
1261
This method is used to set parameter values. It can be called:
1252
1262
with a sequence of parameter name and assigning corresponding value as arguments as show in the example below:
1253
1263
usage
1254
1264
>>> setParameters("Name=value") # depreciated
1255
1265
>>> 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)
1257
1270
"""
1258
- inputdata = self ._prepare_input_data (raw_input = pvals )
1271
+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
1259
1272
1260
1273
return self ._set_method_helper (
1261
1274
inputdata = inputdata ,
@@ -1265,17 +1278,21 @@ def setParameters(
1265
1278
1266
1279
def setSimulationOptions (
1267
1280
self ,
1268
- simOptions : str | list [str ] | dict [str , Any ],
1281
+ * args : Any ,
1282
+ ** kwargs : dict [str , Any ],
1269
1283
) -> bool :
1270
1284
"""
1271
1285
This method is used to set simulation options. It can be called:
1272
1286
with a sequence of simulation options name and assigning corresponding values as arguments as show in the example below:
1273
1287
usage
1274
1288
>>> setSimulationOptions("Name=value") # depreciated
1275
1289
>>> 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)
1277
1294
"""
1278
- inputdata = self ._prepare_input_data (raw_input = simOptions )
1295
+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
1279
1296
1280
1297
return self ._set_method_helper (
1281
1298
inputdata = inputdata ,
@@ -1285,17 +1302,21 @@ def setSimulationOptions(
1285
1302
1286
1303
def setLinearizationOptions (
1287
1304
self ,
1288
- linearizationOptions : str | list [str ] | dict [str , Any ],
1305
+ * args : Any ,
1306
+ ** kwargs : dict [str , Any ],
1289
1307
) -> bool :
1290
1308
"""
1291
1309
This method is used to set linearization options. It can be called:
1292
1310
with a sequence of linearization options name and assigning corresponding value as arguments as show in the example below
1293
1311
usage
1294
1312
>>> setLinearizationOptions("Name=value") # depreciated
1295
1313
>>> 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)
1297
1318
"""
1298
- inputdata = self ._prepare_input_data (raw_input = linearizationOptions )
1319
+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
1299
1320
1300
1321
return self ._set_method_helper (
1301
1322
inputdata = inputdata ,
@@ -1305,17 +1326,21 @@ def setLinearizationOptions(
1305
1326
1306
1327
def setOptimizationOptions (
1307
1328
self ,
1308
- optimizationOptions : str | list [str ] | dict [str , Any ],
1329
+ * args : Any ,
1330
+ ** kwargs : dict [str , Any ],
1309
1331
) -> bool :
1310
1332
"""
1311
1333
This method is used to set optimization options. It can be called:
1312
1334
with a sequence of optimization options name and assigning corresponding values as arguments as show in the example below:
1313
1335
usage
1314
1336
>>> setOptimizationOptions("Name=value") # depreciated
1315
1337
>>> 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)
1317
1342
"""
1318
- inputdata = self ._prepare_input_data (raw_input = optimizationOptions )
1343
+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
1319
1344
1320
1345
return self ._set_method_helper (
1321
1346
inputdata = inputdata ,
@@ -1325,7 +1350,8 @@ def setOptimizationOptions(
1325
1350
1326
1351
def setInputs (
1327
1352
self ,
1328
- name : str | list [str ] | dict [str , Any ],
1353
+ * args : Any ,
1354
+ ** kwargs : dict [str , Any ],
1329
1355
) -> bool :
1330
1356
"""
1331
1357
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(
1335
1361
1336
1362
>>> setInputs("Name=value") # depreciated
1337
1363
>>> 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)
1339
1368
"""
1340
- inputdata = self ._prepare_input_data (raw_input = name )
1369
+ inputdata = self ._prepare_input_data (input_args = args , input_kwargs = kwargs )
1341
1370
1342
1371
for key , val in inputdata .items ():
1343
1372
if key not in self ._inputs :
0 commit comments