Connect an output to any callable object.

        :py:meth:`on_connect` is called after the connection is made to
        allow components to do something when an output is conected.

        :param str output_name: the output to connect. Must be a member
            of :py:attr:`~Component.outputs`.

        :param callable input_method: the thread-safe callable to invoke
            when :py:meth:`send` is called.

def connect(self, output_name, input_method):
        """Connect an output to any callable object.

        :py:meth:`on_connect` is called after the connection is made to
        allow components to do something when an output is conected.

        :param str output_name: the output to connect. Must be a member
            of :py:attr:`~Component.outputs`.

        :param callable input_method: the thread-safe callable to invoke
            when :py:meth:`send` is called.

        """
        self.logger.debug('connect "%s"', output_name)
        if self.running():
            raise RuntimeError('Cannot connect running component')
        self._component_connections[output_name].append(input_method)
        self.on_connect(output_name)