Skip to main content

Dataset-centric CLI toolkit for exploring, compiling, transforming, and diffing tabular data

Project description

TabCaddy

CI

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 inspection
  • standard: metadata, schema overview, lightweight statistics, and warnings
  • deep: 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_name
  • file_path
  • schema
  • metadata.row_count
  • metadata.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 only
  • statistics: metadata plus statistics changes
  • full: 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

tabcaddy-0.1.3.tar.gz (125.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tabcaddy-0.1.3-py3-none-any.whl (45.8 kB view details)

Uploaded Python 3

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

Hashes for tabcaddy-0.1.3.tar.gz
Algorithm Hash digest
SHA256 6ed3810b4552eedfbebe2596b856c238897e3fb54e2fde000e09d6947df7fc6c
MD5 1532177d09237f49e650e5c359c8106d
BLAKE2b-256 4b6eb8a6fc24a477f4f86e58a66c675105af86baa685d5fdaa213dd7a71e1828

See more details on using hashes here.

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

Hashes for tabcaddy-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e90b10659f624476b0c2a5e6093520ea86a2baf3575a55cdf7135802f2ddaa68
MD5 d993bfb3f8732f112e3c323e023cb78e
BLAKE2b-256 393b70a7e1ef5cb69d66fc3a3097d784107aab09d129882c927a09a3010aab4f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page