--- a/mercurial/utils/stringutil.py Sun Oct 14 07:18:19 2018 +0200
+++ b/mercurial/utils/stringutil.py Sun Oct 14 07:23:02 2018 +0200
@@ -43,11 +43,11 @@
return pat
return pat.encode('latin1')
-def pprint(o, bprefix=False, indent=0):
+def pprint(o, bprefix=False, indent=0, level=0):
"""Pretty print an object."""
- return b''.join(pprintgen(o, bprefix=bprefix, indent=indent))
+ return b''.join(pprintgen(o, bprefix=bprefix, indent=indent, level=level))
-def pprintgen(o, bprefix=False, indent=0, _level=0):
+def pprintgen(o, bprefix=False, indent=0, level=0):
"""Pretty print an object to a generator of atoms.
``bprefix`` is a flag influencing whether bytestrings are preferred with
@@ -56,6 +56,8 @@
``indent`` controls whether collections and nested data structures
span multiple lines via the indentation amount in spaces. By default,
no newlines are emitted.
+
+ ``level`` specifies the initial indent level. Used if ``indent > 0``.
"""
if isinstance(o, bytes):
@@ -75,26 +77,26 @@
yield '['
if indent:
- _level += 1
+ level += 1
yield '\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
for i, a in enumerate(o):
for chunk in pprintgen(a, bprefix=bprefix, indent=indent,
- _level=_level):
+ level=level):
yield chunk
if i + 1 < len(o):
if indent:
yield ',\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
else:
yield ', '
if indent:
- _level -= 1
+ level -= 1
yield '\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
yield ']'
elif isinstance(o, dict):
@@ -105,32 +107,32 @@
yield '{'
if indent:
- _level += 1
+ level += 1
yield '\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
for i, (k, v) in enumerate(sorted(o.items())):
for chunk in pprintgen(k, bprefix=bprefix, indent=indent,
- _level=_level):
+ level=level):
yield chunk
yield ': '
for chunk in pprintgen(v, bprefix=bprefix, indent=indent,
- _level=_level):
+ level=level):
yield chunk
if i + 1 < len(o):
if indent:
yield ',\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
else:
yield ', '
if indent:
- _level -= 1
+ level -= 1
yield '\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
yield '}'
elif isinstance(o, set):
@@ -141,26 +143,26 @@
yield 'set(['
if indent:
- _level += 1
+ level += 1
yield '\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
for i, k in enumerate(sorted(o)):
for chunk in pprintgen(k, bprefix=bprefix, indent=indent,
- _level=_level):
+ level=level):
yield chunk
if i + 1 < len(o):
if indent:
yield ',\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
else:
yield ', '
if indent:
- _level -= 1
+ level -= 1
yield '\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
yield '])'
elif isinstance(o, tuple):
@@ -171,26 +173,26 @@
yield '('
if indent:
- _level += 1
+ level += 1
yield '\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
for i, a in enumerate(o):
for chunk in pprintgen(a, bprefix=bprefix, indent=indent,
- _level=_level):
+ level=level):
yield chunk
if i + 1 < len(o):
if indent:
yield ',\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
else:
yield ', '
if indent:
- _level -= 1
+ level -= 1
yield '\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
yield ')'
elif isinstance(o, types.GeneratorType):
@@ -204,9 +206,9 @@
yield 'gen['
if indent:
- _level += 1
+ level += 1
yield '\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
last = False
@@ -219,20 +221,20 @@
last = True
for chunk in pprintgen(current, bprefix=bprefix, indent=indent,
- _level=_level):
+ level=level):
yield chunk
if not last:
if indent:
yield ',\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
else:
yield ', '
if indent:
- _level -= 1
+ level -= 1
yield '\n'
- yield ' ' * (_level * indent)
+ yield ' ' * (level * indent)
yield ']'
else: