]> granicus.if.org Git - python/commitdiff
Issue #18682: Optimized pprint functions for builtin scalar types.
authorSerhiy Storchaka <storchaka@gmail.com>
Sat, 16 May 2015 18:38:05 +0000 (21:38 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Sat, 16 May 2015 18:38:05 +0000 (21:38 +0300)
Lib/pprint.py
Misc/NEWS

index e084dc62fe1cef5e1f736ec6aea575c3e6179939..87649b48cdfab47f93203d7864d11e70a8a11364 100644 (file)
@@ -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>"
index a00d9677511ceb3d4489efc8d04e4f19c8fa24c0..1b23a9867aafaae5bc08c49dc986c7aeef14718e 100644 (file)
--- 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.