summaryrefslogtreecommitdiffstats
path: root/Lib/pprint.py
diff options
context:
space:
mode:
authorsblondon <sblondon@users.noreply.github.com>2021-03-24 08:23:20 (GMT)
committerGitHub <noreply@github.com>2021-03-24 08:23:20 (GMT)
commit3ba3d513b1e3c63d09cb798b982a9e6c369cea4c (patch)
tree22b40601f7e0464896a42a82bf7146b943830866 /Lib/pprint.py
parenta02683ac38183fa3a45c32319dfd329c5e622f0e (diff)
downloadcpython-3ba3d513b1e3c63d09cb798b982a9e6c369cea4c.zip
cpython-3ba3d513b1e3c63d09cb798b982a9e6c369cea4c.tar.gz
cpython-3ba3d513b1e3c63d09cb798b982a9e6c369cea4c.tar.bz2
bpo-42914: add a pprint underscore_numbers option (GH-24864)
pprint() gains a new boolean underscore_numbers kwarg to emit integers with thousands separated by an underscore character for improved readability (for example 1_000_000 instead of 1000000).
Diffstat (limited to 'Lib/pprint.py')
-rw-r--r--Lib/pprint.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/Lib/pprint.py b/Lib/pprint.py
index a8af50e..b45cfdd 100644
--- a/Lib/pprint.py
+++ b/Lib/pprint.py
@@ -45,18 +45,19 @@ __all__ = ["pprint","pformat","isreadable","isrecursive","saferepr",
def pprint(object, stream=None, indent=1, width=80, depth=None, *,
- compact=False, sort_dicts=True):
+ compact=False, sort_dicts=True, underscore_numbers=False):
"""Pretty-print a Python object to a stream [default is sys.stdout]."""
printer = PrettyPrinter(
stream=stream, indent=indent, width=width, depth=depth,
- compact=compact, sort_dicts=sort_dicts)
+ compact=compact, sort_dicts=sort_dicts, underscore_numbers=False)
printer.pprint(object)
def pformat(object, indent=1, width=80, depth=None, *,
- compact=False, sort_dicts=True):
+ compact=False, sort_dicts=True, underscore_numbers=False):
"""Format a Python object into a pretty-printed representation."""
return PrettyPrinter(indent=indent, width=width, depth=depth,
- compact=compact, sort_dicts=sort_dicts).pformat(object)
+ compact=compact, sort_dicts=sort_dicts,
+ underscore_numbers=underscore_numbers).pformat(object)
def pp(object, *args, sort_dicts=False, **kwargs):
"""Pretty-print a Python object"""
@@ -102,7 +103,7 @@ def _safe_tuple(t):
class PrettyPrinter:
def __init__(self, indent=1, width=80, depth=None, stream=None, *,
- compact=False, sort_dicts=True):
+ compact=False, sort_dicts=True, underscore_numbers=False):
"""Handle pretty printing operations onto a stream using a set of
configured parameters.
@@ -143,6 +144,7 @@ class PrettyPrinter:
self._stream = _sys.stdout
self._compact = bool(compact)
self._sort_dicts = sort_dicts
+ self._underscore_numbers = underscore_numbers
def pprint(self, object):
self._format(object, self._stream, 0, 0, {}, 0)
@@ -525,6 +527,13 @@ class PrettyPrinter:
return repr(object), True, False
r = getattr(typ, "__repr__", None)
+
+ if issubclass(typ, int) and r is int.__repr__:
+ if self._underscore_numbers:
+ return f"{object:_d}", True, False
+ else:
+ return repr(object), True, False
+
if issubclass(typ, dict) and r is dict.__repr__:
if not object:
return "{}", True, False
@@ -592,7 +601,7 @@ class PrettyPrinter:
rep = repr(object)
return rep, (rep and not rep.startswith('<')), False
-_builtin_scalars = frozenset({str, bytes, bytearray, int, float, complex,
+_builtin_scalars = frozenset({str, bytes, bytearray, float, complex,
bool, type(None)})
def _recursion(object):