Datagrunt 5.0.2: PyO3 0.30 & Rust Build Infrastructure Upgrades

November 4, 2026by Martin Graham

Datagrunt 5.0.2 brings underlying build infrastructure and Rust ecosystem dependency upgrades to ensure long-term stability, faster build times, and compatibility with the latest Rust CPython toolchains.


Highlights of Version 5.0.2

PyO3 0.30.1 & Maturin 1.14.1 Engine Upgrade

The core native CPython extension in Datagrunt is built using PyO3 and packaged with Maturin. In this release:

  • PyO3 0.30.1: Upgraded from 0.29.0. PyO3 0.30 introduces stricter configuration checks and improved FFI performance across Python 3.11+ C-API bindings (abi3-py311).
  • Maturin 1.14.1 floor: Maturin 1.14.0 had a bug where generated PyO3 configuration files omitted the required version key, causing PyO3 0.30 builds to fail (#460). Bumping Maturin to v1.14.1 fixes wheel and source distribution (sdist) generation across all platform matrix workflows.

Upgraded Core Rust Crate Dependencies

  • fancy-regex 0.20.0: Upgraded from 0.19.0 in datagrunt-core. Provides enhanced performance and stability for advanced regex evaluation across CSV dialect detection and text cleaning routines.
  • proptest 1.12.0: Upgraded from 1.11.0. Keeps property-based differential testing robust and synced with modern Rust rand and bit-set ecosystems.

Refreshed Developer Toolchain & CI Pipeline

To maintain strict quality gates without breaking on external tooling releases, development dependencies and GitHub Actions have been updated:

  • Type Checkers & Formatters: mypy bound updated to >=1.14,<2.5, ruff bound updated to >=0.15.17,<0.18.
  • Property Testing: hypothesis bound updated to >=6.164.0,<6.171.
  • CI Workflows: Updated setup-uv (v10.3.3), upload-artifact (v7.0.2), download-artifact (v8.0.2), create-github-app-token (v3.3.0), and pypa/gh-action-pypi-publish (v1.14.3).

Verifying Your Installation

No API changes were introduced in this patch release. You can verify your installed version with Python:

import datagrunt

print(f"Datagrunt version: {datagrunt.__version__}")
# Output: Datagrunt version: 5.0.2

# All standard Readers & Writers operate as expected
from datagrunt import CSVReader, ParquetWriter

reader = CSVReader("data.csv")
print(f"Detected delimiter: {reader.dialect.delimiter}")

Upgrading

Upgrade to Datagrunt 5.0.2 using uv or pip:

uv pip install --upgrade "datagrunt[pdf]"