Commit d2fd4cae authored by Georg Brandl's avatar Georg Brandl

Add Breakpoint.bpformat(), which returns the info usually printed by...

Add Breakpoint.bpformat(), which returns the info usually printed by bpprint().  Necessary for major refactoring of pdb output handling.
parent 6cccb865
...@@ -50,9 +50,10 @@ The :mod:`bdb` module also defines two classes: ...@@ -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: ...@@ -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)
......
...@@ -499,6 +499,9 @@ class Breakpoint: ...@@ -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: ...@@ -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)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment