mirror of
https://github.com/python/cpython.git
synced 2025-07-29 14:15:07 +00:00
#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:
parent
da407232e0
commit
dcd6b52206
1 changed files with 59 additions and 54 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue