diff --git a/IPython/core/interactiveshell.py b/IPython/core/interactiveshell.py index f98e49c..6a907d5 100644 --- a/IPython/core/interactiveshell.py +++ b/IPython/core/interactiveshell.py @@ -2328,8 +2328,13 @@ class InteractiveShell(SingletonConfigurable): magic_arg_s = line else: magic_arg_s = self.var_expand(line, stack_depth) + kwargs = {} + if getattr(fn, "needs_local_scope", False): + kwargs['local_ns'] = sys._getframe(stack_depth).f_locals + with self.builtin_trap: - result = fn(magic_arg_s, cell) + args = (magic_arg_s, cell) + result = fn(*args, **kwargs) return result def find_line_magic(self, magic_name):