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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __docformat__ = 'restructuredtext en'
  5. __test__ = { }
  6. import cPickle as pickle
  7. from twisted.python import components
  8. from zope.interface import Interface, implements
  9.  
  10. try:
  11.     import numpy
  12. except ImportError:
  13.     pass
  14.  
  15. from IPython.kernel.error import SerializationError
  16.  
  17. class ISerialized(Interface):
  18.     
  19.     def getData():
  20.         pass
  21.  
  22.     
  23.     def getDataSize(units = 1e+06):
  24.         pass
  25.  
  26.     
  27.     def getTypeDescriptor():
  28.         pass
  29.  
  30.     
  31.     def getMetadata():
  32.         pass
  33.  
  34.  
  35.  
  36. class IUnSerialized(Interface):
  37.     
  38.     def getObject():
  39.         pass
  40.  
  41.  
  42.  
  43. class Serialized(object):
  44.     implements(ISerialized)
  45.     
  46.     def __init__(self, data, typeDescriptor, metadata = { }):
  47.         self.data = data
  48.         self.typeDescriptor = typeDescriptor
  49.         self.metadata = metadata
  50.  
  51.     
  52.     def getData(self):
  53.         return self.data
  54.  
  55.     
  56.     def getDataSize(self, units = 1e+06):
  57.         return len(self.data) / units
  58.  
  59.     
  60.     def getTypeDescriptor(self):
  61.         return self.typeDescriptor
  62.  
  63.     
  64.     def getMetadata(self):
  65.         return self.metadata
  66.  
  67.  
  68.  
  69. class UnSerialized(object):
  70.     implements(IUnSerialized)
  71.     
  72.     def __init__(self, obj):
  73.         self.obj = obj
  74.  
  75.     
  76.     def getObject(self):
  77.         return self.obj
  78.  
  79.  
  80.  
  81. class SerializeIt(object):
  82.     implements(ISerialized)
  83.     
  84.     def __init__(self, unSerialized):
  85.         self.data = None
  86.         self.obj = unSerialized.getObject()
  87.         if globals().has_key('numpy'):
  88.             if isinstance(self.obj, numpy.ndarray):
  89.                 if len(self.obj) == 0:
  90.                     raise SerializationError('You cannot send a length 0 array')
  91.                 len(self.obj) == 0
  92.                 self.obj = numpy.ascontiguousarray(self.obj, dtype = None)
  93.                 self.typeDescriptor = 'ndarray'
  94.                 self.metadata = {
  95.                     'shape': self.obj.shape,
  96.                     'dtype': self.obj.dtype.str }
  97.             else:
  98.                 self.typeDescriptor = 'pickle'
  99.                 self.metadata = { }
  100.         else:
  101.             self.typeDescriptor = 'pickle'
  102.             self.metadata = { }
  103.         self._generateData()
  104.  
  105.     
  106.     def _generateData(self):
  107.         if self.typeDescriptor == 'ndarray':
  108.             self.data = numpy.getbuffer(self.obj)
  109.         elif self.typeDescriptor == 'pickle':
  110.             self.data = pickle.dumps(self.obj, 2)
  111.         else:
  112.             raise SerializationError('Really wierd serialization error.')
  113.         del (self.typeDescriptor == 'ndarray').obj
  114.  
  115.     
  116.     def getData(self):
  117.         return self.data
  118.  
  119.     
  120.     def getDataSize(self, units = 1e+06):
  121.         return len(self.data) / units
  122.  
  123.     
  124.     def getTypeDescriptor(self):
  125.         return self.typeDescriptor
  126.  
  127.     
  128.     def getMetadata(self):
  129.         return self.metadata
  130.  
  131.  
  132.  
  133. class UnSerializeIt(UnSerialized):
  134.     implements(IUnSerialized)
  135.     
  136.     def __init__(self, serialized):
  137.         self.serialized = serialized
  138.  
  139.     
  140.     def getObject(self):
  141.         typeDescriptor = self.serialized.getTypeDescriptor()
  142.         if globals().has_key('numpy'):
  143.             if typeDescriptor == 'ndarray':
  144.                 result = numpy.frombuffer(self.serialized.getData(), dtype = self.serialized.metadata['dtype'])
  145.                 result.shape = self.serialized.metadata['shape']
  146.                 result = result.copy()
  147.             elif typeDescriptor == 'pickle':
  148.                 result = pickle.loads(self.serialized.getData())
  149.             else:
  150.                 raise SerializationError('Really wierd serialization error.')
  151.         typeDescriptor == 'ndarray'
  152.         if typeDescriptor == 'pickle':
  153.             result = pickle.loads(self.serialized.getData())
  154.         else:
  155.             raise SerializationError('Really wierd serialization error.')
  156.         return typeDescriptor == 'pickle'
  157.  
  158.  
  159. components.registerAdapter(UnSerializeIt, ISerialized, IUnSerialized)
  160. components.registerAdapter(SerializeIt, IUnSerialized, ISerialized)
  161.  
  162. def serialize(obj):
  163.     return ISerialized(UnSerialized(obj))
  164.  
  165.  
  166. def unserialize(serialized):
  167.     return IUnSerialized(serialized).getObject()
  168.  
  169.