##// END OF EJS Templates
Support relative import in "%run -p -m"
Takafumi Arakaki -
Show More
@@ -78,7 +78,7 b' python-profiler package from non-free.""")'
78 @skip_doctest
78 @skip_doctest
79 @line_cell_magic
79 @line_cell_magic
80 def prun(self, parameter_s='', cell=None, user_mode=True,
80 def prun(self, parameter_s='', cell=None, user_mode=True,
81 opts=None,arg_lst=None,prog_ns=None):
81 opts=None,arg_lst=None,prog_ns=None, namespace=None):
82
82
83 """Run a statement through the python code profiler.
83 """Run a statement through the python code profiler.
84
84
@@ -187,7 +187,9 b' python-profiler package from non-free.""")'
187 namespace = self.shell.user_ns
187 namespace = self.shell.user_ns
188 if cell is not None:
188 if cell is not None:
189 arg_str += '\n' + cell
189 arg_str += '\n' + cell
190 else: # called to run a program by %run -p
190 elif namespace is not None: # called to run a program by %run -p
191 arg_str = cell
192 else:
191 try:
193 try:
192 filename = get_py_filename(arg_lst[0])
194 filename = get_py_filename(arg_lst[0])
193 except IOError as e:
195 except IOError as e:
@@ -545,7 +547,21 b' python-profiler package from non-free.""")'
545 stats = None
547 stats = None
546 with self.shell.readline_no_record:
548 with self.shell.readline_no_record:
547 if 'p' in opts:
549 if 'p' in opts:
548 stats = self.prun('', None, False, opts, arg_lst, prog_ns)
550 if 'm' in opts:
551 code = 'run_module(modulename, prog_ns)'
552 prun_ns = {
553 'run_module': self.shell.safe_run_module,
554 'prog_ns': prog_ns,
555 'modulename': modulename,
556 }
557 else:
558 code = 'execfile(filename, prog_ns)'
559 prun_ns = {
560 'execfile': self.shell.safe_execfile,
561 'prog_ns': prog_ns,
562 'filename': get_py_filename(filename),
563 }
564 stats = self.prun('', code, False, opts, namespace=prun_ns)
549 else:
565 else:
550 if 'd' in opts:
566 if 'd' in opts:
551 deb = debugger.Pdb(self.shell.colors)
567 deb = debugger.Pdb(self.shell.colors)
General Comments 0
You need to be logged in to leave comments. Login now