/lib/galaxy/util/aliaspickler.py

https://bitbucket.org/cistrome/cistrome-harvard/ · Python · 23 lines · 21 code · 2 blank · 0 comment · 0 complexity · 28735b06888eddb6810de6f5b8f70202 MD5 · raw file

  1. import pickle
  2. from cStringIO import StringIO
  3. class AliasUnpickler( pickle.Unpickler ):
  4. def __init__( self, aliases, *args, **kw):
  5. pickle.Unpickler.__init__( self, *args, **kw )
  6. self.aliases = aliases
  7. def find_class( self, module, name ):
  8. module, name = self.aliases.get((module,name), (module,name))
  9. return pickle.Unpickler.find_class( self, module, name )
  10. class AliasPickleModule( object ):
  11. def __init__( self, aliases ):
  12. self.aliases = aliases
  13. def dump( self, obj, fileobj, protocol=0):
  14. return pickle.dump( obj, fileobj, protocol )
  15. def dumps( self, obj, protocol=0 ):
  16. return pickle.dumps( obj, protocol )
  17. def load( self, fileobj ):
  18. return AliasUnpickler( self.aliases, fileobj ).load()
  19. def loads( self, string ):
  20. fileobj = StringIO( string )
  21. return AliasUnpickler( self.aliases, fileobj ).load()