v0.1.0
First tagged release. Covers the full M0–M5 feature set (VIP-1 … VIP-59).
Added
- Public API —
viparse.load(source, *, output, encoding, ocr, normalize, max_bytes, cache, chunk, settings)and lazyviparse.load_batch(...), returning Unicode-NFC
Documents as markdown / text / json. - Layered configuration —
output/encoding/ocr/normalize/max_bytesresolve
from function args →VIPARSE_*env vars → aviparse.tomlfile → the built-in defaults. A
validatingSettings(viaload_settings()) raisesConfigErroron a bad value. - RAG chunking — opt-in
chunk=ChunkOptions(max_tokens, overlap_tokens)splits a document
into retrieval-sized, section-awareChunks (never splitting a table row) with per-chunk
section/page/sheetmetadata and an ordinalindex. - Framework integrations —
to_langchain_documents(doc)/to_llamaindex_documents(doc)
map aDocument(chunk-aware) onto LangChain / LlamaIndex document types, provenance
flattened into theirmetadata. Lazy behindviparse[langchain]/viparse[llamaindex]. - CLI —
viparse <files> -o md|text|json(globs, directories,--out,
--encoding/--ocr/--normalize) andviparse doctor(engine + binary availability). - Extraction engines — DOCX, XLSX, digital PDF, scanned PDF via OCR (
viparse[ocr]),
and legacy binary.doc/.xlsvia LibreOffice — all thin adapters behind extras so the
coreinstall stays dependency-free. - Vietnamese normalization (the moat) — legacy TCVN3 / VNI / VISCII → Unicode NFC,
with font-signal detection, opt-in content-based detection (encoding="auto"), and text
cleanup. Output is always NFC. - Structured output — headings, GFM tables, and a versioned JSON schema
(viparse.SCHEMA_VERSION). - Untrusted-input safety — configurable file-size limit, zip-decompression-bomb guard,
and per-engine process timeouts (UnsafeInput). - Caching — content-hash
MemoryCache/DiskCacheto skip re-parsing unchanged files. - Parallel batch —
load_batch(..., workers=N)with bounded concurrency and per-source
error isolation.