<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def register(self, signal, plugin, description=""):
 """ Registers a new signal. :param signal: Unique name of the signal :param plugin: Plugin, which registers the new signal :param description: Description of the reason or use case, why this signal is needed. Used for documentation. """

        if signal in self.signals.keys():
            raise Exception("Signal %s was already registered by %s" % (signal, self.signals[signal].plugin.name))

        self.signals[signal] = Signal(signal, plugin, self._namespace, description)
        self.__log.debug("Signal %s registered by %s" % (signal, plugin.name))
        return self.signals[signal]