Extracts Git commit test_data from a local repository.
    :param rpath: The path to a local Git repo.
    :param extract: A list of attribute name strings.
    :return: A Pandas dataframe containing Git commit test_data.

def extract_log(rpath,extract=simple_attributes):
    """
    Extracts Git commit test_data from a local repository.
    :param rpath: The path to a local Git repo.
    :param extract: A list of attribute name strings.
    :return: A Pandas dataframe containing Git commit test_data.
    """
    # Get repo
    m_repo = git.Repo(rpath)

    # Count commits
    count = 0
    m_commits = m_repo.iter_commits()
    for commit in m_commits:
        count += 1

    # Initialize progress bar and index

    with tqdm.tqdm(total=count) as pbar:

        # Get commits again
        m_commits = m_repo.iter_commits()

        # Setup test_data extraction
        update_interval = max(min(count//100,100),5)
        index = 0
        buffer = []

        # Extract commit test_data
        while True:

            # Add the next commit to the buffer
            try:
                next_commit = next(m_commits)
                buffer.append(make_object_dict(next_commit,extract))
                index += 1
                if index%update_interval == 0:
                    pbar.update(update_interval)

            # If no more commits, clear the buffer
            except StopIteration:
                break

    # final_df = pd.concat(sub_df_list)
    return pd.DataFrame(buffer)