@@ -128,7 +128,8 @@ def __init__(self, runpath: pathlib.Path, modelname: str, timeout: Optional[int]
128128 self ._runpath = pathlib .Path (runpath ).resolve ().absolute ()
129129 self ._modelname = modelname
130130 self ._timeout = timeout
131- self ._args = {}
131+ self ._args : dict [str , str | None ] = {}
132+ self ._arg_override : dict [str , str ] = {}
132133
133134 def arg_set (self , key : str , val : Optional [str | dict ] = None ) -> None :
134135 """
@@ -149,12 +150,13 @@ def arg_set(self, key: str, val: Optional[str | dict] = None) -> None:
149150 elif isinstance (val , numbers .Number ):
150151 argval = str (val )
151152 elif key == 'override' and isinstance (val , dict ):
152- argval = self ._args ['override' ] if 'override' in self ._args else {}
153- for overwrite_key in val :
154- if not isinstance (overwrite_key , str ) or not isinstance (val [overwrite_key ], (str , numbers .Number )):
153+ for okey in val :
154+ if not isinstance (okey , str ) or not isinstance (val [okey ], (str , numbers .Number )):
155155 raise ModelicaSystemError ("Invalid argument for 'override': "
156- f"{ repr (overwrite_key )} = { repr (val [overwrite_key ])} " )
157- argval [overwrite_key ] = val [overwrite_key ]
156+ f"{ repr (okey )} = { repr (val [okey ])} " )
157+ self ._arg_override [okey ] = val [okey ]
158+
159+ argval = ',' .join ([f"{ okey } ={ str (self ._arg_override [okey ])} " for okey in self ._arg_override ])
158160 else :
159161 raise ModelicaSystemError (f"Invalid argument value for { repr (key )} : { repr (val )} (type: { type (val )} )" )
160162
@@ -207,9 +209,6 @@ def get_cmd(self) -> list:
207209 for key in self ._args :
208210 if self ._args [key ] is None :
209211 cmdl .append (f"-{ key } " )
210- elif key == 'override' and isinstance (self ._args [key ], dict ):
211- valstr = ',' .join ([f"{ valkey } ={ str (self ._args [key ][valkey ])} " for valkey in self ._args [key ]])
212- cmdl .append (f"-{ key } ={ valstr } " )
213212 else :
214213 cmdl .append (f"-{ key } ={ self ._args [key ]} " )
215214
@@ -282,7 +281,7 @@ def parse_simflags(simflags: str) -> dict:
282281 warnings .warn ("The argument 'simflags' is depreciated and will be removed in future versions; "
283282 "please use 'simargs' instead" , DeprecationWarning , stacklevel = 2 )
284283
285- simargs = {}
284+ simargs : dict [ str , Optional [ str | dict [ str , str ]]] = {}
286285
287286 args = [s for s in simflags .split (' ' ) if s ]
288287 for arg in args :
@@ -295,16 +294,18 @@ def parse_simflags(simflags: str) -> dict:
295294 elif parts [0 ] == 'override' :
296295 override = '=' .join (parts [1 :])
297296
298- simargs [ parts [ 0 ]] = {}
297+ override_dict = {}
299298 for item in override .split (',' ):
300299 kv = item .split ('=' )
301300 if not (0 < len (kv ) < 3 ):
302- raise ModelicaSystemError (f"Invalide value for '-override': { override } " )
301+ raise ModelicaSystemError (f"Invalid value for '-override': { override } " )
303302 if kv [0 ]:
304303 try :
305- simargs [ parts [ 0 ]] [kv [0 ]] = kv [1 ]
304+ override_dict [kv [0 ]] = kv [1 ]
306305 except (KeyError , IndexError ) as ex :
307- raise ModelicaSystemError (f"Invalide value for '-override': { override } " ) from ex
306+ raise ModelicaSystemError (f"Invalid value for '-override': { override } " ) from ex
307+
308+ simargs [parts [0 ]] = override_dict
308309
309310 return simargs
310311
0 commit comments