AmmarFahmy
adding all files
105b369
import json
from pathlib import Path
from typing import List
from phi.document.base import Document
from phi.document.reader.base import Reader
from phi.utils.log import logger
class JSONReader(Reader):
"""Reader for JSON files"""
chunk: bool = False
def read(self, path: Path) -> List[Document]:
if not path:
raise ValueError("No path provided")
if not path.exists():
raise FileNotFoundError(f"Could not find file: {path}")
try:
logger.info(f"Reading: {path}")
json_name = path.name.split(".")[0]
json_contents = json.loads(path.read_text("utf-8"))
if isinstance(json_contents, dict):
json_contents = [json_contents]
documents = [
Document(
name=json_name,
id=f"{json_name}_{page_number}",
meta_data={"page": page_number},
content=json.dumps(content),
)
for page_number, content in enumerate(json_contents, start=1)
]
if self.chunk:
logger.debug("Chunking documents not yet supported for JSONReader")
# chunked_documents = []
# for document in documents:
# chunked_documents.extend(self.chunk_document(document))
# return chunked_documents
return documents
except Exception:
raise