registry.py 509 B

1234567891011121314151617181920212223
  1. class Registry:
  2. def __init__(self, name):
  3. self.name = name
  4. self.name_to_fn = dict()
  5. def register_module(self, fn, name=None):
  6. module_name = name if name else fn.__name__
  7. self.name_to_fn[module_name] = fn
  8. return fn
  9. def __len__(self):
  10. return len(self.name_to_fn)
  11. def __contains__(self, name):
  12. return name in self.name_to_fn.keys()
  13. def get_module(self, name):
  14. if self.__contains__(name):
  15. return self.name_to_fn[name]
  16. else:
  17. raise ValueError('invalid module: {}'.format(name))