Set the options of the block.
        Only the not None given options are set

        .. note:: a block may have multiple inputs but have only one output

        :param in_name: name(s) of the block input data
        :type in_name: str or list of str
        :param out_name: name of the block output data
        :type out_name: str
        :param required: whether the block will be required or not
        :type required: bool
        :param hidden: whether the block will be hidden to the user or not
        :type hidden: bool
        :param multiple: if True more than one component may be selected/ run) 
        :type multiple: bool
        :param defaults: names of the selected components
        :type defaults: list of str, or str

def setup(self, in_name=None, out_name=None, required=None, hidden=None,
                multiple=None, defaults=None):
        """ Set the options of the block.
        Only the not None given options are set

        .. note:: a block may have multiple inputs but have only one output

        :param in_name: name(s) of the block input data
        :type in_name: str or list of str
        :param out_name: name of the block output data
        :type out_name: str
        :param required: whether the block will be required or not
        :type required: bool
        :param hidden: whether the block will be hidden to the user or not
        :type hidden: bool
        :param multiple: if True more than one component may be selected/ run) 
        :type multiple: bool
        :param defaults: names of the selected components
        :type defaults: list of str, or str
        """
        if in_name is not None:
            self.in_name = in_name if isinstance(in_name, list) else [in_name]
        if out_name is not None:
            self.out_name = out_name
        if required is not None:
            self.required = required
        if hidden is not None:
            self.hidden = hidden
        if multiple is not None:
            self.multiple = multiple
        if defaults is not None:
            #if default is just a 'str' it is managed in setter
            self.defaults = defaults