diff options
Diffstat (limited to 'Lib/shelve.py')
-rw-r--r-- | Lib/shelve.py | 196 |
1 files changed, 98 insertions, 98 deletions
diff --git a/Lib/shelve.py b/Lib/shelve.py index a068536..952df16 100644 --- a/Lib/shelve.py +++ b/Lib/shelve.py @@ -31,127 +31,127 @@ or may not be necessary to flush changes to disk. # Try using cPickle and cStringIO if available. try: - from cPickle import Pickler, Unpickler + from cPickle import Pickler, Unpickler except ImportError: - from pickle import Pickler, Unpickler + from pickle import Pickler, Unpickler try: - from cStringIO import StringIO + from cStringIO import StringIO except ImportError: - from StringIO import StringIO + from StringIO import StringIO class Shelf: - """Base class for shelf implementations. - - This is initialized with a dictionary-like object. - See the module's __doc__ string for an overview of the interface. - """ - - def __init__(self, dict): - self.dict = dict - - def keys(self): - return self.dict.keys() - - def __len__(self): - return len(self.dict) - - def has_key(self, key): - return self.dict.has_key(key) - - def get(self, key, default=None): - if self.dict.has_key(key): - return self[key] - return default - - def __getitem__(self, key): - f = StringIO(self.dict[key]) - return Unpickler(f).load() - - def __setitem__(self, key, value): - f = StringIO() - p = Pickler(f) - p.dump(value) - self.dict[key] = f.getvalue() - - def __delitem__(self, key): - del self.dict[key] - - def close(self): - try: - self.dict.close() - except: - pass - self.dict = 0 - - def __del__(self): - self.close() - - def sync(self): - if hasattr(self.dict, 'sync'): - self.dict.sync() - + """Base class for shelf implementations. + + This is initialized with a dictionary-like object. + See the module's __doc__ string for an overview of the interface. + """ + + def __init__(self, dict): + self.dict = dict + + def keys(self): + return self.dict.keys() + + def __len__(self): + return len(self.dict) + + def has_key(self, key): + return self.dict.has_key(key) + + def get(self, key, default=None): + if self.dict.has_key(key): + return self[key] + return default + + def __getitem__(self, key): + f = StringIO(self.dict[key]) + return Unpickler(f).load() + + def __setitem__(self, key, value): + f = StringIO() + p = Pickler(f) + p.dump(value) + self.dict[key] = f.getvalue() + + def __delitem__(self, key): + del self.dict[key] + + def close(self): + try: + self.dict.close() + except: + pass + self.dict = 0 + + def __del__(self): + self.close() + + def sync(self): + if hasattr(self.dict, 'sync'): + self.dict.sync() + class BsdDbShelf(Shelf): - """Shelf implementation using the "BSD" db interface. + """Shelf implementation using the "BSD" db interface. - This adds methods first(), next(), previous(), last() and - set_location() that have no counterpart in [g]dbm databases. + This adds methods first(), next(), previous(), last() and + set_location() that have no counterpart in [g]dbm databases. - The actual database must be opened using one of the "bsddb" - modules "open" routines (i.e. bsddb.hashopen, bsddb.btopen or - bsddb.rnopen) and passed to the constructor. + The actual database must be opened using one of the "bsddb" + modules "open" routines (i.e. bsddb.hashopen, bsddb.btopen or + bsddb.rnopen) and passed to the constructor. - See the module's __doc__ string for an overview of the interface. - """ + See the module's __doc__ string for an overview of the interface. + """ - def __init__(self, dict): - Shelf.__init__(self, dict) + def __init__(self, dict): + Shelf.__init__(self, dict) - def set_location(self, key): - (key, value) = self.dict.set_location(key) - f = StringIO(value) - return (key, Unpickler(f).load()) + def set_location(self, key): + (key, value) = self.dict.set_location(key) + f = StringIO(value) + return (key, Unpickler(f).load()) - def next(self): - (key, value) = self.dict.next() - f = StringIO(value) - return (key, Unpickler(f).load()) + def next(self): + (key, value) = self.dict.next() + f = StringIO(value) + return (key, Unpickler(f).load()) - def previous(self): - (key, value) = self.dict.previous() - f = StringIO(value) - return (key, Unpickler(f).load()) + def previous(self): + (key, value) = self.dict.previous() + f = StringIO(value) + return (key, Unpickler(f).load()) - def first(self): - (key, value) = self.dict.first() - f = StringIO(value) - return (key, Unpickler(f).load()) + def first(self): + (key, value) = self.dict.first() + f = StringIO(value) + return (key, Unpickler(f).load()) - def last(self): - (key, value) = self.dict.last() - f = StringIO(value) - return (key, Unpickler(f).load()) + def last(self): + (key, value) = self.dict.last() + f = StringIO(value) + return (key, Unpickler(f).load()) class DbfilenameShelf(Shelf): - """Shelf implementation using the "anydbm" generic dbm interface. + """Shelf implementation using the "anydbm" generic dbm interface. + + This is initialized with the filename for the dbm database. + See the module's __doc__ string for an overview of the interface. + """ - This is initialized with the filename for the dbm database. - See the module's __doc__ string for an overview of the interface. - """ - - def __init__(self, filename, flag='c'): - import anydbm - Shelf.__init__(self, anydbm.open(filename, flag)) + def __init__(self, filename, flag='c'): + import anydbm + Shelf.__init__(self, anydbm.open(filename, flag)) def open(filename, flag='c'): - """Open a persistent dictionary for reading and writing. + """Open a persistent dictionary for reading and writing. + + Argument is the filename for the dbm database. + See the module's __doc__ string for an overview of the interface. + """ - Argument is the filename for the dbm database. - See the module's __doc__ string for an overview of the interface. - """ - - return DbfilenameShelf(filename, flag) + return DbfilenameShelf(filename, flag) |