Add Breakpoint.bpformat(), which returns the info usually printed by bpprint(). Necessary for major refactoring of pdb output handling.

This commit is contained in:
Georg Brandl 2010-07-30 15:01:23 +00:00
parent 6cccb865d1
commit d2fd4cae8e
2 changed files with 24 additions and 11 deletions

View File

@ -50,9 +50,10 @@ The :mod:`bdb` module also defines two classes:
Mark the breakpoint as disabled. Mark the breakpoint as disabled.
.. method:: bpprint(out=None) .. method:: bpformat()
Print all the information about the breakpoint: Return a string with all the information about the breakpoint, nicely
formatted:
* The breakpoint number. * The breakpoint number.
* If it is temporary or not. * If it is temporary or not.
@ -61,6 +62,13 @@ The :mod:`bdb` module also defines two classes:
* If it must be ignored the next N times. * If it must be ignored the next N times.
* The breakpoint hit count. * The breakpoint hit count.
.. versionadded:: 3.2
.. method:: bpprint(out=None)
Print the output of :meth:`bpformat` to the file *out*, or if it is
``None``, to standard output.
.. class:: Bdb(skip=None) .. class:: Bdb(skip=None)

View File

@ -499,6 +499,9 @@ class Breakpoint:
def bpprint(self, out=None): def bpprint(self, out=None):
if out is None: if out is None:
out = sys.stdout out = sys.stdout
print(self.bpformat(), file=out)
def bpformat(self):
if self.temporary: if self.temporary:
disp = 'del ' disp = 'del '
else: else:
@ -507,17 +510,19 @@ class Breakpoint:
disp = disp + 'yes ' disp = disp + 'yes '
else: else:
disp = disp + 'no ' disp = disp + 'no '
print('%-4dbreakpoint %s at %s:%d' % (self.number, disp, ret = '%-4dbreakpoint %s at %s:%d' % (self.number, disp,
self.file, self.line), file=out) self.file, self.line)
if self.cond: if self.cond:
print('\tstop only if %s' % (self.cond,), file=out) ret += '\n\tstop only if %s' % (self.cond,)
if self.ignore: if self.ignore:
print('\tignore next %d hits' % (self.ignore), file=out) ret += '\n\tignore next %d hits' % (self.ignore,)
if (self.hits): if self.hits:
if (self.hits > 1): ss = 's' if self.hits > 1:
else: ss = '' ss = 's'
print(('\tbreakpoint already hit %d time%s' % else:
(self.hits, ss)), file=out) ss = ''
ret += '\n\tbreakpoint already hit %d time%s' % (self.hits, ss)
return ret
def __str__(self): def __str__(self):
return 'breakpoint %s at %s:%s' % (self.number, self.file, self.line) return 'breakpoint %s at %s:%s' % (self.number, self.file, self.line)