~ubuntu-branches/ubuntu/utopic/gozerbot/utopic

« back to all changes in this revision

Viewing changes to debian/gozerbot/usr/lib/python2.5/site-packages/gozerbot/pdod.py

  • Committer: Bazaar Package Importer
  • Author(s): Jeremy Malcolm
  • Date: 2009-09-14 09:00:29 UTC
  • mfrom: (1.1.4 upstream) (3.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20090914090029-uval0ekt72kmklxw
Tags: 0.9.1.3-3
Changed dependency on python-setuptools to python-pkg-resources
(Closes: #546435) 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# gozerbot/pdod.py
2
 
#
3
 
#
4
 
 
5
 
""" pickled dicts of dicts """
6
 
 
7
 
__copyright__ = 'this file is in the public domain'
8
 
 
9
 
from gozerbot.persist import Persist
10
 
from gozerbot.generic import lockdec
11
 
import thread
12
 
 
13
 
pdodlock = thread.allocate_lock()
14
 
locked = lockdec(pdodlock)
15
 
 
16
 
class Pdod(Persist):
17
 
 
18
 
    """ pickled dicts of dicts """
19
 
 
20
 
    def __init__(self, filename):
21
 
        Persist.__init__(self, filename)
22
 
        if not self.data:
23
 
            self.data = {}
24
 
 
25
 
    def __getitem__(self, name):
26
 
        """ return item with name """
27
 
        if self.data.has_key(name):
28
 
            return self.data[name]
29
 
 
30
 
    @locked
31
 
    def save(self):
32
 
        Persist.save(self)
33
 
 
34
 
    @locked
35
 
    def __delitem__(self, name):
36
 
        """ delete name item """
37
 
        if self.data.has_key(name):
38
 
            return self.data.__delitem__(name)
39
 
 
40
 
    @locked
41
 
    def __setitem__(self, name, item):
42
 
        """ set name item """
43
 
        self.data[name] = item
44
 
 
45
 
    def __contains__(self, name):
46
 
        return self.data.__contains__(name)
47
 
 
48
 
    @locked
49
 
    def setdefault(self, name, default):
50
 
        """ set default of name """
51
 
        return self.data.setdefault(name, default)
52
 
 
53
 
    def has_key(self, name):
54
 
        """ has name key """
55
 
        return self.data.has_key(name)
56
 
 
57
 
    def has_key2(self, name1, name2):
58
 
        """ has [name1][name2] key """
59
 
        if self.data.has_key(name1):
60
 
            return self.data[name1].has_key(name2)
61
 
 
62
 
    def get(self, name1, name2):
63
 
        """ get data[name1][name2] """
64
 
        try:
65
 
            result = self.data[name1][name2]
66
 
            return result
67
 
        except KeyError:
68
 
            return None
69
 
 
70
 
    @locked
71
 
    def set(self, name1, name2, item):
72
 
        """ set name, name2 item """
73
 
        if not self.data.has_key(name1):
74
 
            self.data[name1] = {}
75
 
        self.data[name1][name2] = item