/_unsorted/core/.builtins/__builtins__.py

https://bitbucket.org/ericsnowcurrently/commonlib
Python | 20 lines | 14 code | 4 blank | 2 comment | 3 complexity | e56e9b18a6979f4541ea920b81e6d4a7 MD5 | raw file
  1. class WriteOnceDict(dict):
  2. """Override _handler to customize collision behavior."""
  3. def _handler(self, key, value):
  4. # warning.warn("...")
  5. raise KeyError("already set %s" % key)
  6. def _bypass(self, *args, **kwargs):
  7. super(type(self), self).update(*args, **kwargs)
  8. def update(self, other):
  9. if hasattr(other, "items"):
  10. other = other.items()
  11. for k, v in other:
  12. self[k] = v
  13. def __setitem__(self, key, value):
  14. if key in self:
  15. self._handler(key, value)
  16. super(type(self), self).__setitem__(key, value)