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.2.tar.gz (125.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.2-py3-none-any.whl (44.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for tabcaddy-0.1.2.tar.gz
Algorithm Hash digest
SHA256 85f7739b81219149a191fdf722efb1e04f46186da25b8aa7044d1fb9c7683c69
MD5 6b4b41d5387bae332f28b1448ff3185b
BLAKE2b-256 0513705c06e406cc4aabf7a080b9bc278a45762b22e48995d2e9ba2464a2cff9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for tabcaddy-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5d096c807b58b32c8d6c6923e152d3020a46ad5fced3f3ba51e704a990563527
MD5 f3f5d97f1e78b81411d3ad62895d77dc
BLAKE2b-256 87a60008a8f5fc40e604f73a3ea6c1c890e5ab2828a6595411b7e02127cc2e89

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