Generic Frictionless-aligned tabular-data-package engine. Code-agnostic schemas, lazy ibis/duckdb pipelines, foreign-key + sync-state validation, geographic scoping, and edit/rollback primitives.
Project description
datagrove
Generic, Frictionless-aligned tabular-data-package engine. Powers GMNSpy and is designed to support other tabular data specifications (GTFS, custom formats) via the same primitives.
Status: pre-alpha (0.1.0.dev0). API is unstable.
What it provides
- Pydantic models for Frictionless Data Package, Resource, Schema, Field, ForeignKey
- Engine abstraction (Ibis/DuckDB default; Polars; Pandas)
- Format adapters: CSV, Parquet (partitioned), DuckDB, zipped CSV, remote URLs (fsspec)
- Validation framework: schema, structural, foreign-key, sync-state (dirty-tracker)
- Lazy dataset surface:
Package,Table,Viewwith geographic scoping (bbox, polygon, geometry-buffer) - Operation cost model + gating, batched/pooled writes
- Report renderers: rich console, JSON, interactive single-file HTML
- Generic edit/diff/session/rollback framework
- Generic CLI (
datagrove …):validate,convert,info,scope,describe— extendable by domain packages via plugin pattern - Generic data-quality framework (rule base class, threshold config, entry-point plugin discovery — no domain rules)
- Generic notebook helpers (
_repr_html_for Package/Table/ValidationReport/EditResult) - FastAPI primitives for building self-hostable data APIs
- MCP server primitives for AI-agent consumption
- Docgen: markdown +
llms.txt+ machine-readable API index
Composition with domain packages
gmnspy and (in the future) similar packages compose on top:
| Concern | datagrove (generic) | gmnspy (GMNS-specific) |
|---|---|---|
| editing framework | editing/ |
clean/ (simplify_geometry, …) |
| HTTP server | api/ (primitives) |
server/ (assembled FastAPI app) |
| MCP | mcp/ (primitives) |
mcp/ (GMNS tool registrations) |
| CLI | cli/ (generic commands + extension hook) |
cli/ (GMNS commands on the same typer app) |
| Quality | quality/ (rule framework) |
quality/ (GMNS rule pack via entry point) |
| Notebook | notebook/ (Package/Table/ValidationReport reprs) |
notebook/ (Network repr + scope widgets) |
Install
Pick the tool you already use — these are equivalent:
# uv (recommended — fastest, handles workspace projects + lockfiles)
uv add datagrove
# uv pip (drop-in pip replacement, no project file needed)
uv pip install datagrove
# pip (classic)
pip install datagrove
# pipx (CLI-only, isolated env; gives you the `datagrove` command without
# polluting your project env)
pipx install datagrove
Optional extras
# Engines (pick the one your downstream code already uses)
uv add 'datagrove[polars]' # lazy polars frames
uv add 'datagrove[pandas]' # eager pandas DataFrames
# Cloud storage backends (read from s3://, gs://, azure://)
uv add 'datagrove[s3]' # add 'gcs' or 'azure' as needed
# Credential helpers + AI surface
uv add 'datagrove[keyring]' # resolve creds from system keychain
uv add 'datagrove[mcp]' # `datagrove mcp serve` for Claude Desktop / Code
Combine extras with commas: uv add 'datagrove[polars,s3,keyring]'.
Repo
Developed in the GMNSpy monorepo under packages/datagrove/.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file datagrove-1.0.0b1.tar.gz.
File metadata
- Download URL: datagrove-1.0.0b1.tar.gz
- Upload date:
- Size: 203.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fffe6619eaba94642df8430b904d02bd4303014c7e15b89fff9bb650146cd701
|
|
| MD5 |
d4342fda785377c3d2c6624664e51d48
|
|
| BLAKE2b-256 |
b3494d452459f9cecf0b36da2ee504262af6c35d7f5b9bb3320b01a9824ada4a
|
Provenance
The following attestation bundles were made for datagrove-1.0.0b1.tar.gz:
Publisher:
publish-datagrove.yml on e-lo/GMNSpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
datagrove-1.0.0b1.tar.gz -
Subject digest:
fffe6619eaba94642df8430b904d02bd4303014c7e15b89fff9bb650146cd701 - Sigstore transparency entry: 2012788177
- Sigstore integration time:
-
Permalink:
e-lo/GMNSpy@3db68f566eb4c97370dabf2b262b12daf7b6cb1b -
Branch / Tag:
refs/tags/datagrove-v1.0.0-beta.1 - Owner: https://github.com/e-lo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-datagrove.yml@3db68f566eb4c97370dabf2b262b12daf7b6cb1b -
Trigger Event:
push
-
Statement type:
File details
Details for the file datagrove-1.0.0b1-py3-none-any.whl.
File metadata
- Download URL: datagrove-1.0.0b1-py3-none-any.whl
- Upload date:
- Size: 253.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5bb22af11614c86d3eda4d571029f362a44638b59a09ca1171fd0942bdab115
|
|
| MD5 |
0ebf8fed7f056e3f67ee8e05ea2a70af
|
|
| BLAKE2b-256 |
0f0bdbf8cae7ebd5befd199615594e4aa4467f488849d80cde951f0deb3b837b
|
Provenance
The following attestation bundles were made for datagrove-1.0.0b1-py3-none-any.whl:
Publisher:
publish-datagrove.yml on e-lo/GMNSpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
datagrove-1.0.0b1-py3-none-any.whl -
Subject digest:
c5bb22af11614c86d3eda4d571029f362a44638b59a09ca1171fd0942bdab115 - Sigstore transparency entry: 2012788445
- Sigstore integration time:
-
Permalink:
e-lo/GMNSpy@3db68f566eb4c97370dabf2b262b12daf7b6cb1b -
Branch / Tag:
refs/tags/datagrove-v1.0.0-beta.1 - Owner: https://github.com/e-lo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-datagrove.yml@3db68f566eb4c97370dabf2b262b12daf7b6cb1b -
Trigger Event:
push
-
Statement type: