ShapeWitness
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. Install from a checkout:
python -m pip install .
Or directly from GitHub:
python -m pip install 'git+https://github.com/agent-axiom/shapewitness.git'
Pin a reviewed commit for reproducible source installations. 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.
Read next
| 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.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| shapewitness-0.1.0.tar.gz | 55.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| shapewitness-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 68.4 kB
Release files / shapewitness-0.1.0.tar.gz
| Download URL | shapewitness-0.1.0.tar.gz |
|---|---|
| Size | 55.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
879fb8add05431035d44b3006ee2dff24a115c040f926a50956426c2efbbc079
|
|
BLAKE2b-256 checksum How to use checksums |
0b249c3b417cc3e979a33ee96df8830dd12f2d08a92fd913a45a924e6caa5c64
|
| 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.0-py3-none-any.whl
| Download URL | shapewitness-0.1.0-py3-none-any.whl |
|---|---|
| Size | 12.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
564c4a7b9571ae5020653e5913b24286e2728bbe97a0aaa214555d0f8df0ffb0
|
|
BLAKE2b-256 checksum How to use checksums |
7f67bc871b54ca69dd45a7db5b0bbc4a213a03fb49af8737d1998ad7ff792aaa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|