feat: initial HSAP platform
Huaxu Sentinel Active Safety Platform with embedded algorithm code, Docker Compose setup, and vendored dataset scaffolds for clone-and-run. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
class SimpleRegistry(object):
|
||||
# A simple portable registry that can register and init/run class/function, inspired by
|
||||
# mmcv's Registry
|
||||
# fvcore's Registry
|
||||
# Implementing this ourselves to retain the possibility of not using above complex packages.
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._map = {}
|
||||
|
||||
def register(self):
|
||||
# Suppose to work as @name.register()
|
||||
def decorator(function_or_class):
|
||||
name = function_or_class.__name__
|
||||
# Register instead of execute
|
||||
if name in self._map.keys():
|
||||
raise ValueError('Conflicting name for registered Function or Class {}'.format(name))
|
||||
self._map[name] = function_or_class
|
||||
return function_or_class
|
||||
|
||||
return decorator
|
||||
|
||||
def get(self, name):
|
||||
res = self._map.get(name)
|
||||
if res is None:
|
||||
raise KeyError('Class or Function {} not found in registry!'.format(name))
|
||||
|
||||
return res
|
||||
|
||||
def from_dict(self, dict_params, **kwargs):
|
||||
if dict_params is None:
|
||||
return None
|
||||
dict_params_ = dict_params.copy()
|
||||
dict_params_.update(kwargs)
|
||||
name = dict_params_.pop('name')
|
||||
function_or_class = self.get(name)
|
||||
|
||||
try:
|
||||
return function_or_class(**dict_params_)
|
||||
except Exception as e:
|
||||
print('Build from dict error in function or class: {}\nIn Python: {}'.format(name, function_or_class))
|
||||
raise e
|
||||
Reference in New Issue
Block a user