[Python-checkins] python/dist/src/Lib repr.py,1.16,1.17
rhettinger at users.sourceforge.net
rhettinger at users.sourceforge.net
Fri May 21 06:00:18 EDT 2004
Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11427
Modified Files:
repr.py
Log Message:
* Updated repr.py to handle set() and frozenset().
* Factored out common code to a single private function.
* Use str.join() instead of + concatenation
* Loop over elements directly instead of using indexing
* Use % operator for formatting
Index: repr.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/repr.py,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** repr.py 12 Feb 2004 17:35:07 -0000 1.16
--- repr.py 21 May 2004 10:00:14 -0000 1.17
***************
*** 4,9 ****
--- 4,11 ----
import __builtin__
+ from itertools import islice
class Repr:
+
def __init__(self):
self.maxlevel = 6
***************
*** 12,20 ****
--- 14,26 ----
self.maxarray = 5
self.maxdict = 4
+ self.maxset = 6
+ self.maxfrozenset = 6
self.maxstring = 30
self.maxlong = 40
self.maxother = 20
+
def repr(self, x):
return self.repr1(x, self.maxlevel)
+
def repr1(self, x, level):
typename = type(x).__name__
***************
*** 31,71 ****
s = s[:i] + '...' + s[len(s)-j:]
return s
! def repr_tuple(self, x, level):
n = len(x)
! if n == 0: return '()'
! if level <= 0: return '(...)'
! s = ''
! for i in range(min(n, self.maxtuple)):
! if s: s = s + ', '
! s = s + self.repr1(x[i], level-1)
! if n > self.maxtuple: s = s + ', ...'
! elif n == 1: s = s + ','
! return '(' + s + ')'
def repr_list(self, x, level):
! n = len(x)
! if n == 0: return '[]'
! if level <= 0: return '[...]'
! s = ''
! for i in range(min(n, self.maxlist)):
! if s: s = s + ', '
! s = s + self.repr1(x[i], level-1)
! if n > self.maxlist: s = s + ', ...'
! return '[' + s + ']'
def repr_array(self, x, level):
- n = len(x)
header = "array('%s', [" % x.typecode
! if n == 0:
! return header + "])"
! if level <= 0:
! return header + "...])"
! s = ''
! for i in range(min(n, self.maxarray)):
! if s:
! s += ', '
! s += self.repr1(x[i], level-1)
! if n > self.maxarray:
! s += ', ...'
! return header + s + "])"
def repr_dict(self, x, level):
--- 37,70 ----
s = s[:i] + '...' + s[len(s)-j:]
return s
!
! def _repr_iterable(self, x, level, left, right, maxiter, final=''):
n = len(x)
! if level <= 0 and n:
! s = '...'
! else:
! newlevel = level - 1
! repr1 = self.repr1
! pieces = [repr1(elem, newlevel) for elem in islice(x, maxiter)]
! if n > maxiter: pieces.append('...')
! s = ', '.join(pieces)
! if n == 1 and final: s += final
! return '%s%s%s' % (left, s, right)
!
! def repr_tuple(self, x, level):
! return self._repr_iterable(x, level, '(', ')', self.maxlist, ',')
!
def repr_list(self, x, level):
! return self._repr_iterable(x, level, '[', ']', self.maxlist)
def repr_array(self, x, level):
header = "array('%s', [" % x.typecode
! return self._repr_iterable(x, level, header, '])', self.maxarray)
!
! def repr_set(self, x, level):
! return self._repr_iterable(x, level, 'set([', '])', self.maxset)
!
! def repr_frozenset(self, x, level):
! return self._repr_iterable(x, level, 'frozenset([', '])',
! self.maxfrozenset)
def repr_dict(self, x, level):
***************
*** 73,86 ****
if n == 0: return '{}'
if level <= 0: return '{...}'
! s = ''
! keys = x.keys()
! keys.sort()
! for i in range(min(n, self.maxdict)):
! if s: s = s + ', '
! key = keys[i]
! s = s + self.repr1(key, level-1)
! s = s + ': ' + self.repr1(x[key], level-1)
! if n > self.maxdict: s = s + ', ...'
! return '{' + s + '}'
def repr_str(self, x, level):
s = __builtin__.repr(x[:self.maxstring])
--- 72,86 ----
if n == 0: return '{}'
if level <= 0: return '{...}'
! newlevel = level - 1
! repr1 = self.repr1
! pieces = []
! for key in islice(sorted(x), self.maxdict):
! keyrepr = repr1(key, newlevel)
! valrepr = repr1(x[key], newlevel)
! pieces.append('%s: %s' % (keyrepr, valrepr))
! if n > self.maxdict: pieces.append('...')
! s = ', '.join(pieces)
! return '{%s}' % (s,)
!
def repr_str(self, x, level):
s = __builtin__.repr(x[:self.maxstring])
***************
*** 91,94 ****
--- 91,95 ----
s = s[:i] + '...' + s[len(s)-j:]
return s
+
def repr_long(self, x, level):
s = __builtin__.repr(x) # XXX Hope this isn't too slow...
***************
*** 98,101 ****
--- 99,103 ----
s = s[:i] + '...' + s[len(s)-j:]
return s
+
def repr_instance(self, x, level):
try:
More information about the Python-checkins
mailing list