2020-03-18 12:00:31 -04:00
|
|
|
class Registry(dict):
|
|
|
|
"""
|
|
|
|
Central registry for registration of functionality. Once a store (key) is defined, it cannot be overwritten or
|
|
|
|
deleted (although its value may be manipulated).
|
|
|
|
"""
|
|
|
|
def __getitem__(self, key):
|
|
|
|
try:
|
|
|
|
return super().__getitem__(key)
|
|
|
|
except KeyError:
|
2020-03-18 13:15:22 -04:00
|
|
|
raise KeyError("Invalid store: {}".format(key))
|
2020-03-18 12:00:31 -04:00
|
|
|
|
|
|
|
def __setitem__(self, key, value):
|
|
|
|
if key in self:
|
2020-03-18 13:15:22 -04:00
|
|
|
raise KeyError("Store already set: {}".format(key))
|
2020-03-18 12:00:31 -04:00
|
|
|
super().__setitem__(key, value)
|
|
|
|
|
|
|
|
def __delitem__(self, key):
|
2020-03-18 13:15:22 -04:00
|
|
|
raise TypeError("Cannot delete stores from registry")
|
2020-03-18 12:00:31 -04:00
|
|
|
|
|
|
|
|
|
|
|
registry = Registry()
|