blob: b90e6412ecac6ea69f30d3ba4d24933faf8abb6f [file] [log] [blame]
Guido van Rossuma48061a1995-01-10 00:31:14 +00001"""Manage shelves of pickled objects."""
2
3import pickle
4import StringIO
5
6class Shelf:
7
8 def __init__(self, dict):
9 self.dict = dict
10
11 def keys(self):
12 return self.dict.keys()
13
14 def __len__(self):
15 return self.dict.len()
16
17 def has_key(self, key):
18 return self.dict.has_key(key)
19
20 def __getitem__(self, key):
21 return pickle.Unpickler(StringIO.StringIO(self.dict[key])).load()
22
23 def __setitem__(self, key, value):
24 f = StringIO.StringIO()
25 p = pickle.Pickler(f)
26 p.dump(value)
27 self.dict[key] = f.getvalue()
28
29 def __delitem__(self, key):
30 del self.dict[key]
31
32 def close(self):
33 self.db.close()
34 self.db = None
35
36class DbShelf(Shelf):
37
38 def __init__(self, file):
39 import anydbm
40 Shelf.__init__(self, anydbm.open(file))
41
42def open(file):
43 return DbShelf(file)