'Trap updates to ensure all key/value pairs are valid.
See the documentation for update on dict for usage details.
Raises:
ValidationError: if any of the specified keys are illegal or
values invalid.'

def update(self, other, **kwds):

    if (hasattr(other, 'keys') and callable(getattr(other, 'keys'))):
        newother = {}
        for k in other:
            newother[k] = self.GetValidator(k)(other[k], k)
    else:
        newother = [(k, self.GetValidator(k)(v, k)) for (k, v) in other]
    newkwds = {}
    for k in kwds:
        newkwds[k] = self.GetValidator(k)(kwds[k], k)
    dict.update(self, newother, **newkwds)
