UniqTools is a product-layer ecosystem built on top of the stable
uniqdiff comparison engine.
uniqdiff owns exact comparison semantics. UniqTools packages turn engine facts
into workflows, row-level analysis, reports, checks, and integrations.
Current UniqTools development targets uniqdiff>=1.1,<2.0. Tools should prefer
the public uniqdiff.engine facade for engine primitives introduced after 1.0,
including field diff, schema diff, sorted streaming diff, and JSONL event readers.
Documentation site: https://hweded.github.io/uniqtools/
packages/uniqrowdiff: row-level changed-field analysis for CSV rows matched by key.packages/uniqcheck: CI-friendly CSV checks for required columns, duplicate keys, and added/removed rows.packages/uniqprofile: lightweight CSV, TSV, and JSONL profiling for workflow preflight.packages/uniqtools_cli: unifieduniqtoolscommand that delegates to package CLIs.
uniqtools profile file users.csv --key id
uniqtools check schema old.csv new.csv --fail-on-schema-change
uniqtools rowdiff old.csv new.csv --key id --column status --output changes.jsonlexamples/uniqtools_starter: minimal adapter around the publicuniqdiffAPI.examples/uniqrowdiff_prototype: original row-level diff sketch kept as a product-layer example.
files / streams / connectors
|
v
uniqdiff stable comparison engine
|
v
CompareResult / CompareStats / file result schema
field diff / schema diff / JSONL event stream
|
v
UniqTools packages
|
v
row diff / reports / checks / workflows
Use both source roots during local development:
PowerShell:
$env:PYTHONPATH = "..\\uniq_remote_check\\src;packages\\uniqrowdiff\\src;packages\\uniqcheck\\src;packages\\uniqprofile\\src;packages\\uniqtools_cli\\src"
python -m uniqrowdiff --help
python -m uniqcheck --help
python -m uniqprofile --help
python -m uniqtools_cli --help
python -m pytestBash:
PYTHONPATH=../uniq_remote_check/src:packages/uniqrowdiff/src:packages/uniqcheck/src:packages/uniqprofile/src:packages/uniqtools_cli/src python -m uniqrowdiff --help
PYTHONPATH=../uniq_remote_check/src:packages/uniqrowdiff/src:packages/uniqcheck/src:packages/uniqprofile/src:packages/uniqtools_cli/src python -m uniqcheck --help
PYTHONPATH=../uniq_remote_check/src:packages/uniqrowdiff/src:packages/uniqcheck/src:packages/uniqprofile/src:packages/uniqtools_cli/src python -m uniqprofile --help
PYTHONPATH=../uniq_remote_check/src:packages/uniqrowdiff/src:packages/uniqcheck/src:packages/uniqprofile/src:packages/uniqtools_cli/src python -m pytestUniqTools packages should depend only on public uniqdiff APIs:
- root package exports;
uniqdiff.enginefacade exports;CompareResultandCompareStats;- file result schema and lazy readers;
- field diff and schema diff result objects;
uniqdiff.jsonlevent stream readers;- documented connector protocol.
UniqTools packages should not import uniqdiff.core, uniqdiff.storage,
uniqdiff.planner, backend modules, or private helper modules.
Apache-2.0.