from typing import List
import collections
import csv
import copy


def read_csv(csv_fpath: str, delimiter="\t") -> List[collections.OrderedDict]:
    """Copy the data out of a csv file, as a list of OrderedDicts.

    Args:
        csv_fpath: string representing path to a csv file.

    Rows:
        rows: list of OrderedDicts. key is column name, value is entry at
            (row,column) of csv file.
    """
    rows = []
    with open(csv_fpath, "r") as csv_file:
        csv_reader = csv.DictReader(csv_file, delimiter=delimiter)
        for row in csv_reader:
            rows += [copy.deepcopy(row)]
    return rows