# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: erik.tollerud@gmail.com-20091217023856-cnyxsc19f829smiy # target_branch: bzr+ssh://bazaar.launchpad.net/~ipython-\ # dev/ipython/trunk/ # testament_sha1: 096392b670cfc3ee61de1bdf51d7abe50cec9dcc # timestamp: 2009-12-16 18:49:17 -0800 # base_revision_id: fernando.perez@berkeley.edu-20091214211732-\ # wv7ua14gupfwiao7 # # Begin patch === modified file 'IPython/core/debugger.py' --- IPython/core/debugger.py 2009-08-19 21:56:41 +0000 +++ IPython/core/debugger.py 2009-12-17 02:38:56 +0000 @@ -166,7 +166,7 @@ class Pdb(OldPdb): """Modified Pdb class, does not load readline.""" - + if sys.version[:3] >= '2.5' or has_pydb: def __init__(self,color_scheme='NoColor',completekey=None, stdin=None, stdout=None): @@ -179,8 +179,11 @@ self.prompt = prompt # The default prompt is '(Pdb)' + # IPython changes... self.is_pydb = has_pydb + + self.ipinst = ipapi.get() if self.is_pydb: @@ -193,8 +196,8 @@ self.curframe = None self.do_restart = self.new_do_restart - self.old_all_completions = __IPYTHON__.Completer.all_completions - __IPYTHON__.Completer.all_completions=self.all_completions + self.old_all_completions = self.ipinst.Completer.all_completions + self.ipinst.Completer.all_completions=self.all_completions self.do_list = decorate_fn_with_doc(self.list_command_pydb, OldPdb.do_list) @@ -233,6 +236,8 @@ # because it binds readline and breaks tab-completion. This means we # have to COPY the constructor here. def __init__(self,color_scheme='NoColor'): + self.ipinst = ipapi.get() + bdb.Bdb.__init__(self) cmd.Cmd.__init__(self,completekey=None) # don't load readline self.prompt = 'ipdb> ' # The default prompt is '(Pdb)' @@ -277,30 +282,38 @@ def set_colors(self, scheme): """Shorthand access to the color table scheme selector method.""" self.color_scheme_table.set_active_scheme(scheme) + + def set_completer_frame_on_inst(self,frame=None): + if frame: + self.ipinst.Completer.namespace = frame.f_locals + self.ipinst.Completer.global_namespace = frame.f_globals + else: + self.ipinst.Completer.namespace = self.ipinst.user_ns + self.ipinst.Completer.global_namespace = self.ipinst.user_global_ns def interaction(self, frame, traceback): - __IPYTHON__.set_completer_frame(frame) + self.set_completer_frame_on_inst(frame) OldPdb.interaction(self, frame, traceback) def new_do_up(self, arg): OldPdb.do_up(self, arg) - __IPYTHON__.set_completer_frame(self.curframe) + self.set_completer_frame_on_inst(self.curframe) do_u = do_up = decorate_fn_with_doc(new_do_up, OldPdb.do_up) def new_do_down(self, arg): OldPdb.do_down(self, arg) - __IPYTHON__.set_completer_frame(self.curframe) + self.set_completer_frame_on_inst(self.curframe) do_d = do_down = decorate_fn_with_doc(new_do_down, OldPdb.do_down) def new_do_frame(self, arg): OldPdb.do_frame(self, arg) - __IPYTHON__.set_completer_frame(self.curframe) + self.set_completer_frame_on_inst(self.curframe) def new_do_quit(self, arg): if hasattr(self, 'old_all_completions'): - __IPYTHON__.Completer.all_completions=self.old_all_completions + self.ipinst.Completer.all_completions=self.old_all_completions return OldPdb.do_quit(self, arg) @@ -314,7 +327,7 @@ return self.do_quit(arg) def postloop(self): - __IPYTHON__.set_completer_frame(None) + self.set_completer_frame_on_inst(None) def print_stack_trace(self): try: @@ -331,7 +344,7 @@ # vds: >> frame, lineno = frame_lineno filename = frame.f_code.co_filename - __IPYTHON__.hooks.synchronize_with_editor(filename, lineno, 0) + self.ipinst.hooks.synchronize_with_editor(filename, lineno, 0) # vds: << def format_stack_entry(self, frame_lineno, lprefix=': ', context = 3): @@ -500,7 +513,7 @@ # vds: >> lineno = first filename = self.curframe.f_code.co_filename - __IPYTHON__.hooks.synchronize_with_editor(filename, lineno, 0) + self.ipinst.hooks.synchronize_with_editor(filename, lineno, 0) # vds: << do_l = do_list @@ -509,16 +522,16 @@ """The debugger interface to magic_pdef""" namespaces = [('Locals', self.curframe.f_locals), ('Globals', self.curframe.f_globals)] - __IPYTHON__.magic_pdef(arg, namespaces=namespaces) + self.ipinst.magic_pdef(arg, namespaces=namespaces) def do_pdoc(self, arg): """The debugger interface to magic_pdoc""" namespaces = [('Locals', self.curframe.f_locals), ('Globals', self.curframe.f_globals)] - __IPYTHON__.magic_pdoc(arg, namespaces=namespaces) + self.ipinst.magic_pdoc(arg, namespaces=namespaces) def do_pinfo(self, arg): """The debugger equivalant of ?obj""" namespaces = [('Locals', self.curframe.f_locals), ('Globals', self.curframe.f_globals)] - __IPYTHON__.magic_pinfo("pinfo %s" % arg, namespaces=namespaces) + self.ipinst.magic_pinfo("pinfo %s" % arg, namespaces=namespaces) # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWQe9PL4AAozfgERUU2f//1sB BAC//9/wUAV7bPdoGXMqK1m1XbnBJIpgnqNDIaDUj9DJpI/UnqPU9NIGQSREYgaETRD2ojIA2oND RkNBiRpNBQaemEhmoA0ABoADmAAAAAAAAAABJIFPRoTQyap+gRP1NQaaNAaA0HIBurt0vRH3mmAS Do7MP0Y4zlwU6XJEq00REKFaiMs2g84OkjambHE0nUg7knsaEdtt6QIkkLXpwzvMJGZkBWR+OyS/ cctNI8ne4xNS0ioI36GUiiopraIRU7WqVKimZMJKc5VLxFgwYbMrsw+Xe/VrHpOMBiHgxm2dGiRT AU2Z79bYWVXRhUnrJa/dgQOfmfluWSr54D4sG2e5Fg8fxhWMeSp97yF37TC/xnl0FPh0I0I6pY71 4gOqqp6SwtLABk45qnTouGglxgKclV4EbbnkRJYZmLIC3efQxByjREQBfpTdlBmSOBQmU6zh4GKA xay9vnPuvut+uCoVqgrt4EfPLmnjaRTurYNG94FkQjAWauyJYyD0azyj6xWSxGOOZnjNVarNpkM8 rEWb0LQ3qy1SoOLRpwFMfGNDWMBixg5jEUQ1P6ZQjeVmsGTdCiQUavVi3cZkIiuuHgp3tC134SIs mtyIW7jeUIrqkpyyvrLnJWDcnygXc463aCnOnVMyDgRJNUbmE7messIj00Ne4iPDgsSlMCjpduLh FRWXA4umWLIeVEyJ6Fv2jVwiW2jmarITsspifjI1vvNhK4fRIkWjOPoNvHI3HZIkRIkhOLleQsG0 NMFRRaiYIuJzwLWF6MbEp/80hmOT6maZk7gjd3L3vxOI2c/zUmZhTxMyb2vSdJow9KZigV4sClK3 FPQgYHyUXi0Ud054NI0IHwTFB5A5FpxPfn3HNIqnUxcbA6pHeq+P8ZmH4yDEZMMkwjBzlqVpYwss zIvr8FxQX4Ax0P0oi8zNyy7A63JBDcKklMCc1KUQ8DucK6LDnUFyAu5gr5QU7ywvomTURFK45GSH 0bx5TsZSCc5US2BDJ5BKMfNjFthvdwJjAkrx2vWBnsLZ8QRCjLjplOgXZrCxcdcZwHe/4WoEvv7P pKiTsmRq1pMsmp6UCxN3tLU1S3qMJwKhcytCuKCikGsC1OTlGXM7GiCTnFh4mYuJoRiZyjcQO/nz 6lacnUJy9eIsuPao1LPmFsDQdAenGM+gHhyU9uI2wVhQib0gzI1z8lonhVFh7OwsAoA3oiKrgsJ5 yViAmEt2+KXSBjE4pAPXoXgW4m06+bCpvJfHTgMl9d6hvBiAEpphZqBBDwMkg0SSwHygwpAR09h0 Cnp1EtK6gLs1UA6kCXv2zObUVLiXWQSC1sWEmNxnkzd6gslbTwTA5PThb+7yA0GZgiEh4MyGW0Vp was+SvWoO2TNcaHlRK5B/kmBYHcyKibh5H2wIitHImFK2hcHLcZmgI2Yxq661nkGpUwcFUfaKABI kG1ZYYDd+CnxwxHQhg1EuT5aWiv+MMGUKLFWlqPpiaUa2LG6zEUZgHEkCEcjqCP5E94laIFw0Bm3 HgU3Xmy9zX8OR2Q8ixPRUWVkbJxpM4DTryE+8FsEhpIxJnDcRGBHhugQFPAkz0rGFcarDts6kSQm tSkVh1sFqZQcd68UzgG6B2bVSiuHO1XrECS4HaLLQVicy3dMExFPGLXlbbxeJNc9Af/i7kinChIA 96eXwA==