code: def select(self, comp_name, options=None):
          
          self._logger.info("select comp '%s' for block '%s' (options: %s)" % (comp_name, self._name, options))
          if comp_name not in self._components:
              raise ValueError("'%s' has no component '%s' (components are: %s)"\
                    % (self._name, comp_name, ", ".join(self.component_names())))
          if options is None:
              options = {}
          # get the componsent
          component = self._components[comp_name]
          # check options make sens
          if not isinstance(component, Optionable) and len(options):
              raise ValueError("the component %s is not optionable you can't provide options..." % comp_name)
          # add component as selected, aware of multiple
          if comp_name not in self._selected:
              if not self.multiple and len(self._selected):
                  assert len(self._selected) == 1
                  self._selected[0] = comp_name
              else:
                  self._selected.append(comp_name)
          else:
              # TODO the component has already been selected
              pass
          # component might be a function or any callable
          # only Optionable will get options
          if isinstance(component, Optionable):
              component.set_options_values(options, parse=True, strict=True)
docs: Select the components that will by played (with given options).
  
          `options` will be passed to :func:`.Optionable.parse_options` if the
          component is a subclass of :class:`Optionable`.
  
          .. Warning:: this function also setup the options (if given) of the
              selected component. Use :func:`clear_selections` to restore both
              selection and component's options.
  
          This method may be call at play 'time', before to call :func:`play` to
          run all selected components.
  
          :param name: name of the component to select
          :type comp_name: str
          :param options: options to set to the components
          :type options: dict