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_integer(self, tree: Union[ast.Primary, ast.ComponentRef, ast.Expression, ast.Slice]) -> Union[int, ca.MX, np.ndarray]:
# CasADi needs to know the dimensions of symbols at instantiation.
# We therefore need a mechanism to evaluate expressions that define dimensions of symbols.
if isinstance(tree, ast.Primary):
return None if tree.value is None else int(tree.value)
if isinstance(tree, ast.ComponentRef):
s = self.current_class.symbols[tree.name]
assert (s.type.name == 'Integer')
return self.get_integer(s.value)
if isinstance(tree, ast.Expression):
# Make sure that the expression has been converted to MX by (re)visiting the
# relevant part of the AST.
ast_walker = TreeWalker()
ast_walker.walk(self, tree)
# Obtain expression
expr = self.get_mx(tree)
# Obtain the symbols it depends on
free_vars = ca.symvar(expr)
def get_integer(self, tree: Union[ast.Primary, ast.ComponentRef, ast.Expression, ast.Slice]) -> Union[int, ca.MX, np.ndarray]:
# CasADi needs to know the dimensions of symbols at instantiation.
# We therefore need a mechanism to evaluate expressions that define dimensions of symbols.
if isinstance(tree, ast.Primary):
return None if tree.value is None else int(tree.value)
if isinstance(tree, ast.ComponentRef):
s = self.current_class.symbols[tree.name]
assert (s.type.name == 'Integer')
return self.get_integer(s.value)
if isinstance(tree, ast.Expression):
# Make sure that the expression has been converted to MX by (re)visiting the
# relevant part of the AST.
ast_walker = TreeWalker()
ast_walker.walk(self, tree)
# Obtain expression
expr = self.get_mx(tree)
# Obtain the symbols it depends on
free_vars = ca.symvar(expr)
# Find the values of the symbols