thirdparty/google_appengine/lib/webob/webob/updatedict.py
author Lennard de Rijk <ljvderijk@gmail.com>
Tue, 17 Feb 2009 19:40:13 +0000
changeset 1381 2cfce3831fc6
parent 109 620f9b141567
permissions -rwxr-xr-x
Fixed style error. Patch by: Lennard de Rijk Reviewed by: to-be-reviewed

"""
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