High-performance Python pipeline tool with automatic code change detection
Project description
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. Define stages with typed Python functions and annotations, and Pivot figures out what needs to re-run — no manual dependency declarations, no stale caches.
- Automatic code change detection using Python introspection
- Per-stage lock files for fast parallel writes
- Warm worker pools with preloaded imports
- Content-addressable caching with S3 remote storage
- DVC compatibility via YAML export
Python: 3.13+ | Platform: Unix (Linux/macOS)
Quick Start
pip install pivot
Define stages as pure, typed functions:
# pipeline.py
from typing import Annotated, TypedDict
import pandas
import pivot
class PreprocessOutputs(TypedDict):
clean: Annotated[pandas.DataFrame, pivot.Out("processed.csv", pivot.loaders.CSV())]
def preprocess(
raw: Annotated[pandas.DataFrame, pivot.Dep("data.csv", pivot.loaders.CSV())],
) -> PreprocessOutputs:
return PreprocessOutputs(clean=raw.dropna())
pipeline = pivot.Pipeline("my_pipeline")
pipeline.register(preprocess)
Then run the pipeline — Pivot resolves the DAG from artifact dependencies:
pivot repro # Run the entire pipeline
pivot repro # Instant - nothing changed
pivot repro --watch # Re-run automatically on file changes
Learn More
- Documentation
- Source code
- Interactive TUI:
pip install pivot[tui], thenpivot repro --tui
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pivot-0.1.0.tar.gz.
File metadata
- Download URL: pivot-0.1.0.tar.gz
- Upload date:
- Size: 277.0 kB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
148e26b4c2c83e41eb6ae13d96e767e67f02188949c3012aa0a0fa072b9727a9
|
|
| MD5 |
ff6c716283dd066e761c34637e20e392
|
|
| BLAKE2b-256 |
51ea900b07fbde59e43ac6a9fb517b7e14b52319f4512870e05d97c4efb54d7b
|
File details
Details for the file pivot-0.1.0-py3-none-any.whl.
File metadata
- Download URL: pivot-0.1.0-py3-none-any.whl
- Upload date:
- Size: 332.9 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b8cac463ef13c64aaff7e36ce5540e909c6ee4045db70605565426696aa32d3
|
|
| MD5 |
5b6013fab201789b55ef4fd00ef8c2ab
|
|
| BLAKE2b-256 |
74b29034e8dc9f585fe1fbbebf222b4fd01449c310e51e8fa8addf60ef634382
|