Skip to main content

Tiny pipeline library for ordinary Python scripts.

Project description

pypelite

Pypelite is a tiny pipeline library for ordinary Python scripts.

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)

Pipelines are resumable: completed stages load from disk, and selected stages can be refreshed when they need to run again. No DSL, no DAG boilerplate, no Airflow deployment. The Python code is the pipeline.

Installation

pip install pypelite

Refresh, Skip, Clean

Control a run from the pipeline context.

with pypelite.pipeline(
    "runs/experiment",
    refresh=["features"],
    skip=["train"],
    clean=["predict"],
    until="features",
):
    run_price_model()
  • refresh recomputes named stages touched by the run.
  • skip returns a stage's skip_value without touching its cache.
  • clean removes old keyed artifacts not touched by a successful run.
  • until stops after the named stage completes.

Advanced Features

Item Caches

Use key when each item should have its own saved result.

@pypelite.stage("predict", key="symbol")
def predict_price(symbol, feature_row):
    return model.predict(feature_row)

with pypelite.pipeline("runs/predictions"):
    for symbol, feature_row in features_df.iterrows():
        predict_price(symbol, 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 assemble one final artifact; keyed batches save one result 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypelite-0.1.0.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pypelite-0.1.0-py3-none-any.whl (6.1 kB view details)

Uploaded Python 3

File details

Details for the file pypelite-0.1.0.tar.gz.

File metadata

  • Download URL: pypelite-0.1.0.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for pypelite-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1a8f2c42d4be819272c5bd0475b83595bfb495de843782826972b00afebcedea
MD5 36ede9bfacddeb5f9a33b40a0ae9a0e4
BLAKE2b-256 de8da13030835b96f43430db015799b2b1af2f1fdfcb4bf957f7301a57de4265

See more details on using hashes here.

File details

Details for the file pypelite-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pypelite-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for pypelite-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d38423a35edd81e99bbe873993723da9ef3efceec8b8491ed12edb71bad35930
MD5 b119fb216ff6b7433764fc976b9c003c
BLAKE2b-256 ccff416661e7878eaa037f825344497ee52e8f6ad720c2e2cef2efb35401dd7e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page