home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.3.4.exe / Apache2 / python / repr.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2004-05-14  |  5.6 KB  |  175 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.3)
  3.  
  4. '''Redo the `...` (representation) but with limits on most sizes.'''
  5. __all__ = [
  6.     'Repr',
  7.     'repr']
  8. import sys
  9.  
  10. class Repr:
  11.     
  12.     def __init__(self):
  13.         self.maxlevel = 6
  14.         self.maxtuple = 6
  15.         self.maxlist = 6
  16.         self.maxarray = 5
  17.         self.maxdict = 4
  18.         self.maxstring = 30
  19.         self.maxlong = 40
  20.         self.maxother = 20
  21.  
  22.     
  23.     def repr(self, x):
  24.         return self.repr1(x, self.maxlevel)
  25.  
  26.     
  27.     def repr1(self, x, level):
  28.         typename = type(x).__name__
  29.         if ' ' in typename:
  30.             parts = typename.split()
  31.             typename = '_'.join(parts)
  32.         
  33.         if hasattr(self, 'repr_' + typename):
  34.             return getattr(self, 'repr_' + typename)(x, level)
  35.         else:
  36.             s = `x`
  37.             if len(s) > self.maxother:
  38.                 i = max(0, (self.maxother - 3) // 2)
  39.                 j = max(0, self.maxother - 3 - i)
  40.                 s = s[:i] + '...' + s[len(s) - j:]
  41.             
  42.             return s
  43.  
  44.     
  45.     def repr_tuple(self, x, level):
  46.         n = len(x)
  47.         if n == 0:
  48.             return '()'
  49.         
  50.         if level <= 0:
  51.             return '(...)'
  52.         
  53.         s = ''
  54.         for i in range(min(n, self.maxtuple)):
  55.             if s:
  56.                 s = s + ', '
  57.             
  58.             s = s + self.repr1(x[i], level - 1)
  59.         
  60.         if n > self.maxtuple:
  61.             s = s + ', ...'
  62.         elif n == 1:
  63.             s = s + ','
  64.         
  65.         return '(' + s + ')'
  66.  
  67.     
  68.     def repr_list(self, x, level):
  69.         n = len(x)
  70.         if n == 0:
  71.             return '[]'
  72.         
  73.         if level <= 0:
  74.             return '[...]'
  75.         
  76.         s = ''
  77.         for i in range(min(n, self.maxlist)):
  78.             if s:
  79.                 s = s + ', '
  80.             
  81.             s = s + self.repr1(x[i], level - 1)
  82.         
  83.         if n > self.maxlist:
  84.             s = s + ', ...'
  85.         
  86.         return '[' + s + ']'
  87.  
  88.     
  89.     def repr_array(self, x, level):
  90.         n = len(x)
  91.         header = "array('%s', [" % x.typecode
  92.         if n == 0:
  93.             return header + '])'
  94.         
  95.         if level <= 0:
  96.             return header + '...])'
  97.         
  98.         s = ''
  99.         for i in range(min(n, self.maxarray)):
  100.             if s:
  101.                 s += ', '
  102.             
  103.             s += self.repr1(x[i], level - 1)
  104.         
  105.         if n > self.maxarray:
  106.             s += ', ...'
  107.         
  108.         return header + s + '])'
  109.  
  110.     
  111.     def repr_dict(self, x, level):
  112.         n = len(x)
  113.         if n == 0:
  114.             return '{}'
  115.         
  116.         if level <= 0:
  117.             return '{...}'
  118.         
  119.         s = ''
  120.         keys = x.keys()
  121.         keys.sort()
  122.         for i in range(min(n, self.maxdict)):
  123.             if s:
  124.                 s = s + ', '
  125.             
  126.             key = keys[i]
  127.             s = s + self.repr1(key, level - 1)
  128.             s = s + ': ' + self.repr1(x[key], level - 1)
  129.         
  130.         if n > self.maxdict:
  131.             s = s + ', ...'
  132.         
  133.         return '{' + s + '}'
  134.  
  135.     
  136.     def repr_str(self, x, level):
  137.         s = `x[:self.maxstring]`
  138.         if len(s) > self.maxstring:
  139.             i = max(0, (self.maxstring - 3) // 2)
  140.             j = max(0, self.maxstring - 3 - i)
  141.             s = `x[:i] + x[len(x) - j:]`
  142.             s = s[:i] + '...' + s[len(s) - j:]
  143.         
  144.         return s
  145.  
  146.     
  147.     def repr_long(self, x, level):
  148.         s = `x`
  149.         if len(s) > self.maxlong:
  150.             i = max(0, (self.maxlong - 3) // 2)
  151.             j = max(0, self.maxlong - 3 - i)
  152.             s = s[:i] + '...' + s[len(s) - j:]
  153.         
  154.         return s
  155.  
  156.     
  157.     def repr_instance(self, x, level):
  158.         
  159.         try:
  160.             s = `x`
  161.         except:
  162.             MAX = 0x2L * sys.maxint + 1
  163.             return '<' + x.__class__.__name__ + ' instance at %x>' % (id(x) & MAX)
  164.  
  165.         if len(s) > self.maxstring:
  166.             i = max(0, (self.maxstring - 3) // 2)
  167.             j = max(0, self.maxstring - 3 - i)
  168.             s = s[:i] + '...' + s[len(s) - j:]
  169.         
  170.         return s
  171.  
  172.  
  173. aRepr = Repr()
  174. repr = aRepr.repr
  175.