Skip to main content

ShapeWitness

CI PyPI Python 3.10+ MIT license Runtime dependencies: 0

Small JSONL fixtures that show the shapes your code needs to handle.

head -n 20 often gives you twenty happy-path rows. ShapeWitness keeps the records with missing fields, nulls, empty collections, and mixed types, then explains why each row was selected.

  • Real records: original bytes, numeric precision, whitespace, and line endings
  • Explainable coverage: observed structural features, uncovered gaps, source hashes
  • Reproducible and local: deterministic selection, bounded disk spooling, no network calls

Install

Python 3.10+ with SQLite support. Available on PyPI:

python -m pip install shapewitness
# Isolated CLI alternatives:
uvx shapewitness --help
pipx install shapewitness

For a source checkout, use python -m pip install .. Pin a version or reviewed commit for reproducibility. See release guidance.

Ten-second demo

From a checkout:

shapewitness examples/events.jsonl -n 4 --report coverage.json > fixture.jsonl
# shapewitness: 4/6 rows; 19/19 observed features; complete

Lines 1, 3, 4, and 5 survive. See the input, selected fixture, and explanation. Use --require-complete to fail CI when the selected rows leave observed features uncovered.

I want to… Start here
Use the CLI, pipes, or Python API Usage
Build pytest fixtures, test ETL, or reproduce an importer bug Recipes
Inspect a reproducible head/random comparison Synthetic benchmark
Build a wheel or prepare a release Release readiness
Understand null, missing, arrays, and tie-breaking Feature model
Verify selected bytes and coverage explanations Provenance
Check strict input rules, resource limits, and privacy Limits & privacy
Understand the implementation or contribute Architecture · Development
Work on this repository with an agent Agent guide
Compare the scope with JSONLKit and jselect Related tools

Know the boundaries: this is greedy structural coverage, not a statistically representative sample, an optimal minimum set, or a schema guarantee. Selected rows retain private data; reports can expose property names. Details.

Documentation index · Contributing · Security · Changelog · MIT license

Metadata

Release files for shapewitness 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for shapewitness 0.1.1
File Size Uploaded
shapewitness-0.1.1.tar.gz 65.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shapewitness 0.1.1
File Interpreter ABI Platform
shapewitness-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 78.8 kB

Release files / shapewitness-0.1.1.tar.gz

Download URL shapewitness-0.1.1.tar.gz
Size 65.7 kB
Tags Source
SHA-256 checksum
How to use checksums
062fed705089eb6916288424c4fd909afb32150a7b87489976ebf15e69b5a180
BLAKE2b-256 checksum
How to use checksums
ca2a8d96e35470f4007b6fdfc86cb5fc58e8e4b32ad1fc407eea26bd3cd9a1a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / shapewitness-0.1.1-py3-none-any.whl

Download URL shapewitness-0.1.1-py3-none-any.whl
Size 13.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
12111bb3d5d00ad4d8b3458d22d7280adec1d1b7d1bf1741294adca7c0cace6c
BLAKE2b-256 checksum
How to use checksums
7df4fdbc0cdaeb990db00b7e767031d5db8ab40c35d566080f979fb73cfe5a11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

0.1.2

2 release files

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page