##// END OF EJS Templates
Fix applying @needs_global_scope to cell magics....
Matthias Bussonnier -
Show More
@@ -2345,7 +2345,7 b' class InteractiveShell(SingletonConfigurable):'
2345 magic_arg_s = self.var_expand(line, stack_depth)
2345 magic_arg_s = self.var_expand(line, stack_depth)
2346 kwargs = {}
2346 kwargs = {}
2347 if getattr(fn, "needs_local_scope", False):
2347 if getattr(fn, "needs_local_scope", False):
2348 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
2348 kwargs['local_ns'] = self.user_ns
2349
2349
2350 with self.builtin_trap:
2350 with self.builtin_trap:
2351 args = (magic_arg_s, cell)
2351 args = (magic_arg_s, cell)
@@ -1127,8 +1127,8 b' python-profiler package from non-free.""")'
1127 ns = {}
1127 ns = {}
1128 glob = self.shell.user_ns
1128 glob = self.shell.user_ns
1129 # handles global vars with same name as local vars. We store them in conflict_globs.
1129 # handles global vars with same name as local vars. We store them in conflict_globs.
1130 if local_ns is not None:
1130 conflict_globs = {}
1131 conflict_globs = {}
1131 if local_ns and cell is None:
1132 for var_name, var_val in glob.items():
1132 for var_name, var_val in glob.items():
1133 if var_name in local_ns:
1133 if var_name in local_ns:
1134 conflict_globs[var_name] = var_val
1134 conflict_globs[var_name] = var_val
@@ -1154,9 +1154,8 b' python-profiler package from non-free.""")'
1154 timeit_result = TimeitResult(number, repeat, best, worst, all_runs, tc, precision)
1154 timeit_result = TimeitResult(number, repeat, best, worst, all_runs, tc, precision)
1155
1155
1156 # Restore global vars from conflict_globs
1156 # Restore global vars from conflict_globs
1157 if local_ns is not None:
1157 if conflict_globs:
1158 if len(conflict_globs) > 0:
1158 glob.update(conflict_globs)
1159 glob.update(conflict_globs)
1160
1159
1161 if not quiet :
1160 if not quiet :
1162 # Check best timing is greater than zero to avoid a
1161 # Check best timing is greater than zero to avoid a
@@ -419,6 +419,16 b' def test_time3():'
419 "run = 0\n"
419 "run = 0\n"
420 "run += 1")
420 "run += 1")
421
421
422 def test_time_local_ns():
423 """
424 Test that local_ns is actually global_ns when running a cell magic
425 """
426 ip = get_ipython()
427 ip.run_cell("%%time\n"
428 "myvar = 1")
429 nt.assert_equal(ip.user_ns['myvar'], 1)
430 del ip.user_ns['myvar']
431
422 def test_doctest_mode():
432 def test_doctest_mode():
423 "Toggle doctest_mode twice, it should be a no-op and run without error"
433 "Toggle doctest_mode twice, it should be a no-op and run without error"
424 _ip.magic('doctest_mode')
434 _ip.magic('doctest_mode')
General Comments 0
You need to be logged in to leave comments. Login now