diff --git a/mmengine/registry/build_functions.py b/mmengine/registry/build_functions.py index 246e077efba301feb10839c669ccf85858ad34ca..be79dd269a3f3c704be2796807cea081513fd12c 100644 --- a/mmengine/registry/build_functions.py +++ b/mmengine/registry/build_functions.py @@ -114,7 +114,8 @@ def build_from_cfg( # If `obj_cls` inherits from `ManagerMixin`, it should be # instantiated by `ManagerMixin.get_instance` to ensure that it # can be accessed globally. - if issubclass(obj_cls, ManagerMixin): # type: ignore + if inspect.isclass(obj_cls) and \ + issubclass(obj_cls, ManagerMixin): # type: ignore obj = obj_cls.get_instance(**args) # type: ignore else: obj = obj_cls(**args) # type: ignore diff --git a/tests/test_registry/test_registry.py b/tests/test_registry/test_registry.py index 6f0cbe5740878367ca3e694b50cfc4b5c0b5d27f..1829920f96dbe3d7f47ee75cc82b8fb8521a7785 100644 --- a/tests/test_registry/test_registry.py +++ b/tests/test_registry/test_registry.py @@ -339,6 +339,13 @@ class TestRegistry: registries = self._build_registry() DOGS, HOUNDS, LITTLE_HOUNDS, MID_HOUNDS, SAMOYEDS = registries[:5] + @DOGS.register_module() + def bark(times=1): + return ' '.join(['woof'] * times) + + bark_cfg = cfg_type(dict(type='bark', times=3)) + assert DOGS.build(bark_cfg) == 'woof woof woof' + @DOGS.register_module() class GoldenRetriever: pass