def _add_single_component(self, component):
        """
        Add a single component into the corresponding manager.

        Args:
            component (function|class): A new component.

        Raises:
            TypeError: When `component` is neither class nor function.
            KeyError: When `component` was added already.
        """

        # Currently only support class or function type
        if not (inspect.isclass(component) or inspect.isfunction(component)):
            raise TypeError("Expect class/function type, but received {}".
                            format(type(component)))

        # Obtain the internal name of the component
        component_name = component.__name__

        # Check whether the component was added already
        if component_name in self._components_dict.keys():
            warnings.warn("{} exists already! It is now updated to {} !!!".
                          format(component_name, component))
            self._components_dict[component_name] = component

        else:
            # Take the internal name of the component as its key
            self._components_dict[component_name] = component

        Add a single component into the corresponding manager.

        Args:
            component (function|class): A new component.

        Raises:
            TypeError: When `component` is neither class nor function.
            KeyError: When `component` was added already.
        
paddleseg/cvlibs/manager.py