Consist is a caching and provenance layer for scientific simulation workflows. It records the code, configuration, input data, and output artifacts behind each run so expensive steps can be skipped safely and results remain queryable after the fact.
Consist is useful when a workflow has:
- long-running model steps that should cache-hit when inputs are unchanged;
- scenario variants that need explicit lineage and comparison;
- file-based tools that need stable local paths but still need canonical provenance;
- post-run questions like "which config produced this output?"
Installation
pip install consist
Optional integrations are installed as extras:
pip install "consist[git]"
pip install "consist[ingest]"
pip install "consist[docker]"
pip install "consist[ibis]"
[!NOTE] Consist is pre-
1.0. It is ready for real workflows, but minor releases may still include breaking changes while the API settles.
Quick Example
from pathlib import Path
import pandas as pd
import consist
from consist import ExecutionOptions, Tracker
tracker = Tracker(run_dir="./runs", db_path="./provenance.duckdb")
def clean_data(raw: Path, threshold: float = 0.5) -> dict[str, Path]:
df = pd.read_parquet(raw)
out = Path("./cleaned.parquet")
df[df["value"] > threshold].to_parquet(out)
return {"cleaned": out}
first = tracker.run(
fn=clean_data,
inputs={"raw": Path("raw.parquet")},
config={"threshold": 0.5},
outputs=["cleaned"],
execution_options=ExecutionOptions(input_binding="paths"),
)
second = tracker.run(
fn=clean_data,
inputs={"raw": Path("raw.parquet")},
config={"threshold": 0.5},
outputs=["cleaned"],
execution_options=ExecutionOptions(input_binding="paths"),
)
print(first.cache_hit, second.cache_hit) # False, True
cleaned = consist.load_df(second.outputs["cleaned"])
In this example, input_binding="paths" tells Consist to pass local Path objects
into the callable instead of loading input files. Those same paths are still hashed
and recorded for cache identity and lineage. For tools that need inputs copied to
specific local filenames, see Usage Guide.
Documentation
| Start here | Use it for |
|---|---|
| Quickstart | First tracked run and cache hit |
| First Workflow | Two-step pipeline with explicit artifact links |
| Usage Guide | Choosing between run, trace, and scenario |
| Caching & Hydration | Cache identity, hit behavior, and output recovery concepts |
| Historical Recovery | Restoring archived outputs and staging inputs |
| CLI Reference | Inspecting runs, artifacts, lineage, and schemas |
| API Reference | Public Python API and generated signatures |
Etymology
In railroad terminology, a consist is the lineup of locomotives and cars that make up a train. In this library, a consist is the immutable record of the code, config, inputs, and outputs coupled together to produce a result.
Metadata
Release files for consist 0.3.5
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 |
|---|---|---|---|---|
| consist-0.3.5.tar.gz | 529.1 kB | Without provenance | Details for consist-0.3.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| consist-0.3.5-py3-none-any.whl | Python 3 | none | any | Details for consist-0.3.5-py3-none-any.whl |
Total release size: 1.1 MB
Release files / consist-0.3.5.tar.gz
| Download URL | consist-0.3.5.tar.gz |
|---|---|
| Size | 529.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4f48baf3e835ea63884f2bd0585c977144904c5d1eca5c835ab014463fe93b7d
|
|
BLAKE2b-256 checksum How to use checksums |
5d78289f26062022b311ec4f56f03a7ccea1768ad2b0d329fb1f04580438036c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|
Release files / consist-0.3.5-py3-none-any.whl
| Download URL | consist-0.3.5-py3-none-any.whl |
|---|---|
| Size | 582.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
22ecf76fc86e19c283d664a6ab43bc8e606cb0cac5c124da0e2f24f321a09d5c
|
|
BLAKE2b-256 checksum How to use checksums |
e1e9d4e3202beba47c5ee7914adf5a6ad35f4721d10cdba4a3ba4798b4bd4e94
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.9
|
Security for consist 0.3.5
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A 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.