"""Manage shelves of pickled objects.""" import pickle import StringIO class Shelf: def __init__(self, dict): self.dict = dict def keys(self): return self.dict.keys() def __len__(self): return self.dict.len() def has_key(self, key): return self.dict.has_key(key) def __getitem__(self, key): return pickle.Unpickler(StringIO.StringIO(self.dict[key])).load() def __setitem__(self, key, value): f = StringIO.StringIO() p = pickle.Pickler(f) p.dump(value) self.dict[key] = f.getvalue() def __delitem__(self, key): del self.dict[key] def close(self): self.db.close() self.db = None class DbShelf(Shelf): def __init__(self, file): import anydbm Shelf.__init__(self, anydbm.open(file)) def open(file): return DbShelf(file)