registry.py 667 B

123456789101112131415161718192021
  1. class Registry(dict):
  2. """
  3. Central registry for registration of functionality. Once a store (key) is defined, it cannot be overwritten or
  4. deleted (although its value may be manipulated).
  5. """
  6. def __getitem__(self, key):
  7. try:
  8. return super().__getitem__(key)
  9. except KeyError:
  10. raise KeyError("Invalid store: {}".format(key))
  11. def __setitem__(self, key, value):
  12. if key in self:
  13. raise KeyError("Store already set: {}".format(key))
  14. super().__setitem__(key, value)
  15. def __delitem__(self, key):
  16. raise TypeError("Cannot delete stores from registry")
  17. registry = Registry()