| 10 | |
| 11 | '''BaseModuleBuilder''' |
| 12 | class BaseModuleBuilder(): |
| 13 | REGISTERED_MODULES = collections.OrderedDict() |
| 14 | def __init__(self, requires_register_modules=None, requires_renew_modules=None): |
| 15 | if requires_register_modules is not None and isinstance(requires_register_modules, (dict, collections.OrderedDict)): |
| 16 | for name, module in requires_register_modules.items(): |
| 17 | self.register(name, module) |
| 18 | if requires_renew_modules is not None and isinstance(requires_renew_modules, (dict, collections.OrderedDict)): |
| 19 | for name, module in requires_renew_modules.items(): |
| 20 | self.renew(name, module) |
| 21 | self.validate() |
| 22 | '''build''' |
| 23 | def build(self, module_cfg): |
| 24 | module_cfg = copy.deepcopy(module_cfg) |
| 25 | module_type = module_cfg.pop('type') |
| 26 | module = self.REGISTERED_MODULES[module_type](**module_cfg) |
| 27 | return module |
| 28 | '''register''' |
| 29 | def register(self, name, module): |
| 30 | assert callable(module) |
| 31 | assert name not in self.REGISTERED_MODULES |
| 32 | self.REGISTERED_MODULES[name] = module |
| 33 | '''renew''' |
| 34 | def renew(self, name, module): |
| 35 | assert callable(module) |
| 36 | assert name in self.REGISTERED_MODULES |
| 37 | self.REGISTERED_MODULES[name] = module |
| 38 | '''validate''' |
| 39 | def validate(self): |
| 40 | for _, module in self.REGISTERED_MODULES.items(): |
| 41 | assert callable(module) |
| 42 | '''delete''' |
| 43 | def delete(self, name): |
| 44 | assert name in self.REGISTERED_MODULES |
| 45 | del self.REGISTERED_MODULES[name] |
| 46 | '''pop''' |
| 47 | def pop(self, name): |
| 48 | assert name in self.REGISTERED_MODULES |
| 49 | module = self.REGISTERED_MODULES.pop(name) |
| 50 | return module |
| 51 | '''get''' |
| 52 | def get(self, name): |
| 53 | assert name in self.REGISTERED_MODULES |
| 54 | module = self.REGISTERED_MODULES.get(name) |
| 55 | return module |
| 56 | '''items''' |
| 57 | def items(self): |
| 58 | return self.REGISTERED_MODULES.items() |
| 59 | '''clear''' |
| 60 | def clear(self): |
| 61 | return self.REGISTERED_MODULES.clear() |
| 62 | '''values''' |
| 63 | def values(self): |
| 64 | return self.REGISTERED_MODULES.values() |
| 65 | '''keys''' |
| 66 | def keys(self): |
| 67 | return self.REGISTERED_MODULES.keys() |
| 68 | '''copy''' |
| 69 | def copy(self): |
nothing calls this directly
no outgoing calls
no test coverage detected