|
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