[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