Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 15 additions & 15 deletions OMPython/ModelicaSystem.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,31 +130,31 @@ def arg_set(
"""

def override2str(
okey: str,
oval: str | bool | numbers.Number,
orkey: str,
orval: str | bool | numbers.Number,
) -> str:
"""
Convert a value for 'override' to a string taking into account differences between Modelica and Python.
"""
# check oval for any string representations of numbers (or bool) and convert these to Python representations
if isinstance(oval, str):
if isinstance(orval, str):
try:
oval_evaluated = ast.literal_eval(oval)
if isinstance(oval_evaluated, (numbers.Number, bool)):
oval = oval_evaluated
val_evaluated = ast.literal_eval(orval)
if isinstance(val_evaluated, (numbers.Number, bool)):
orval = val_evaluated
except (ValueError, SyntaxError):
pass

if isinstance(oval, str):
oval_str = oval.strip()
elif isinstance(oval, bool):
oval_str = 'true' if oval else 'false'
elif isinstance(oval, numbers.Number):
oval_str = str(oval)
if isinstance(orval, str):
val_str = orval.strip()
elif isinstance(orval, bool):
val_str = 'true' if orval else 'false'
elif isinstance(orval, numbers.Number):
val_str = str(orval)
else:
raise ModelicaSystemError(f"Invalid value for override key {okey}: {type(oval)}")
raise ModelicaSystemError(f"Invalid value for override key {orkey}: {type(orval)}")

return f"{okey}={oval_str}"
return f"{orkey}={val_str}"

if not isinstance(key, str):
raise ModelicaSystemError(f"Invalid argument key: {repr(key)} (type: {type(key)})")
Expand Down Expand Up @@ -183,7 +183,7 @@ def override2str(
f"(was: {repr(self._arg_override[okey])})")

if oval is not None:
self._arg_override[okey] = override2str(okey=okey, oval=oval)
self._arg_override[okey] = override2str(orkey=okey, orval=oval)

argval = ','.join(sorted(self._arg_override.values()))
elif val is None:
Expand Down