Datagrunt 4.4.1: Python 3.14 Support
We are excited to announce the release of Datagrunt 4.4.1! This is a patch release focused on compatibility, specifically verifying and adding official support for Python 3.14.
Official Python 3.14 Support
With the recent developments and pre-releases of Python 3.14, we have completed testing of Datagrunt on Python 3.14.3. We are happy to report that all core features—including our Rust-backed CSV parsing engine and our multi-engine PDF extraction subsystem—work flawlessly.
You can now use Datagrunt in Python 3.14 environments by installing the latest release:
uv pip install -U datagruntConcurrency & GIL-Free Safety
Python 3.14 continues to mature the free-threaded (GIL-free) execution capabilities introduced in PEP 703. Datagrunt is fully aligned with these concurrency improvements:
- Separate Process Pools for PDF Concurrency: For structured PDF parsing,
PDFReaderuses a multi-process engine backed by standardProcessPoolExecutorwhenworkers > 1is set. Since each worker runs in its own OS process, it has an independent Python interpreter and GIL, avoiding GIL bottlenecks completely. - Thread-Safe Rust Core: All CPU-intensive file scans in our native Rust extension (
datagrunt._native) explicitly release the GIL using PyO3’s thread-detaching API:This allows other concurrent Python threads to execute uninterrupted during large file scans.py.detach(|| datagrunt_core::rows::row_count_with_header(&path, delimiter))
Bug Fixes & Refinements
In this release, we also resolved a pre-existing issue in the PDF engine-comparison test suite:
- Layout-Aware Table Sorting: On multi-column PDF pages,
pymupdfandpdfiumbackends can extract text blocks with slight coordinate differences. While they extract the exact same tables (viapdfplumber), our layout-aware sorter previously placed them in slightly different list indices due to column partitioning boundaries. We updated the comparison test to sort page tables by their physical(y, x)coordinates before asserting equality, eliminating false-positive test failures.
Upgrade to Datagrunt 4.4.1 today to start building on Python 3.14!