diff options
author | Fred Drake <fdrake@acm.org> | 2000-02-10 17:17:14 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2000-02-10 17:17:14 (GMT) |
commit | 13a2c279c504ae58c20baba5f0b3d1d6c0a85ed3 (patch) | |
tree | 6942aa091af39fe239eff68b0bf1292eea26da29 /Lib/shelve.py | |
parent | 857c4c36b962c6e74559e045c7fb43177dd5bcea (diff) | |
download | cpython-13a2c279c504ae58c20baba5f0b3d1d6c0a85ed3.zip cpython-13a2c279c504ae58c20baba5f0b3d1d6c0a85ed3.tar.gz cpython-13a2c279c504ae58c20baba5f0b3d1d6c0a85ed3.tar.bz2 |
Untabify to pass the -tt test.
Diffstat (limited to 'Lib/shelve.py')
-rw-r--r-- | Lib/shelve.py | 218 |
1 files changed, 109 insertions, 109 deletions
diff --git a/Lib/shelve.py b/Lib/shelve.py index 807a0bb..a068536 100644 --- a/Lib/shelve.py +++ b/Lib/shelve.py @@ -10,19 +10,19 @@ are ordinary strings. To summarize the interface (key is a string, data is an arbitrary object): - import shelve - d = shelve.open(filename) # open, with (g)dbm filename -- no suffix + import shelve + d = shelve.open(filename) # open, with (g)dbm filename -- no suffix - d[key] = data # store data at key (overwrites old data if - # using an existing key) - data = d[key] # retrieve data at key (raise KeyError if no - # such key) - del d[key] # delete data stored at key (raises KeyError - # if no such key) - flag = d.has_key(key) # true if the key exists - list = d.keys() # a list of all existing keys (slow!) + d[key] = data # store data at key (overwrites old data if + # using an existing key) + data = d[key] # retrieve data at key (raise KeyError if no + # such key) + del d[key] # delete data stored at key (raises KeyError + # if no such key) + flag = d.has_key(key) # true if the key exists + list = d.keys() # a list of all existing keys (slow!) - d.close() # close it + d.close() # close it Dependent on the implementation, closing a persistent dictionary may or may not be necessary to flush changes to disk. @@ -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. - """ - - def __init__(self, filename, flag='c'): - import anydbm - Shelf.__init__(self, anydbm.open(filename, flag)) + 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 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. - """ - - return DbfilenameShelf(filename, flag) + Argument is the filename for the dbm database. + See the module's __doc__ string for an overview of the interface. + """ + + return DbfilenameShelf(filename, flag) |