@@ -383,22 +383,21 @@ def __init__(
383383 self ._linearized_outputs : list [str ] = [] # linearization output list
384384 self ._linearized_states : list [str ] = [] # linearization states list
385385
386- self ._session = session
387-
388- # get OpenModelica version
389- version_str = self ._session .get_version ()
390- self ._version = self ._parse_om_version (version = version_str )
391-
392386 self ._simulated = False # True if the model has already been simulated
393387 self ._result_file : Optional [OMPathABC ] = None # for storing result file
394388
395- self ._work_dir : OMPathABC = self .setWorkDirectory (work_directory )
396-
397389 self ._model_name : Optional [str ] = None
398390 self ._libraries : Optional [list [str | tuple [str , str ]]] = None
399391 self ._file_name : Optional [OMPathABC ] = None
400392 self ._variable_filter : Optional [str ] = None
401393
394+ self ._session = session
395+ # get OpenModelica version
396+ version_str = self ._session .get_version ()
397+ self ._version = self ._parse_om_version (version = version_str )
398+
399+ self ._work_dir : OMPathABC = self .setWorkDirectory (work_directory )
400+
402401 def get_session (self ) -> OMSessionABC :
403402 """
404403 Return the OMC session used for this class.
@@ -468,6 +467,8 @@ def _xmlparse(self, xml_file: OMPathABC):
468467 xml_content = xml_file .read_text ()
469468 tree = ET .ElementTree (ET .fromstring (xml_content ))
470469 root = tree .getroot ()
470+ if root is None :
471+ raise ModelicaSystemError (f"Cannot read XML file: { xml_file } " )
471472 for attr in root .iter ('DefaultExperiment' ):
472473 for key in ("startTime" , "stopTime" , "stepSize" , "tolerance" ,
473474 "solver" , "outputFormat" ):
@@ -1931,7 +1932,7 @@ def getSolutions(
19311932 self ,
19321933 varList : Optional [str | list [str ]] = None ,
19331934 resultfile : Optional [str | os .PathLike ] = None ,
1934- ) -> tuple [str ] | np .ndarray :
1935+ ) -> tuple [str , ... ] | np .ndarray :
19351936 """Extract simulation results from a result data file.
19361937
19371938 Args:
@@ -1980,7 +1981,8 @@ def getSolutions(
19801981 result_vars = self .sendExpression (expr = f'readSimulationResultVars("{ result_file .as_posix ()} ")' )
19811982 self .sendExpression (expr = "closeSimulationResultFile()" )
19821983 if varList is None :
1983- return result_vars
1984+ var_list = [str (var ) for var in result_vars ]
1985+ return tuple (var_list )
19841986
19851987 if isinstance (varList , str ):
19861988 var_list_checked = [varList ]
@@ -2060,6 +2062,8 @@ def convertFmu2Mo(
20602062 raise ModelicaSystemError (f"Missing FMU file: { fmu_path .as_posix ()} " )
20612063
20622064 filename = self ._requestApi (apiName = 'importFMU' , entity = fmu_path .as_posix ())
2065+ if not isinstance (filename , str ):
2066+ raise ModelicaSystemError (f"Invalid return value for the FMU filename: { filename } " )
20632067 filepath = self .getWorkDirectory () / filename
20642068
20652069 # report proper error message
@@ -2102,7 +2106,9 @@ def optimize(self) -> dict[str, Any]:
21022106 """
21032107 properties = ',' .join (f"{ key } ={ val } " for key , val in self ._optimization_options .items ())
21042108 self .set_command_line_options ("-g=Optimica" )
2105- return self ._requestApi (apiName = 'optimize' , entity = self ._model_name , properties = properties )
2109+ retval = self ._requestApi (apiName = 'optimize' , entity = self ._model_name , properties = properties )
2110+ retval = cast (dict , retval )
2111+ return retval
21062112
21072113
21082114class ModelicaSystem (ModelicaSystemOMC ):
0 commit comments