thirdparty/google_appengine/lib/webob/webob/updatedict.py
author Sverre Rabbelier <srabbelier@gmail.com>
Sun, 23 Nov 2008 00:44:13 +0000
changeset 576 6614d3f545b7
parent 109 620f9b141567
permissions -rwxr-xr-x
Fixed spurious 'Invite Host' button in 'create host' Patch by: Sverre Rabbelier

"""
Dict that has a callback on all updates
"""

class UpdateDict(dict):
    updated = None
    updated_args = None
    def _updated(self):
        """
        Assign to new_dict.updated to track updates
        """
        updated = self.updated
        if updated is not None:
            args = self.updated_args
            if args is None:
                args = (self,)
            updated(*args)
    def __setitem__(self, key, item):
        dict.__setitem__(self, key, item)
        self._updated()
    def __delitem__(self, key):
        dict.__delitem__(self, key)
        self._updated()
    def clear(self):
        dict.clear(self)
        self._updated()
    def update(self, *args, **kw):
        dict.update(self, *args, **kw)
        self._updated()
    def setdefault(self, key, failobj=None):
        dict.setdefault(self, key, failobj)
        self._updated()
    def pop(self):
        v = dict.pop(self)
        self._updated()
        return v
    def popitem(self):
        v = dict.popitem(self)
        self._updated()
        return v