Package gozerbot :: Module pdol
[hide private]
[frames] | no frames]

Source Code for Module gozerbot.pdol

 1  # gozerbot/pdol.py 
 2  # 
 3  # 
 4   
 5  """ pickled dict of lists """ 
 6   
 7  __copyright__ = 'this file is in the public domain' 
 8   
 9  from gozerbot.persist import Persist 
10    
11 -class Pdol(Persist):
12 13 """ pickled dict of lists """ 14
15 - def __init__(self, fname):
16 Persist.__init__(self, fname) 17 if not self.data: 18 self.data = {}
19
20 - def __iter__(self, name):
21 return self.data[name].__iter__()
22
23 - def __getitem__(self, item):
24 if self.data.has_key(item): 25 return self.data[item]
26
27 - def __delitem__(self, item):
28 if self.data.has_key(item): 29 self.data.__delitem__(item) 30 return 1
31
32 - def __setitem__(self, item, what):
33 if self.data.has_key(item): 34 self.data[item].append(what) 35 else: 36 self.data[item] = [what] 37 return 1
38
39 - def add(self, item, what):
40 """ add what to items list """ 41 return self.__setitem__(item, what)
42
43 - def adduniq(self, item, what):
44 """ add what to items list if item not yet added """ 45 if not self.data.has_key(item): 46 self.new(item) 47 if what not in self.data[item]: 48 return self.__setitem__(item, what)
49
50 - def get(self, item):
51 """ get items list """ 52 return self.__getitem__(item)
53
54 - def new(self, what):
55 """ reset list of what """ 56 self.data[what] = []
57
58 - def delete(self, item, what):
59 """ remove what from item's list """ 60 del self.data[item][what]
61
62 - def extend(self, item, what):
63 if not self.data.has_key(item): 64 self.new(item) 65 self.data[item].extend(what)
66
67 - def remove(self, item, what):
68 try: 69 self.data[item].remove(what) 70 return 1 71 except (ValueError, KeyError): 72 return 0
73