--- a/mercurial/utils/stringutil.py Wed Jul 25 13:28:36 2018 -0400
+++ b/mercurial/utils/stringutil.py Mon Aug 27 09:02:39 2018 -0700
@@ -45,30 +45,36 @@
def pprint(o, bprefix=False):
"""Pretty print an object."""
+ return b''.join(pprintgen(o, bprefix=bprefix))
+
+def pprintgen(o, bprefix=False):
+ """Pretty print an object to a generator of atoms."""
+
if isinstance(o, bytes):
if bprefix:
- return "b'%s'" % escapestr(o)
- return "'%s'" % escapestr(o)
+ yield "b'%s'" % escapestr(o)
+ else:
+ yield "'%s'" % escapestr(o)
elif isinstance(o, bytearray):
# codecs.escape_encode() can't handle bytearray, so escapestr fails
# without coercion.
- return "bytearray['%s']" % escapestr(bytes(o))
+ yield "bytearray['%s']" % escapestr(bytes(o))
elif isinstance(o, list):
- return '[%s]' % (b', '.join(pprint(a, bprefix=bprefix) for a in o))
+ yield '[%s]' % (b', '.join(pprint(a, bprefix=bprefix) for a in o))
elif isinstance(o, dict):
- return '{%s}' % (b', '.join(
+ yield '{%s}' % (b', '.join(
'%s: %s' % (pprint(k, bprefix=bprefix),
pprint(v, bprefix=bprefix))
for k, v in sorted(o.items())))
elif isinstance(o, set):
- return 'set([%s])' % (b', '.join(
+ yield 'set([%s])' % (b', '.join(
pprint(k, bprefix=bprefix) for k in sorted(o)))
elif isinstance(o, tuple):
- return '(%s)' % (b', '.join(pprint(a, bprefix=bprefix) for a in o))
+ yield '(%s)' % (b', '.join(pprint(a, bprefix=bprefix) for a in o))
elif isinstance(o, types.GeneratorType):
- return 'gen[%s]' % (b', '.join(pprint(a, bprefix=bprefix) for a in o))
+ yield 'gen[%s]' % (b', '.join(pprint(a, bprefix=bprefix) for a in o))
else:
- return pycompat.byterepr(o)
+ yield pycompat.byterepr(o)
def prettyrepr(o):
"""Pretty print a representation of a possibly-nested object"""