home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1415 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  4.4 KB  |  143 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
  6.  
  7. try:
  8.     from collections import OrderedDict
  9.     OrderedDict
  10. except ImportError:
  11.     from UserDict import DictMixin
  12.     
  13.     class OrderedDict(dict, DictMixin):
  14.         
  15.         def __init__(self, *args, **kwds):
  16.             if len(args) > 1:
  17.                 raise TypeError('expected at most 1 arguments, got %d' % len(args))
  18.             len(args) > 1
  19.             
  20.             try:
  21.                 self._OrderedDict__end
  22.             except AttributeError:
  23.                 self.clear()
  24.  
  25.             self.update(*args, **kwds)
  26.  
  27.         
  28.         def clear(self):
  29.             self._OrderedDict__end = end = []
  30.             end += [
  31.                 None,
  32.                 end,
  33.                 end]
  34.             self._OrderedDict__map = { }
  35.             dict.clear(self)
  36.  
  37.         
  38.         def __setitem__(self, key, value):
  39.             if key not in self:
  40.                 end = self._OrderedDict__end
  41.                 curr = end[1]
  42.                 curr[2] = end[1] = self._OrderedDict__map[key] = [
  43.                     key,
  44.                     curr,
  45.                     end]
  46.             
  47.             dict.__setitem__(self, key, value)
  48.  
  49.         
  50.         def __delitem__(self, key):
  51.             dict.__delitem__(self, key)
  52.             (key, prev, next) = self._OrderedDict__map.pop(key)
  53.             prev[2] = next
  54.             next[1] = prev
  55.  
  56.         
  57.         def __iter__(self):
  58.             end = self._OrderedDict__end
  59.             curr = end[2]
  60.             while curr is not end:
  61.                 yield curr[0]
  62.                 curr = curr[2]
  63.  
  64.         
  65.         def __reversed__(self):
  66.             end = self._OrderedDict__end
  67.             curr = end[1]
  68.             while curr is not end:
  69.                 yield curr[0]
  70.                 curr = curr[1]
  71.  
  72.         
  73.         def popitem(self, last = True):
  74.             if not self:
  75.                 raise KeyError('dictionary is empty')
  76.             self
  77.             if last:
  78.                 key = reversed(self).next()
  79.             else:
  80.                 key = iter(self).next()
  81.             value = self.pop(key)
  82.             return (key, value)
  83.  
  84.         
  85.         def __reduce__(self):
  86.             items = [ [
  87.                 k,
  88.                 self[k]] for k in self ]
  89.             tmp = (self._OrderedDict__map, self._OrderedDict__end)
  90.             del self._OrderedDict__map
  91.             del self._OrderedDict__end
  92.             inst_dict = vars(self).copy()
  93.             (self._OrderedDict__map, self._OrderedDict__end) = tmp
  94.             if inst_dict:
  95.                 return (self.__class__, (items,), inst_dict)
  96.             return (self.__class__, (items,))
  97.  
  98.         
  99.         def keys(self):
  100.             return list(self)
  101.  
  102.         setdefault = DictMixin.setdefault
  103.         update = DictMixin.update
  104.         pop = DictMixin.pop
  105.         values = DictMixin.values
  106.         items = DictMixin.items
  107.         iterkeys = DictMixin.iterkeys
  108.         itervalues = DictMixin.itervalues
  109.         iteritems = DictMixin.iteritems
  110.         
  111.         def __repr__(self):
  112.             if not self:
  113.                 return '%s()' % (self.__class__.__name__,)
  114.             return '%s(%r)' % (self.__class__.__name__, self.items())
  115.  
  116.         
  117.         def copy(self):
  118.             return self.__class__(self)
  119.  
  120.         
  121.         def fromkeys(cls, iterable, value = None):
  122.             d = cls()
  123.             for key in iterable:
  124.                 d[key] = value
  125.             
  126.             return d
  127.  
  128.         fromkeys = classmethod(fromkeys)
  129.         
  130.         def __eq__(self, other):
  131.             if isinstance(other, OrderedDict):
  132.                 if len(self) == len(other):
  133.                     pass
  134.                 return self.items() == other.items()
  135.             return dict.__eq__(self, other)
  136.  
  137.         
  138.         def __ne__(self, other):
  139.             return not (self == other)
  140.  
  141.  
  142.  
  143.