diff Lib/pprint.py @ 5336:746f687acfc1 legacy-trunk

_safe_repr(): Make the context parameter required; ok since it's only for internal use. Make sure the maxlevels and level parameters get passed to recursive invocations.
author Fred Drake <fdrake@acm.org>
date Wed, 16 Apr 1997 18:55:58 +0000
parents ee9275b0f5c8
children 166c2232921a
line wrap: on
line diff
--- a/Lib/pprint.py	Wed Apr 16 16:59:30 1997 +0000
+++ b/Lib/pprint.py	Wed Apr 16 18:55:58 1997 +0000
@@ -153,16 +153,13 @@
 	return _safe_repr(object, context, self.__depth, level)
 
 
-def _safe_repr(object, context=None, maxlevels=None, level=0):
+def _safe_repr(object, context, maxlevels=None, level=0):
     level = level + 1
     typ = type(object)
     if not (typ in (DictType, ListType, TupleType) and object):
 	return `object`
-    if context is None:
-	context = {}
-    else:
-	if context.has_key(id(object)):
-	    return `_Recursion(object)`
+    if context.has_key(id(object)):
+	return `_Recursion(object)`
     objid = id(object)
     context[objid] = 1
     if typ is DictType:
@@ -171,19 +168,21 @@
 	else:
 	    items = object.items()
 	    k, v = items[0]
-	    s = "{%s: %s" % (_safe_repr(k, context), _safe_repr(v, context))
+	    s = "{%s: %s" % (_safe_repr(k, context, maxlevels, level),
+			     _safe_repr(v, context, maxlevels, level))
 	    for k, v in items[1:]:
 		s = "%s, %s: %s" \
-		    % (s, _safe_repr(k, context), _safe_repr(v, context))
+		    % (s, _safe_repr(k, context, maxlevels, level),
+		       _safe_repr(v, context, maxlevels, level))
 	    s = s + "}"
     else:
 	s, term = (typ is ListType) and ('[', ']') or ('(', ')')
 	if maxlevels and level >= maxlevels:
 	    s = s + "..."
 	else:
-	    s = s + _safe_repr(object[0], context)
+	    s = s + _safe_repr(object[0], context, maxlevels, level)
 	    for ent in object[1:]:
-		s = "%s, %s" % (s, _safe_repr(ent, context))
+		s = "%s, %s" % (s, _safe_repr(ent, context, maxlevels, level))
 	s = s + term
     del context[objid]
     return s