Skip to main content

Typed, contract-driven data pipeline modeling for Python.

This project has been archived.

The maintainers of this project have marked this project as archived. No new releases are expected.

Project description

Pipelantic banner

Pipelantic

Documentation Status

Catch incompatible data-pipeline wiring before you process data.

Define datasets, transformations, and pipelines as typed Python classes. Validate and plan them once. Run locally today; swap Polars or Pandas backends without rewriting the logical pipeline.

Status: Alpha 0.5.0 — local runtime + optional Polars/Pandas plugins. SQL, Spark, and Airflow compilation are not shipped.

Install

Requires Python 3.11 or newer.

pip install pipelantic
# optional dataframe engines
pip install pipelantic-polars
pip install pipelantic-pandas

Verify:

python -c "import pipelantic; print(pipelantic.__version__)"

Development

Requires uv.

uv sync
uv run pytest
uv run ruff check .
uv run ruff format .

uv sync creates .venv, installs the package in editable mode, and installs the dev dependency group (pytest, ruff, mkdocs) by default.

Release

Tag a version that matches src/pipelantic/_version.py, then push the tag:

git tag v0.5.0
git push origin v0.5.0

GitHub Actions runs checks and publishes to PyPI using the PYPI_API_TOKEN repository secret.

Quick example

from pipelantic import (
    Data,
    Input,
    Output,
    Pipeline,
    PipelineRuntime,
    Sink,
    Source,
    Transformation,
)


class RawCustomer(Data):
    customer_id: int
    first_name: str
    last_name: str


class Customer(Data):
    customer_id: int
    full_name: str


class NormalizeCustomers(Transformation):
    customers: Input[RawCustomer]
    result: Output[Customer]


class CustomerPipeline(Pipeline):
    raw: Source[RawCustomer] = Source(binding="customer_source")
    normalized = NormalizeCustomers.step(customers=raw)
    curated: Sink[Customer] = Sink(
        input=normalized.result,
        binding="customer_sink",
    )


@NormalizeCustomers.implementation("local")
def normalize(customers: list[RawCustomer]) -> list[Customer]:
    return [
        Customer(
            customer_id=row.customer_id,
            full_name=f"{row.first_name} {row.last_name}",
        )
        for row in customers
    ]


CustomerPipeline.validate(profile="development").raise_for_errors()

runtime = PipelineRuntime()
runtime.memory.seed(
    "customer_source",
    [RawCustomer(customer_id=1, first_name="Ada", last_name="Lovelace")],
)
run_report = CustomerPipeline.run(profile="development", runtime=runtime)
print(runtime.memory.get("customer_sink"))

Run the complete tested version at examples/quickstart.py.

Current capability boundary

Capability 0.5
Typed modeling, validation, contracts, and planning Available
Local Python execution and run reports Available
Memory, callable, JSON, CSV, and no-write storage Available
Polars and Pandas dataframe plugins Available (pipelantic-polars / pipelantic-pandas)
SQL, Spark, and Airflow plugins Not yet available

Documentation

License

MIT

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

pipelantic-0.5.0.tar.gz (133.4 kB view details)

Uploaded Source

Built Distribution

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

pipelantic-0.5.0-py3-none-any.whl (143.7 kB view details)

Uploaded Python 3

File details

Details for the file pipelantic-0.5.0.tar.gz.

File metadata

  • Download URL: pipelantic-0.5.0.tar.gz
  • Upload date:
  • Size: 133.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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

Hashes for pipelantic-0.5.0.tar.gz
Algorithm Hash digest
SHA256 8af448fc37912c4ec39194bd76bbfde53a40f29bc3969ac3afb1744260fde62f
MD5 752381369985586a6910cdce70399d56
BLAKE2b-256 37518a95925d76d3ca657201f1ef3ccb7e583e274402beb80d4a950e95d1310d

See more details on using hashes here.

File details

Details for the file pipelantic-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: pipelantic-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 143.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","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

Hashes for pipelantic-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b20cd7604696a38d92ed2b0a4c9d98e8e13358bae2fa0c601ed0ae1ae66370f3
MD5 bc47351c9579eac5f66ed6e4ad24f2d8
BLAKE2b-256 7a3848d7bd726b1ae59cc39c83d22f0e4871ba93d987b112f6d9cfb5340a0940

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