Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def get_mx(self, tree: Union[ast.Symbol, ast.ComponentRef, ast.Expression]) -> ca.MX:
"""
We pull components and symbols from the AST on demand.
This is to ensure that parametrized vector dimensions can be resolved. Vector
dimensions need to be known at CasADi MX creation time.
:param tree:
:return:
"""
if tree not in self.src:
if isinstance(tree, ast.Symbol):
s = self.get_symbol(tree)
elif isinstance(tree, ast.ComponentRef):
s = self.get_component(tree)
else:
raise Exception('Tried to look up expression before it was reached by the tree walker')
self.src[tree] = s
return self.src[tree]