This release is a pre-release and may not be stable for production use.
PipeWhy: data integrity and lineage diagnostics
Capture data. Detect drift. Follow the evidence.
| Package | 0.1.0.dev0 prerelease · Python 3.14 · Poetry · uv_build |
| Documentation | Getting started · User guide · API reference · Developer guide |
| Project | Source · Issues · Releases |
What is it?
PipeWhy is a Python package for finding changes in versioned data and explaining them using captured observations and declared lineage. It normalizes typed values, builds composable fingerprints, stores immutable local snapshots and compares historical captures with explicit uncertainty.
The first release targets accidental drift and corruption detection. Missing reads, unknown upstream lineage and incomparable observations stay visible in reports. Capture time alone does not establish an operation's timing or cause. Fingerprints do not provide an adversarial integrity guarantee.
Table of contents
- Main features
- Where to get it
- Dependencies
- Installation from sources
- A first snapshot
- Documentation
- Background
- Getting help
- Development and contributing
- License
Main features
- Explicit equality rules: strict representation by default, with a separate opt-in logical normalization profile.
- Versioned fingerprints: reference Python execution, optional native CPU execution and an experimental CUDA backend with recorded hardware qualification.
- Durable local snapshots: saved schema, identity, coverage and retention context support comparisons and queries after the source goes offline.
- Qualified diagnostics: historical comparison, declared lineage, incident analysis and integrity reports preserve the limits of their evidence.
- Useful CLI output:
scan,diff,lineage,why,report integrityandexport, with text, JSON, checksummed CSV and graph formats where supported. - Pinned Enron integration: the public
corbt/enron-emailsdataset is read at an exact revision, with verified cache contents and explicit unknown upstream lineage. - Resumable local workers: the Python execution API coordinates partitions, finite retries, durable attempts and replay-safe snapshot publication.
Where to get it
Source and tagged releases are maintained in oakplume/pipewhy. The source repository is private; repository and release downloads require access.
The first release series is a development prerelease. To install from PyPI:
python -m pip install --pre pipewhy
See PyPI for published versions and GitHub Releases for wheel downloads and checksums. The installation guide also describes building and installing a local wheel.
Dependencies
The core wheel has no runtime dependencies. Optional extras enable specific features; Poetry locks the development and documentation environments separately.
| Extra | Purpose | Main dependencies |
|---|---|---|
cpu |
Native CPU fingerprints | NumPy, Numba |
cuda |
Experimental CUDA execution | NumPy, Numba, numba-cuda, CUDA bindings and compiler/runtime payloads |
enron |
Parquet-backed Enron source | PyArrow |
Python 3.14 and Poetry 2.5.x are required for development. Current qualification uses CPython 3.14.7. Exact dependency constraints live in pyproject.toml and poetry.lock. Read the CUDA guide before enabling that backend.
Installation from sources
From the repository root:
poetry config virtualenvs.in-project true --local
poetry sync
poetry run pipewhy --help
This creates the project .venv. Use the Poetry executable from your tool environment if poetry is not on your PATH.
For native CPU execution and the Enron source:
poetry sync --extras cpu --extras enron
Include every extra you intend to keep when running poetry sync. Fixtures and
the Enron corpus are external source data; they are not bundled in the wheel.
A first snapshot
Capture the fixture supplied with this checkout using the reference backend:
poetry run pipewhy scan fixture --config examples/local-fixture.toml --source-version baseline-v1 --retain value --format json
The example writes to .artifacts/local-snapshots and uses repository test data.
Value retention here is explicit. The quickstart
continues with changed and missing observations, comparisons and saved reports.
For a repeatable demonstration, use the PowerShell 7
local slice script.
Documentation
Read the PipeWhy documentation for getting started, the user guide, API reference and developer guide. It includes search, section navigation and light/dark modes.
To build the static HTML and offline ZIP from the source checkout:
poetry sync --with docs
poetry run python tools/build_docs.py
Open docs/_build/html/index.html, or extract dist/pipewhy-docs.zip and open
index.html. The documentation build guide
describes local previews and the generated files.
Background
PipeWhy separates source identity, normalized representation, fingerprints, observations and lineage evidence. Comparisons carry that context forward so a report can distinguish detected drift from missing or incompatible information. Saved queries work with the core package without reopening source data.
The architecture guide links the versioned contracts and acceptance records. Local benchmark results retain their measured hardware, source and dependency provenance; they are not universal performance claims.
Getting help
Use the issue tracker for bugs,
questions and proposals. Include the package version, command or API call,
backend, expected result and a minimal reproducible example. Keep private data
and credentials out of reports. poetry run pipewhy --help lists CLI commands.
Development and contributing
Follow the contributor requirements and developer guide. Work in small, meaningful commits tied to issues. Tests must check behavior, including failure paths.
poetry run python tools/quality.py
poetry run python -m pytest tests/gates tests/integration
poetry run python tools/build_docs.py
poetry build
The quality gate enforces Black, ty, dependency checks and pytest under
Coverage.py, with at least 95% statement and combined coverage and no coverage
exclusions. CI also builds the documentation with warnings treated as errors,
rebuilds the source distribution and checks clean installed packages for silent
runtime breaks. See the packaging guide.
License
Current package metadata is LicenseRef-Proprietary. No public open-source
license has been selected. Distribution preparation does not grant redistribution
rights or authorize publication.
Metadata
Release files for pipewhy 0.1.0.dev0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pipewhy-0.1.0.dev0.tar.gz | 129.7 kB | With provenance | Details for pipewhy-0.1.0.dev0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pipewhy-0.1.0.dev0-py3-none-any.whl | Python 3 | none | any | Details for pipewhy-0.1.0.dev0-py3-none-any.whl |
Total release size: 306.3 kB
Release files / pipewhy-0.1.0.dev0.tar.gz
| Download URL | pipewhy-0.1.0.dev0.tar.gz |
|---|---|
| Size | 129.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
744a8fc2a85b9e38bd81d437a8bcbc8192bce7522f28d24b0690633dc7294b24
|
|
BLAKE2b-256 checksum How to use checksums |
8336a6d1cf4f0a41f06c9f830f3c1ad4f3e032d9a8d395b14cb368bf2d352faf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logRelease files / pipewhy-0.1.0.dev0-py3-none-any.whl
| Download URL | pipewhy-0.1.0.dev0-py3-none-any.whl |
|---|---|
| Size | 176.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cce22b1b43cc34697d46ec0541e0cc9ad59fe155c191ad1b043b95cfc81b6db7
|
|
BLAKE2b-256 checksum How to use checksums |
d811bcc804e5d04128e5e83dc05ba920cb58686b51a66f2d5739cc97adc3dee0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logSecurity for pipewhy 0.1.0.dev0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for pipewhy-0.1.0.dev0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.