Dataset-centric CLI toolkit for exploring, compiling, transforming, and diffing tabular data
Project description
TabCaddy
TabCaddy is a command-line tool for exploring, compiling, transforming, and comparing tabular datasets.
It works with single files, whole folders, and previously compiled datasets, so you can move from quick inspection to repeatable data workflows without switching tools.
Install
TabCaddy currently requires Python 3.13 or newer.
Install with pip:
pip install tabcaddy
Install with uv as a standalone CLI:
uv tool install tabcaddy
If you prefer to add it to a project environment, you can also use:
uv add tabcaddy
Supported Inputs
.csv.feather.arrow- folders containing supported files
- compiled TabCaddy datasets created by
tabcaddy compile
Quick Start
Inspect a single dataset:
tabcaddy summary trades.feather
Inspect a folder of files:
tabcaddy summary data/
Look at schema drift across a folder:
tabcaddy schema data/
Compile a folder into a reusable parquet dataset:
tabcaddy compile data/
Compare two datasets:
tabcaddy diff old_data/ new_data/
What summary Shows
tabcaddy summary is the main entry point for understanding a dataset. Depending on the selected profile, it can show:
- file, row, column, and schema counts
- schema overview and schema distribution
- per-column statistics such as null rate, min, max, and mean
- date ranges for temporal columns
- warnings such as schema drift
- deep-profile histograms, uniqueness estimates, and column hashes
Profiles
Use --profile with summary or schema to control how much work TabCaddy does.
quick: counts only, for fast inspectionstandard: metadata, schema overview, lightweight statistics, and warningsdeep: adds uniqueness estimates, histograms, and column hashes
Example:
tabcaddy summary data/ --profile deep
Commands
summary
tabcaddy summary <source> [--profile quick|standard|deep]
Use this for everyday inspection of a file, folder, or compiled dataset.
schema
tabcaddy schema <source> [--profile quick|standard|deep]
Use this when you care specifically about schema groups, type changes, and files that violate the dominant schema.
compile
tabcaddy compile <folder> [--output compiled_dataset] [--schema N] [--interactive]
Compile a folder of compatible files into a parquet-backed TabCaddy dataset. If multiple schemas are present, you can either pick one explicitly with --schema or let TabCaddy ask you in --interactive mode.
transform
tabcaddy transform <input> <transform.py> [output_folder] [--workers N]
Apply a Python transform to a single file or a folder of files. If you omit the output folder, TabCaddy creates one automatically by appending _transformed.
When the input is a compiled dataset, output is written as a compiled dataset as well (data/*.parquet plus refreshed metadata.json).
Supported transform signatures:
def transform(df):
return df
def transform(df, context):
return df
The optional context includes:
file_namefile_pathschemametadata.row_countmetadata.schema_hash
scaffold-transform
tabcaddy scaffold-transform <source> [--output transform_template.py]
Generate a starter transform file with observed schemas and example snippets.
diff
tabcaddy diff <left> <right> [--level metadata|statistics|full]
Compare two files, two folders, or two compiled datasets.
metadata: high-level changes onlystatistics: metadata plus statistics changesfull: metadata, schema, and statistics changes
Typical Workflows
Inspect a folder before deciding whether to compile it:
tabcaddy summary raw_exports/
tabcaddy schema raw_exports/
Compile the dominant schema into a reusable dataset:
tabcaddy compile raw_exports/ --interactive
Generate a transform scaffold, edit it, then apply it:
tabcaddy scaffold-transform raw_exports/
tabcaddy transform raw_exports/ transform_template.py cleaned_exports/
Compare two compiled snapshots:
tabcaddy diff compiled_dataset_2025_12 compiled_dataset_2026_01 --level full
Help
See all commands:
tabcaddy --help
See help for a specific command:
tabcaddy summary --help
tabcaddy compile --help
tabcaddy transform --help
Project details
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 tabcaddy-0.1.3.tar.gz.
File metadata
- Download URL: tabcaddy-0.1.3.tar.gz
- Upload date:
- Size: 125.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ed3810b4552eedfbebe2596b856c238897e3fb54e2fde000e09d6947df7fc6c
|
|
| MD5 |
1532177d09237f49e650e5c359c8106d
|
|
| BLAKE2b-256 |
4b6eb8a6fc24a477f4f86e58a66c675105af86baa685d5fdaa213dd7a71e1828
|
File details
Details for the file tabcaddy-0.1.3-py3-none-any.whl.
File metadata
- Download URL: tabcaddy-0.1.3-py3-none-any.whl
- Upload date:
- Size: 45.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e90b10659f624476b0c2a5e6093520ea86a2baf3575a55cdf7135802f2ddaa68
|
|
| MD5 |
d993bfb3f8732f112e3c323e023cb78e
|
|
| BLAKE2b-256 |
393b70a7e1ef5cb69d66fc3a3097d784107aab09d129882c927a09a3010aab4f
|