MCPcopy Index your code
hub / github.com/ipython/ipython / eval_node

Function eval_node

IPython/terminal/shortcuts/filters.py:287–315  ·  view source on GitHub ↗
(node: Union[ast.AST, None])

Source from the content-addressed store, hash-verified

285
286
287def eval_node(node: Union[ast.AST, None]) -> Optional[Filter]:
288 if node is None:
289 return None
290 if isinstance(node, ast.Expression):
291 return eval_node(node.body)
292 if isinstance(node, ast.BinOp):
293 left = eval_node(node.left)
294 right = eval_node(node.right)
295 dunders = _find_dunder(node.op, BINARY_OP_DUNDERS)
296 if dunders:
297 return getattr(left, dunders[0])(right)
298 raise ValueError(f"Unknown binary operation: {node.op}")
299 if isinstance(node, ast.UnaryOp):
300 value = eval_node(node.operand)
301 dunders = _find_dunder(node.op, UNARY_OP_DUNDERS)
302 if dunders:
303 return getattr(value, dunders[0])()
304 raise ValueError(f"Unknown unary operation: {node.op}")
305 if isinstance(node, ast.Name):
306 if node.id in KEYBINDING_FILTERS:
307 return KEYBINDING_FILTERS[node.id]
308 else:
309 sep = "\n - "
310 known_filters = sep.join(sorted(KEYBINDING_FILTERS))
311 raise NameError(
312 f"{node.id} is not a known shortcut filter."
313 f" Known filters are: {sep}{known_filters}."
314 )
315 raise ValueError("Unhandled node", ast.dump(node))
316
317
318def filter_from_string(code: str) -> Union[Condition, Filter]:

Callers 1

filter_from_stringFunction · 0.70

Calls 1

_find_dunderFunction · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…