docs: def _parse_yaml_config(config_data=None):
      """
      Gets the configuration from the found furious.yaml
      file and parses the data.
      Returns:
          a dictionary parsed from the yaml file
      """
      data_map = default_config()
  
      # If we were given config data to use, use it.  Otherwise, see if there is
      # a furious.yaml to read the config from.  Note that the empty string will
      # result in the default config being used.
      if config_data is None:
          config_data = _load_yaml_config()
  
      if not config_data:
          logging.debug("No custom furious config, using default config.")
          return data_map
  
      # TODO: validate the yaml contents
      config = yaml.safe_load(config_data)
  
      # If there was a valid custom config, it will be a dict.  Otherwise,
      # ignore it.
      if isinstance(config, dict):
          # Apply the custom config over the default config.  This allows us to
          # extend functionality without breaking old stuff.
          data_map.update(config)
      elif not None:
          raise InvalidYamlFile("The furious.yaml file "
                                "is invalid yaml")
  
      return data_map