MCPcopy Create free account
hub / github.com/SegmentationBLWX/cssegmentation / BaseModuleBuilder

Class BaseModuleBuilder

csseg/modules/utils/modulebuilder.py:12–73  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10
11'''BaseModuleBuilder'''
12class 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):

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected