home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import bdb
- import cmd
- import linecache
- import os
- import sys
- from IPython import PyColorize, ColorANSI, ipapi
- from IPython.genutils import Term
- from IPython.excolors import exception_colors
- has_pydb = False
- prompt = 'ipdb> '
- if '-pydb' in sys.argv:
-
- try:
- import pydb
- if hasattr(pydb.pydb, 'runl') and pydb.version > '1.17':
- has_pydb = True
- except ImportError:
- print 'Pydb (http://bashdb.sourceforge.net/pydb/) does not seem to be available'
- except:
- None<EXCEPTION MATCH>ImportError
-
-
- None<EXCEPTION MATCH>ImportError
- if has_pydb:
- from pydb import Pdb as OldPdb
- prompt = 'ipydb> '
- else:
- from pdb import Pdb as OldPdb
-
- def BdbQuit_excepthook(et, ev, tb):
- if et == bdb.BdbQuit:
- print 'Exiting Debugger.'
- else:
- BdbQuit_excepthook.excepthook_ori(et, ev, tb)
-
-
- def BdbQuit_IPython_excepthook(self, et, ev, tb):
- print 'Exiting Debugger.'
-
-
- class Tracer(object):
-
- def __init__(self, colors = None):
- global __IPYTHON__
-
- try:
- __IPYTHON__
- except NameError:
- __IPYTHON__ = ipapi.get(True, False)
- BdbQuit_excepthook.excepthook_ori = sys.excepthook
- sys.excepthook = BdbQuit_excepthook
- def_colors = 'NoColor'
-
- try:
- import rlcompleter
- import readline
- readline.parse_and_bind('tab: complete')
- except ImportError:
- pass
- except:
- None<EXCEPTION MATCH>ImportError
-
-
- None<EXCEPTION MATCH>ImportError
-
- ip = ipapi.get()
- def_colors = ip.options.colors
- ip.set_custom_exc((bdb.BdbQuit,), BdbQuit_IPython_excepthook)
- if colors is None:
- colors = def_colors
-
- self.debugger = Pdb(colors)
-
-
- def __call__(self):
- self.debugger.set_trace(sys._getframe().f_back)
-
-
-
- def decorate_fn_with_doc(new_fn, old_fn, additional_text = ''):
-
- def wrapper(*args, **kw):
- return new_fn(*args, **kw)
-
- if old_fn.__doc__:
- wrapper.__doc__ = old_fn.__doc__ + additional_text
-
- return wrapper
-
-
- def _file_lines(fname):
-
- try:
- outfile = open(fname)
- except IOError:
- return []
-
- out = outfile.readlines()
- outfile.close()
- return out
-
-
- class Pdb(OldPdb):
- if sys.version[:3] >= '2.5' or has_pydb:
-
- def __init__(self, color_scheme = 'NoColor', completekey = None, stdin = None, stdout = None):
- if has_pydb and completekey is None:
- OldPdb.__init__(self, stdin = stdin, stdout = Term.cout)
- else:
- OldPdb.__init__(self, completekey, stdin, stdout)
- self.prompt = prompt
- self.is_pydb = has_pydb
- if self.is_pydb:
- import pydb.fns as pydb
-
- self.checkline = lambda filename, lineno: pydb.fns.checkline(self, filename, lineno)
- 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.do_list = decorate_fn_with_doc(self.list_command_pydb, OldPdb.do_list)
- self.do_l = self.do_list
- self.do_frame = decorate_fn_with_doc(self.new_do_frame, OldPdb.do_frame)
-
- self.aliases = { }
- self.color_scheme_table = exception_colors()
- C = ColorANSI.TermColors
- cst = self.color_scheme_table
- cst['NoColor'].colors.breakpoint_enabled = C.NoColor
- cst['NoColor'].colors.breakpoint_disabled = C.NoColor
- cst['Linux'].colors.breakpoint_enabled = C.LightRed
- cst['Linux'].colors.breakpoint_disabled = C.Red
- cst['LightBG'].colors.breakpoint_enabled = C.LightRed
- cst['LightBG'].colors.breakpoint_disabled = C.Red
- self.set_colors(color_scheme)
- self.parser = PyColorize.Parser()
-
- else:
-
- def __init__(self, color_scheme = 'NoColor'):
- bdb.Bdb.__init__(self)
- cmd.Cmd.__init__(self, completekey = None)
- self.prompt = 'ipdb> '
- self.aliases = { }
- self.mainpyfile = ''
- self._wait_for_mainpyfile = 0
-
- try:
- self.rcLines = _file_lines(os.path.join(os.environ['HOME'], '.pdbrc'))
- except KeyError:
- self.rcLines = []
-
- self.rcLines.extend(_file_lines('.pdbrc'))
- self.color_scheme_table = exception_colors()
- C = ColorANSI.TermColors
- cst = self.color_scheme_table
- cst['NoColor'].colors.breakpoint_enabled = C.NoColor
- cst['NoColor'].colors.breakpoint_disabled = C.NoColor
- cst['Linux'].colors.breakpoint_enabled = C.LightRed
- cst['Linux'].colors.breakpoint_disabled = C.Red
- cst['LightBG'].colors.breakpoint_enabled = C.LightRed
- cst['LightBG'].colors.breakpoint_disabled = C.Red
- self.set_colors(color_scheme)
- self.parser = PyColorize.Parser()
-
-
- def set_colors(self, scheme):
- self.color_scheme_table.set_active_scheme(scheme)
-
-
- def interaction(self, frame, traceback):
- __IPYTHON__.set_completer_frame(frame)
- OldPdb.interaction(self, frame, traceback)
-
-
- def new_do_up(self, arg):
- OldPdb.do_up(self, arg)
- __IPYTHON__.set_completer_frame(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)
-
- 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)
-
-
- def new_do_quit(self, arg):
- if hasattr(self, 'old_all_completions'):
- __IPYTHON__.Completer.all_completions = self.old_all_completions
-
- return OldPdb.do_quit(self, arg)
-
- do_q = do_quit = decorate_fn_with_doc(new_do_quit, OldPdb.do_quit)
-
- def new_do_restart(self, arg):
- self.msg("Restart doesn't make sense here. Using 'quit' instead.")
- return self.do_quit(arg)
-
-
- def postloop(self):
- __IPYTHON__.set_completer_frame(None)
-
-
- def print_stack_trace(self):
-
- try:
- for frame_lineno in self.stack:
- self.print_stack_entry(frame_lineno, context = 5)
- except KeyboardInterrupt:
- pass
-
-
-
- def print_stack_entry(self, frame_lineno, prompt_prefix = '\n-> ', context = 3):
- print >>Term.cout, self.format_stack_entry(frame_lineno, '', context)
- (frame, lineno) = frame_lineno
- filename = frame.f_code.co_filename
- __IPYTHON__.hooks.synchronize_with_editor(filename, lineno, 0)
-
-
- def format_stack_entry(self, frame_lineno, lprefix = ': ', context = 3):
- import linecache
- import repr
- ret = []
- Colors = self.color_scheme_table.active_colors
- ColorsNormal = Colors.Normal
- tpl_link = '%s%%s%s' % (Colors.filenameEm, ColorsNormal)
- tpl_call = '%s%%s%s%%s%s' % (Colors.vName, Colors.valEm, ColorsNormal)
- tpl_line = '%%s%s%%s %s%%s' % (Colors.lineno, ColorsNormal)
- tpl_line_em = '%%s%s%%s %s%%s%s' % (Colors.linenoEm, Colors.line, ColorsNormal)
- (frame, lineno) = frame_lineno
- return_value = ''
- if '__return__' in frame.f_locals:
- rv = frame.f_locals['__return__']
- return_value += repr.repr(rv) + '\n'
-
- ret.append(return_value)
- filename = self.canonic(frame.f_code.co_filename)
- link = tpl_link % filename
- if frame.f_code.co_name:
- func = frame.f_code.co_name
- else:
- func = '<lambda>'
- call = ''
- if func != '?':
- if '__args__' in frame.f_locals:
- args = repr.repr(frame.f_locals['__args__'])
- else:
- args = '()'
- call = tpl_call % (func, args)
-
- if frame is self.curframe:
- ret.append('> ')
- else:
- ret.append(' ')
- ret.append('%s(%s)%s\n' % (link, lineno, call))
- start = lineno - 1 - context // 2
- lines = linecache.getlines(filename)
- start = max(start, 0)
- start = min(start, len(lines) - context)
- lines = lines[start:start + context]
- for i, line in enumerate(lines):
- show_arrow = start + 1 + i == lineno
- if not frame is self.curframe or show_arrow or tpl_line_em:
- pass
- linetpl = tpl_line
- ret.append(self._Pdb__format_line(linetpl, filename, start + 1 + i, line, arrow = show_arrow))
-
- return ''.join(ret)
-
-
- def __format_line(self, tpl_line, filename, lineno, line, arrow = False):
- bp_mark = ''
- bp_mark_color = ''
- scheme = self.color_scheme_table.active_scheme_name
- (new_line, err) = self.parser.format2(line, 'str', scheme)
- if not err:
- line = new_line
-
- bp = None
- if lineno in self.get_file_breaks(filename):
- bps = self.get_breaks(filename, lineno)
- bp = bps[-1]
-
- if bp:
- Colors = self.color_scheme_table.active_colors
- bp_mark = str(bp.number)
- bp_mark_color = Colors.breakpoint_enabled
- if not bp.enabled:
- bp_mark_color = Colors.breakpoint_disabled
-
-
- numbers_width = 7
- if arrow:
- pad = numbers_width - len(str(lineno)) - len(bp_mark)
- if pad >= 3:
- marker = '-' * (pad - 3) + '-> '
- elif pad == 2:
- marker = '> '
- elif pad == 1:
- marker = '>'
- else:
- marker = ''
- num = '%s%s' % (marker, str(lineno))
- line = tpl_line % (bp_mark_color + bp_mark, num, line)
- else:
- num = '%*s' % (numbers_width - len(bp_mark), str(lineno))
- line = tpl_line % (bp_mark_color + bp_mark, num, line)
- return line
-
-
- def list_command_pydb(self, arg):
- (filename, first, last) = OldPdb.parse_list_cmd(self, arg)
- if filename is not None:
- self.print_list_lines(filename, first, last)
-
-
-
- def print_list_lines(self, filename, first, last):
-
- try:
- Colors = self.color_scheme_table.active_colors
- ColorsNormal = Colors.Normal
- tpl_line = '%%s%s%%s %s%%s' % (Colors.lineno, ColorsNormal)
- tpl_line_em = '%%s%s%%s %s%%s%s' % (Colors.linenoEm, Colors.line, ColorsNormal)
- src = []
- for lineno in range(first, last + 1):
- line = linecache.getline(filename, lineno)
- if not line:
- break
-
- if lineno == self.curframe.f_lineno:
- line = self._Pdb__format_line(tpl_line_em, filename, lineno, line, arrow = True)
- else:
- line = self._Pdb__format_line(tpl_line, filename, lineno, line, arrow = False)
- src.append(line)
- self.lineno = lineno
-
- print >>Term.cout, ''.join(src)
- except KeyboardInterrupt:
- pass
-
-
-
- def do_list(self, arg):
- self.lastcmd = 'list'
- last = None
- if arg:
-
- try:
- x = eval(arg, { }, { })
- if type(x) == type(()):
- (first, last) = x
- first = int(first)
- last = int(last)
- if last < first:
- last = first + last
-
- else:
- first = max(1, int(x) - 5)
- print '*** Error in argument:', `arg`
- return None
-
- elif self.lineno is None:
- first = max(1, self.curframe.f_lineno - 5)
- else:
- first = self.lineno + 1
- if last is None:
- last = first + 10
-
- self.print_list_lines(self.curframe.f_code.co_filename, first, last)
- lineno = first
- filename = self.curframe.f_code.co_filename
- __IPYTHON__.hooks.synchronize_with_editor(filename, lineno, 0)
-
- do_l = do_list
-
- def do_pdef(self, arg):
- namespaces = [
- ('Locals', self.curframe.f_locals),
- ('Globals', self.curframe.f_globals)]
- __IPYTHON__.magic_pdef(arg, namespaces = namespaces)
-
-
- def do_pdoc(self, arg):
- namespaces = [
- ('Locals', self.curframe.f_locals),
- ('Globals', self.curframe.f_globals)]
- __IPYTHON__.magic_pdoc(arg, namespaces = namespaces)
-
-
- def do_pinfo(self, arg):
- namespaces = [
- ('Locals', self.curframe.f_locals),
- ('Globals', self.curframe.f_globals)]
- __IPYTHON__.magic_pinfo('pinfo %s' % arg, namespaces = namespaces)
-
-
-