Home

parse_all

Parse every document in a folder or a list of sources. Yields (source, result) pairs and never aborts on a failed file — errors are returned alongside successes so the rest of the batch keeps running.


Signature

docslicer.parse_all(
    source,
    recursive=False,
    **kwargs,
) -> Iterator[tuple[source, ParseResult | Exception]]

Parameters

ParameterTypeDefaultDescription
sourcestr | Path | listA folder path to scan, or a list of individual sources (paths, URLs, bytes).
recursiveboolFalseWhen source is a folder, scan subdirectories too. Has no effect when source is a list.
**kwargsForwarded to parse_document for every file (max_chunk_size, chunking, table_representation, etc.).

Yields

(source, ParseResult) on success, (source, Exception) on failure. Always check with isinstance(result, Exception) before using the result.


Supported extensions

When scanning a folder, only files with these extensions are picked up: .pdf, .docx, .pptx, .html, .htm, .xhtml. Files are yielded in alphabetical order.


Examples

Scan a folder

for path, result in docslicer.parse_all("documents/"):
    if isinstance(result, Exception):
        print(f"failed {path.name}: {result}")
    else:
        print(f"{path.name}: {len(result.chunks)} chunks")

Scan recursively

for path, result in docslicer.parse_all("documents/", recursive=True):
    if isinstance(result, Exception):
        print(f"failed {path}: {result}")
    else:
        print(f"{path}: {len(result.chunks)} chunks")

Pass a list of sources

sources = [
    "filings/annual_report.pdf",
    "filings/presentation.pptx",
    "https://example.com/press-release",
]
 
for source, result in docslicer.parse_all(sources):
    if isinstance(result, Exception):
        print(f"failed {source}: {result}")
    else:
        print(f"{source}: {len(result.chunks)} chunks")

Collect successful results

results = {
    path: result
    for path, result in docslicer.parse_all("documents/")
    if not isinstance(result, Exception)
}

Forward chunk size options

for path, result in docslicer.parse_all(
    "documents/",
    recursive=True,
    max_chunk_size=2000,
    optimal_chunk_size=800,
):
    ...

Returns

parse_all is a lazy generator — files are parsed one at a time as you iterate. Nothing is buffered in memory upfront.

For reusable config across a batch, see DocumentParser.