summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-05-16 18:38:05 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-05-16 18:38:05 (GMT)
commit8eb1f077c2be03f72ef31ddd2cfe805ffbfbd524 (patch)
tree088422d4680c76733272e64e703233a1b23af1a3
parent6d90fd5fd90df5f84618d9125737b0df3b6c9a14 (diff)
downloadcpython-8eb1f077c2be03f72ef31ddd2cfe805ffbfbd524.zip
cpython-8eb1f077c2be03f72ef31ddd2cfe805ffbfbd524.tar.gz
cpython-8eb1f077c2be03f72ef31ddd2cfe805ffbfbd524.tar.bz2
Issue #18682: Optimized pprint functions for builtin scalar types.
-rw-r--r--Lib/pprint.py22
-rw-r--r--Misc/NEWS2
2 files changed, 6 insertions, 18 deletions
diff --git a/Lib/pprint.py b/Lib/pprint.py
index e084dc6..87649b4 100644
--- a/Lib/pprint.py
+++ b/Lib/pprint.py
@@ -489,24 +489,8 @@ class PrettyPrinter:
def _safe_repr(object, context, maxlevels, level):
typ = type(object)
- if typ is str:
- if 'locale' not in _sys.modules:
- return repr(object), True, False
- if "'" in object and '"' not in object:
- closure = '"'
- quotes = {'"': '\\"'}
- else:
- closure = "'"
- quotes = {"'": "\\'"}
- qget = quotes.get
- sio = _StringIO()
- write = sio.write
- for char in object:
- if char.isalpha():
- write(char)
- else:
- write(qget(char, repr(char)[1:-1]))
- return ("%s%s%s" % (closure, sio.getvalue(), closure)), True, False
+ if typ in _builtin_scalars:
+ return repr(object), True, False
r = getattr(typ, "__repr__", None)
if issubclass(typ, dict) and r is dict.__repr__:
@@ -571,6 +555,8 @@ def _safe_repr(object, context, maxlevels, level):
rep = repr(object)
return rep, (rep and not rep.startswith('<')), False
+_builtin_scalars = frozenset({str, bytes, bytearray, int, float, complex,
+ bool, type(None)})
def _recursion(object):
return ("<Recursion on %s with id=%s>"
diff --git a/Misc/NEWS b/Misc/NEWS
index a00d967..1b23a98 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -47,6 +47,8 @@ Core and Builtins
Library
-------
+- Issue #18682: Optimized pprint functions for builtin scalar types.
+
- Issue #22027: smtplib now supports RFC 6531 (SMTPUTF8).
- Issue #23488: Random generator objects now consume 2x less memory on 64-bit.