Set available components and the options of one block.
        
        :param name: block name
        :param components: the components (see :meth:`Block.set`)
        :param parameters: block configuration (see :meth:`Block.setup`)
        
        for example :
        
        >>> engine = Engine("op1")
        >>> engine.set("op1", Composable(), required=True, in_name="query", out_name="holygrail")

def set(self, name, *components, **parameters):
        """ Set available components and the options of one block.
        
        :param name: block name
        :param components: the components (see :meth:`Block.set`)
        :param parameters: block configuration (see :meth:`Block.setup`)
        
        for example :
        
        >>> engine = Engine("op1")
        >>> engine.set("op1", Composable(), required=True, in_name="query", out_name="holygrail")
        """
        self._logger.info(" ** SET ** '%s' "% name)

        if name not in self:
            raise ValueError("'%s' is not a block (%s)" % (name, ",".join(self.names())))
        self[name].set(*components)
        self[name].setup(**parameters)