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.

Compiled datasets are not accepted as transform inputs in the current version.

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.1.tar.gz (55.2 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.1-py3-none-any.whl (33.5 kB view details)

Uploaded Python 3

File details

Details for the file tabcaddy-0.1.1.tar.gz.

File metadata

  • Download URL: tabcaddy-0.1.1.tar.gz
  • Upload date:
  • Size: 55.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.13

File hashes

Hashes for tabcaddy-0.1.1.tar.gz
Algorithm Hash digest
SHA256 f3260731e4dffe9ccc6f9f46c5860aae22e57b5f7dbbe7f5acae60182547b624
MD5 27a84dd5460aaf8e0b3b4477f712a3bf
BLAKE2b-256 a3d87091b99fc40fcd4971c3c7bc57c2369a9033e057b948f0e154774f1e7c90

See more details on using hashes here.

File details

Details for the file tabcaddy-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tabcaddy-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 33.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.13

File hashes

Hashes for tabcaddy-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 170fbb37d544ee077e2ae1e5426598c824a0d8c80514c1aed8bf4157535f926a
MD5 6e7560c7b5efe36bd7e94d09218715af
BLAKE2b-256 6525b9a8e0c1fb412e255ccd1c4e97235284e6ba4dce4389b68c70384d1c5afe

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