Datagrunt 4.4.1: Python 3.14 Support

June 27, 2026by Martin Graham

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 datagrunt

Concurrency & 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, PDFReader uses a multi-process engine backed by standard ProcessPoolExecutor when workers > 1 is 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:
    py.detach(|| datagrunt_core::rows::row_count_with_header(&path, delimiter))
    This allows other concurrent Python threads to execute uninterrupted during large file scans.

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, pymupdf and pdfium backends can extract text blocks with slight coordinate differences. While they extract the exact same tables (via pdfplumber), 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!