docs: def dump(self, fname=None, overwrite=True, include_keys=None,
               exclude_keys=['project.plotters'], include_descriptions=True,
               **kwargs):
          """Dump this instance to a yaml file
  
          Parameters
          ----------
          fname: str or None
              file name to write to. If None, the string that would be written
              to a file is returned
          overwrite: bool
              If True and `fname` already exists, it will be overwritten
          include_keys: None or list of str
              Keys in the dictionary to be included. If None, all keys are
              included
          exclude_keys: list of str
              Keys from the :class:`RcParams` instance to be excluded
  
          Other Parameters
          ----------------
          ``**kwargs``
              Any other parameter for the :func:`yaml.dump` function
  
          Returns
          -------
          str or None
              if fname is ``None``, the string is returned. Otherwise, ``None``
              is returned
  
          Raises
          ------
          IOError
              If `fname` already exists and `overwrite` is False
  
          See Also
          --------
          load_from_file"""
          if fname is not None and not overwrite and os.path.exists(fname):
              raise IOError(
                  '%s already exists! Set overwrite=True to overwrite it!' % (
                      fname))
          if six.PY2:
              kwargs.setdefault('encoding', 'utf-8')
          d = {key: val for key, val in six.iteritems(self) if (
                  include_keys is None or key in include_keys) and
               key not in exclude_keys}
          kwargs['default_flow_style'] = False
          if include_descriptions:
              s = yaml.dump(d, **kwargs)
              desc = self.descriptions
              i = 2
              header = self.HEADER.splitlines() + [
                  '', 'Created with python', ''] + sys.version.splitlines() + [
                      '', '']
              lines = ['# ' + l for l in header] + s.splitlines()
              for l in lines[2:]:
                  key = l.split(':')[0]
                  if key in desc:
                      lines.insert(i, '# ' + '\n# '.join(desc[key].splitlines()))
                      i += 1
                  i += 1
              s = '\n'.join(lines)
              if fname is None:
                  return s
              else:
                  with open(fname, 'w') as f:
                      f.write(s)
          else:
              if fname is None:
                  return yaml.dump(d, **kwargs)
              with open(fname, 'w') as f:
                  yaml.dump(d, f, **kwargs)
          return None