Tiny pipeline library for ordinary Python scripts.
Project description
pypelite
Pypelite is a tiny pipeline library for ordinary Python scripts.
Wrap the expensive steps with @pypelite.stage and run your script inside
pypelite.pipeline(...). Stage outputs are saved to disk, so a failed run can
resume from the completed steps, and a later run can refresh only the stages
you want to rerun.
import pypelite
@pypelite.stage("load", batch="symbols", batch_size=50, workers=4)
def load_prices(symbols):
return market_api.fetch_prices(symbols)
@pypelite.stage("features")
def build_features(prices_df):
return make_model_features(prices_df)
@pypelite.stage("train")
def train_model(features_df):
return fit_price_model(features_df)
with pypelite.pipeline("runs/price-model"):
prices_df = load_prices(["AAPL", "MSFT", "NVDA"])
features_df = build_features(prices_df)
model = train_model(features_df)
No DSL, no DAG boilerplate, no Airflow deployment. The Python code is the pipeline.
Installation
pip install pypelite
Documentation
Refresh, Skip, Clean
Control a run from the pipeline context.
with pypelite.pipeline(
path="runs/experiment",
refresh=["features"],
skip=["train"],
clean=["predict"],
until="features",
):
run_price_model()
refreshrecomputes named stages touched by the run.skipreturns a stage'sskip_valuewithout touching its cache.cleanremoves old keyed artifacts not touched by a successful run.untilstops after the named stage completes.
Advanced Features
Item Caches
Use key when each item should have its own saved result. Use ignore to
leave fields out of a composite key while still passing them to the function.
@pypelite.stage("predict", key=("symbol", "run_id"), ignore="run_id")
def predict_price(symbol, run_id, feature_row):
return model.predict(feature_row)
with pypelite.pipeline("runs/predictions"):
for symbol, feature_row in features_df.iterrows():
predict_price(symbol, run_id="daily", feature_row=feature_row)
Fanout
Use workers when fanout should run in parallel.
@pypelite.stage("features", key="symbol", batch="symbols", workers=4)
def build_symbol_features(symbols):
prices_df = market_api.fetch_prices(symbols)
return make_model_features_by_symbol(prices_df)
with pypelite.pipeline("runs/features"):
feature_rows = build_symbol_features(["AAPL", "MSFT", "NVDA"])
Batches
Use batch when work should run in chunks.
@pypelite.stage("predict", key="symbol", batch="rows", batch_size=200)
def predict_prices(rows):
return model_api.batch_predict(rows)
with pypelite.pipeline("runs/predictions"):
predictions = predict_prices(feature_rows)
Batch stages can run chunks in parallel with workers. Unkeyed batches use
temporary chunk files while building one final artifact; keyed batches save one
result file per key.
Shared Archives
Stages can choose named archives.
@pypelite.stage("prices", archive="market", key=("date", "symbol"))
def prices(date, symbol):
return market_api.price(date, symbol)
with pypelite.pipeline(
archives={"default": "runs/model", "market": "archive/market"},
):
run_price_model()
Shared archives make it easy for many experiments to reuse the same market data while keeping model outputs in their own run directories.
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 pypelite-0.1.4.tar.gz.
File metadata
- Download URL: pypelite-0.1.4.tar.gz
- Upload date:
- Size: 10.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55ee5a73fa7ab1a258c933f1f0296b4ea64cfc9a2fb0c83946ae7f75fc7dea1a
|
|
| MD5 |
85088b7c0e10d604fe947a6525eca25b
|
|
| BLAKE2b-256 |
94e5ca1aca32e652c29667a62ed1403804675fc91d6d13bf13cd4dadafc9de23
|
File details
Details for the file pypelite-0.1.4-py3-none-any.whl.
File metadata
- Download URL: pypelite-0.1.4-py3-none-any.whl
- Upload date:
- Size: 7.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31cf1e466c6acdebb31d97159278323c157d8fd60e114dd01a58fc512d2c00bd
|
|
| MD5 |
266ef11ea94b4f3e3bb4e93922c68697
|
|
| BLAKE2b-256 |
0b6fedcfc2c024d007373d635ee8e93809333f1c4d430dea9016dadb1c0a2f61
|