in src/smolagents/local_python_executor.py [0:0]
def inner_evaluate(generators: list[ast.comprehension], index: int, current_state: dict[str, Any]) -> list[Any]:
if index >= len(generators):
return [
evaluate_ast(
listcomp.elt,
current_state,
static_tools,
custom_tools,
authorized_imports,
)
]
generator = generators[index]
iter_value = evaluate_ast(
generator.iter,
current_state,
static_tools,
custom_tools,
authorized_imports,
)
result = []
for value in iter_value:
new_state = current_state.copy()
if isinstance(generator.target, ast.Tuple):
for idx, elem in enumerate(generator.target.elts):
new_state[elem.id] = value[idx]
else:
new_state[generator.target.id] = value
if all(
evaluate_ast(if_clause, new_state, static_tools, custom_tools, authorized_imports)
for if_clause in generator.ifs
):
result.extend(inner_evaluate(generators, index + 1, new_state))
return result