docs: 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)