docs: def get_root_list(class_path=None, cursor=None, count=50):
    """Gets a list root Pipelines.
  
    Args:
      class_path: Optional. If supplied, only return root Pipelines with the
        given class_path. By default all root pipelines are returned.
      cursor: Optional. When supplied, the cursor returned from the last call to
        get_root_list which indicates where to pick up.
      count: How many pipeline returns to return.
  
    Returns:
      Dictionary with the keys:
        pipelines: The list of Pipeline records in the same format as
          returned by get_status_tree, but with only the roots listed.
        cursor: Cursor to pass back to this function to resume the query. Will
          only be present if there is another page of results.
  
    Raises:
      PipelineStatusError if any input is bad.
    """
    query = _PipelineRecord.all(cursor=cursor)
    if class_path:
      query.filter('class_path =', class_path)
    query.filter('is_root_pipeline =', True)
    query.order('-start_time')
  
    root_list = query.fetch(count)
  
    fetch_list = []
    for pipeline_record in root_list:
      fetch_list.append(db.Key(pipeline_record.params['output_slots']['default']))
      fetch_list.append(db.Key.from_path(
          _BarrierRecord.kind(), _BarrierRecord.FINALIZE,
          parent=pipeline_record.key()))
      fetch_list.append(db.Key.from_path(
          _StatusRecord.kind(), pipeline_record.key().name()))
  
    pipeline_dict = dict((stage.key(), stage) for stage in root_list)
    slot_dict = {}
    barrier_dict = {}
    status_dict = {}
    for entity in db.get(fetch_list):
      if isinstance(entity, _BarrierRecord):
        barrier_dict[entity.key()] = entity
      elif isinstance(entity, _SlotRecord):
        slot_dict[entity.key()] = entity
      elif isinstance(entity, _StatusRecord):
        status_dict[entity.key()] = entity
  
    results = []
    for pipeline_record in root_list:
      try:
        output = _get_internal_status(
            pipeline_record.key(),
            pipeline_dict=pipeline_dict,
            slot_dict=slot_dict,
            barrier_dict=barrier_dict,
            status_dict=status_dict)
        output['pipelineId'] = pipeline_record.key().name()
        results.append(output)
      except PipelineStatusError, e:
        output = {'status': e.message}
        output['classPath'] = ''
        output['pipelineId'] = pipeline_record.key().name()
        results.append(output)
  
    result_dict = {}
    cursor = query.cursor()
    query.with_cursor(cursor)
    if query.get(keys_only=True):
      result_dict.update(cursor=cursor)
    result_dict.update(pipelines=results)
    return result_dict