File size: 810 Bytes
d2a63cc
 
 
 
 
 
 
e4316f1
52419fe
 
 
 
 
 
 
d2a63cc
 
 
0b9d8c7
52419fe
 
0b9d8c7
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from typing import Any, Dict, List

import pandas as pd

from graphgen.bases.base_reader import BaseReader


class CSVReader(BaseReader):
    """
    Reader for CSV files.
    Columns:
        - type: The type of the document (e.g., "text", "image", etc.)
        - if type is "text", "content" column must be present.
    """

    def read(self, file_path: str) -> List[Dict[str, Any]]:

        df = pd.read_csv(file_path)
        for _, row in df.iterrows():
            assert "type" in row, f"Missing 'type' column in document: {row.to_dict()}"
            if row["type"] == "text" and self.text_column not in row:
                raise ValueError(
                    f"Missing '{self.text_column}' in document: {row.to_dict()}"
                )
        return self.filter(df.to_dict(orient="records"))