Spaces:
Sleeping
Sleeping
File size: 1,305 Bytes
1897f56 |
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 27 28 29 30 31 32 33 34 35 36 37 |
from typing import Iterator
from langchain_core.documents import Document
from langchain_community.document_loaders.base import BaseBlobParser
from langchain_community.document_loaders.blob_loaders import Blob
class TxtParser(BaseBlobParser):
"""Parse plain text files from a blob."""
# type: ignore[valid-type]
def lazy_parse(self, blob: Blob) -> Iterator[Document]:
"""Parse a plain text file into the Document iterator.
Args:
blob: The blob to parse.
Returns: An iterator of Documents.
"""
supported_mime_types = [
"text/plain", # .txt
]
# Debugging: Print MIME type
print(f"Blob MIME type: {blob.mimetype}")
# type: ignore[attr-defined]
if blob.mimetype not in supported_mime_types:
raise ValueError(
f"This blob type is not supported for this parser. Supported types are: {supported_mime_types}"
)
# Read text file content
with blob.as_bytes_io() as txt_file: # type: ignore[attr-defined]
text = txt_file.read().decode("utf-8")
metadata = {"source": blob.source} # type: ignore[attr-defined]
yield Document(page_content=text, metadata=metadata)
|