code: def parse_mapreduce_yaml(contents):
    
    try:
      builder = yaml_object.ObjectBuilder(MapReduceYaml)
      handler = yaml_builder.BuilderHandler(builder)
      listener = yaml_listener.EventListener(handler)
      listener.Parse(contents)
  
      mr_info = handler.GetResults()
    except (ValueError, yaml_errors.EventError), e:
      raise errors.BadYamlError(e)
  
    if len(mr_info) < 1:
      raise errors.BadYamlError("No configs found in mapreduce.yaml")
    if len(mr_info) > 1:
      raise errors.MultipleDocumentsInMrYaml("Found %d YAML documents" %
                                             len(mr_info))
  
    jobs = mr_info[0]
    job_names = set(j.name for j in jobs.mapreduce)
    if len(jobs.mapreduce) != len(job_names):
      raise errors.BadYamlError(
          "Overlapping mapreduce names; names must be unique")
  
    return jobs
docs: Parses mapreduce.yaml file contents.
  
    Args:
      contents: mapreduce.yaml file contents.
  
    Returns:
      MapReduceYaml object with all the data from original file.
  
    Raises:
      errors.BadYamlError: when contents is not a valid mapreduce.yaml file.