comparison mercurial/utils/stringutil.py @ 37750:f7194c925003

stringutil: make b prefixes on string output optional I need this to preserve some behavior in hook.py. Differential Revision: https://phab.mercurial-scm.org/D3359
author Augie Fackler <augie@google.com>
date Fri, 13 Apr 2018 23:57:57 -0400
parents 73d0a3dd7e53
children bf6bb710b40f
comparison
equal deleted inserted replaced
37749:73d0a3dd7e53 37750:f7194c925003
21 encoding, 21 encoding,
22 error, 22 error,
23 pycompat, 23 pycompat,
24 ) 24 )
25 25
26 def pprint(o): 26 def pprint(o, bprefix=True):
27 """Pretty print an object.""" 27 """Pretty print an object."""
28 if isinstance(o, bytes): 28 if isinstance(o, bytes):
29 return "b'%s'" % escapestr(o) 29 if bprefix:
30 return "b'%s'" % escapestr(o)
31 return "'%s'" % escapestr(o)
30 elif isinstance(o, bytearray): 32 elif isinstance(o, bytearray):
31 # codecs.escape_encode() can't handle bytearray, so escapestr fails 33 # codecs.escape_encode() can't handle bytearray, so escapestr fails
32 # without coercion. 34 # without coercion.
33 return "bytearray['%s']" % escapestr(bytes(o)) 35 return "bytearray['%s']" % escapestr(bytes(o))
34 elif isinstance(o, list): 36 elif isinstance(o, list):
35 return '[%s]' % (b', '.join(pprint(a) for a in o)) 37 return '[%s]' % (b', '.join(pprint(a, bprefix=bprefix) for a in o))
36 elif isinstance(o, dict): 38 elif isinstance(o, dict):
37 return '{%s}' % (b', '.join( 39 return '{%s}' % (b', '.join(
38 '%s: %s' % (pprint(k), pprint(v)) for k, v in sorted(o.items()))) 40 '%s: %s' % (pprint(k, bprefix=bprefix),
41 pprint(v, bprefix=bprefix))
42 for k, v in sorted(o.items())))
39 elif isinstance(o, bool): 43 elif isinstance(o, bool):
40 return b'True' if o else b'False' 44 return b'True' if o else b'False'
41 elif isinstance(o, int): 45 elif isinstance(o, int):
42 return '%d' % o 46 return '%d' % o
43 elif isinstance(o, float): 47 elif isinstance(o, float):