|
51 | 51 | import warnings
|
52 | 52 |
|
53 | 53 | # TODO: replace this with the new parser
|
54 |
| -from OMPython import OMTypedParser |
55 |
| -from OMPython import OMParser |
| 54 | +from OMPython.OMTypedParser import parseString as om_parser_typed |
| 55 | +from OMPython.OMParser import om_parser_basic |
56 | 56 |
|
57 | 57 |
|
58 | 58 | # define logger using the current module name as ID
|
@@ -81,9 +81,6 @@ def __init__(self, readonly=False):
|
81 | 81 | self._readonly = readonly
|
82 | 82 | self._omc_cache = {}
|
83 | 83 |
|
84 |
| - def clearOMParserResult(self): |
85 |
| - OMParser.result = {} |
86 |
| - |
87 | 84 | def execute(self, command):
|
88 | 85 | warnings.warn("This function is depreciated and will be removed in future versions; "
|
89 | 86 | "please use sendExpression() instead", DeprecationWarning, stacklevel=1)
|
@@ -197,7 +194,7 @@ def getClassComment(self, className):
|
197 | 194 | return self.ask('getClassComment', className)
|
198 | 195 | except pyparsing.ParseException as ex:
|
199 | 196 | logger.warning("Method 'getClassComment' failed for %s", className)
|
200 |
| - logger.warning('OMTypedParser error: %s', ex.message) |
| 197 | + logger.warning('OMTypedParser error: %s', ex.msg) |
201 | 198 | return 'No description available'
|
202 | 199 |
|
203 | 200 | def getNthComponent(self, className, comp_id):
|
@@ -232,44 +229,20 @@ def getParameterValue(self, className, parameterName):
|
232 | 229 | try:
|
233 | 230 | return self.ask('getParameterValue', f'{className}, {parameterName}')
|
234 | 231 | except pyparsing.ParseException as ex:
|
235 |
| - logger.warning('OMTypedParser error: %s', ex.message) |
| 232 | + logger.warning('OMTypedParser error: %s', ex.msg) |
236 | 233 | return ""
|
237 | 234 |
|
238 | 235 | def getComponentModifierNames(self, className, componentName):
|
239 | 236 | return self.ask('getComponentModifierNames', f'{className}, {componentName}')
|
240 | 237 |
|
241 | 238 | def getComponentModifierValue(self, className, componentName):
|
242 |
| - try: |
243 |
| - # FIXME: OMPython exception UnboundLocalError exception for 'Modelica.Fluid.Machines.ControlledPump' |
244 |
| - return self.ask('getComponentModifierValue', f'{className}, {componentName}') |
245 |
| - except pyparsing.ParseException as ex: |
246 |
| - logger.warning('OMTypedParser error: %s', ex.message) |
247 |
| - result = self.ask('getComponentModifierValue', f'{className}, {componentName}', parsed=False) |
248 |
| - try: |
249 |
| - answer = OMParser.check_for_values(result) |
250 |
| - OMParser.result = {} |
251 |
| - return answer[2:] |
252 |
| - except (TypeError, UnboundLocalError) as ex: |
253 |
| - logger.warning('OMParser error: %s', ex) |
254 |
| - return result |
| 239 | + return self.ask(question='getComponentModifierValue', opt=f'{className}, {componentName}') |
255 | 240 |
|
256 | 241 | def getExtendsModifierNames(self, className, componentName):
|
257 | 242 | return self.ask('getExtendsModifierNames', f'{className}, {componentName}')
|
258 | 243 |
|
259 | 244 | def getExtendsModifierValue(self, className, extendsName, modifierName):
|
260 |
| - try: |
261 |
| - # FIXME: OMPython exception UnboundLocalError exception for 'Modelica.Fluid.Machines.ControlledPump' |
262 |
| - return self.ask('getExtendsModifierValue', f'{className}, {extendsName}, {modifierName}') |
263 |
| - except pyparsing.ParseException as ex: |
264 |
| - logger.warning('OMTypedParser error: %s', ex.message) |
265 |
| - result = self.ask('getExtendsModifierValue', f'{className}, {extendsName}, {modifierName}', parsed=False) |
266 |
| - try: |
267 |
| - answer = OMParser.check_for_values(result) |
268 |
| - OMParser.result = {} |
269 |
| - return answer[2:] |
270 |
| - except (TypeError, UnboundLocalError) as ex: |
271 |
| - logger.warning('OMParser error: %s', ex) |
272 |
| - return result |
| 245 | + return self.ask(question='getExtendsModifierValue', opt=f'{className}, {extendsName}, {modifierName}') |
273 | 246 |
|
274 | 247 | def getNthComponentModification(self, className, comp_id):
|
275 | 248 | # FIXME: OMPython exception Results KeyError exception
|
@@ -572,7 +545,14 @@ def sendExpression(self, command, parsed=True):
|
572 | 545 | else:
|
573 | 546 | result = self._omc.recv_string()
|
574 | 547 | if parsed is True:
|
575 |
| - answer = OMTypedParser.parseString(result) |
576 |
| - return answer |
| 548 | + try: |
| 549 | + return om_parser_typed(result) |
| 550 | + except pyparsing.ParseException as ex: |
| 551 | + logger.warning('OMTypedParser error: %s. Returning the basic parser result.', ex.msg) |
| 552 | + try: |
| 553 | + return om_parser_basic(result) |
| 554 | + except (TypeError, UnboundLocalError) as ex: |
| 555 | + logger.warning('OMParser error: %s. Returning the unparsed result.', ex) |
| 556 | + return result |
577 | 557 | else:
|
578 | 558 | return result
|
0 commit comments