Files
HSAP/algorithms/lane_ufld/code/pytorch-auto-drive-master/utils/registry.py
Chengfang Lu 7c43b44c57 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>
2026-05-25 16:59:59 +08:00

42 lines
1.4 KiB
Python

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