code: def set_value(self, option, value, index=None):
          
          if self.is_indexed and index is None and not isinstance(value, list):
              raise TypeError("Value should be a list when not giving an index in an indexed header")
          self.values[option].set_value(value=value, index=index)
          return self
docs: Sets the value on the given option.
          :param option: The name of the option as it appears in the config file
          :param value: The value that is being applied. If this section is indexed then the
          value must be a list (to be applied directly) or you must supply the index parameter,
          which will cause the value to be inserted into an existing list.
          :param index: If the attribute is indexed, we will use this index to insert
          the value you have supplied.
          :return: an instance of itself so that you can chain setting values together.