#1351692: in pprint, always call format() for dict and list items to enable

custom formatting of contents via subclassing PrettyPrinter.
This commit is contained in:
Georg Brandl 2008-01-20 11:13:29 +00:00
parent da407232e0
commit dcd6b52206

View file

@ -131,7 +131,6 @@ class PrettyPrinter:
sepLines = _len(rep) > (self._width - 1 - indent - allowance)
write = stream.write
if sepLines:
r = getattr(typ, "__repr__", None)
if issubclass(typ, dict) and r is dict.__repr__:
write('{')
@ -152,7 +151,10 @@ class PrettyPrinter:
if length > 1:
for key, ent in items[1:]:
rep = self._repr(key, context, level)
if sepLines:
write(',\n%s%s: ' % (' '*indent, rep))
else:
write(', %s: ' % rep)
self._format(ent, stream, indent + _len(rep) + 2,
allowance + 1, context, level)
indent = indent - self._indent_per_level
@ -178,7 +180,10 @@ class PrettyPrinter:
context, level)
if length > 1:
for ent in object[1:]:
if sepLines:
write(',\n' + ' '*indent)
else:
write(', ')
self._format(ent, stream, indent,
allowance + 1, context, level)
indent = indent - self._indent_per_level
@ -187,9 +192,9 @@ class PrettyPrinter:
write(',')
write(endchar)
return
write(rep)
def _repr(self, object, context, level):
repr, readable, recursive = self.format(object, context.copy(),
self._depth, level)