Pivot: High-Performance Python Pipeline Tool
Change your code. Pivot knows what to run.
Pivot is a Python pipeline tool with automatic code change detection. Stages are plain
Python functions; you wire them together by calling them inside a Pipeline block, and
Pivot works out what needs to re-run.
- Automatic code change detection using Python introspection
- No paths in pipeline code: Pivot chooses where every output is stored
- Per-stage lock files for fast parallel writes
- Warm worker pools with preloaded imports
- Content-addressable caching with S3 or Google Cloud Storage remotes
Python: 3.13+ | Platform: Unix (Linux/macOS)
Quick Start
pip install pivot
mkdir my_project && cd my_project
git init && pivot init
Put a raw input under data/raw/:
mkdir -p data/raw
printf 'name,value\nalice,100\nbob,200\ncarol,\n' > data/raw/records.csv
Define stages and the pipeline in pipeline.py:
# pipeline.py
import pandas as pd
from pivot import Pipeline, StageParams, stage
class CleanParams(StageParams):
min_value: int = 0
@stage
def clean(records: pd.DataFrame, params: CleanParams) -> pd.DataFrame:
kept = records.dropna()
return kept[kept["value"] >= params.min_value]
@stage
def summarize(rows: pd.DataFrame) -> dict:
return {"count": len(rows), "total": int(rows["value"].sum())}
with Pipeline("demo") as pipeline:
records = pipeline.input("records.csv")
cleaned = clean(records, params=CleanParams(min_value=50))
summarize(cleaned)
Then run it; Pivot resolves the DAG from the handles passed between stages:
pivot repro # runs clean, then summarize
pivot repro # nothing changed: both stages are cached
pivot repro --watch # re-run automatically on file changes
Pivot writes outputs to data/demo/clean.jsonl and data/demo/summarize.yaml.
Learn More
- Documentation
- Source code
- Interactive TUI:
pip install pivot[tui], thenpivot repro --tui
Metadata
Release files for pivot 0.5.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 | Provenance | |
|---|---|---|---|---|
| pivot-0.5.0.tar.gz | 348.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pivot-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 752.6 kB
Release files / pivot-0.5.0.tar.gz
| Download URL | pivot-0.5.0.tar.gz |
|---|---|
| Size | 348.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9237e3ec8781c92b3e68ba6b3e8e18600116b916f6979a417d99c6d693f213eb
|
|
BLAKE2b-256 checksum How to use checksums |
6eb4abc17a7509488e929aeffba81780907e62061094ef5cfc872183cf4e3ef8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / pivot-0.5.0-py3-none-any.whl
| Download URL | pivot-0.5.0-py3-none-any.whl |
|---|---|
| Size | 404.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f42e1681860752bbeb7af83b0c0fb79f2d9e26e7b4d776e33a7dc6af663b5979
|
|
BLAKE2b-256 checksum How to use checksums |
86033bd5e12e1628ef8812f2aa2ee92417a202384d68d7fa015354de0199dd8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for pivot 0.5.0
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.