Skip to main content

Cloud-agnostic, polyglot data-pipeline framework: one contract set, adapters per cloud. Python side of Culvert (Java twin on Maven Central: com.enrichmeai.culvert).

Project description

Culvert

A cloud-agnostic, polyglot data-pipeline framework. One contract set — Source, Sink, Transform, Pipeline, RuntimeContext, BlobStore, Warehouse, JobControlRepository, and friends — realised in Java and Python, with cloud specifics behind adapters. Define the pipeline once against contracts; point it at an emulator on your laptop, a dev project, or production by wiring, not rewriting.

  • Contract-driven — the language-neutral spec is the portability boundary. Business logic depends only on contracts.
  • Two clouds today — GCP is the first full implementation; AWS is a real (Java) adapter family with the same pipeline proven on both. Azure is on the roadmap.
  • No application framework in the core — plain Python Protocols + entry-point auto-discovery; composes into Beam pipelines, Airflow DAGs, or a script on your laptop.
  • Local-first — the whole stack runs against emulators with zero cloud account; cloud is where you prove and ship, not where you develop.

Install

pip install culvert                 # core contracts only (no cloud SDKs)
pip install culvert[gcp]            # + BigQuery, GCS, Pub/Sub, Secret Manager, observability
pip install culvert[orchestration]  # + Airflow-side DAG factory, operators, sensors
pip install culvert[transform]      # + dbt integration
pip install culvert[all]

Python ≥ 3.10. For 0.1.0 the import packages keep their library names — the contracts live in data_pipeline_core:

from data_pipeline_core import autoconfig

config = autoconfig.discover()          # entry-point adapter discovery
blob_store = config.blob_store()        # GcsBlobStore if culvert[gcp] installed

The Java twin ships as com.enrichmeai.culvert:* on Maven Central — same contracts, Java owns the Beam/Dataflow execution layer; Python owns the Airflow runtime and dbt packaging.

Status

0.1.0 — first public release. Built and validated against a real GCP project (Cloud Run, BigQuery, Pub/Sub, event-driven end-to-end) before publishing. GCP adapters are production-shaped; the AWS family is Java-side; Azure is a roadmap skeleton. Honest limitations are documented per adapter in the source.

Docs, architecture, worked example deployments, and the engineering story: https://github.com/enrichmeai/culvert

MIT licensed.

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

culvert-0.1.0.tar.gz (124.1 kB view details)

Uploaded Source

Built Distribution

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

culvert-0.1.0-py3-none-any.whl (183.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: culvert-0.1.0.tar.gz
  • Upload date:
  • Size: 124.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for culvert-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b0dee180ce4ca1de4bffc4d925a96f70c04e6767a5f753759b3cd9d090e00e00
MD5 1e61d438bb349c185b0ad01888a333b9
BLAKE2b-256 42a2060ec47362b268bfa5a0dbd3e420244efb601f0ce24af2a1dfa7c8f12583

See more details on using hashes here.

Provenance

The following attestation bundles were made for culvert-0.1.0.tar.gz:

Publisher: publish-pypi.yml on enrichmeai/culvert

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: culvert-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 183.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for culvert-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2420beb2a07237a0ea9489680b7aa18814914abf0ac9055bd3e4cf3ea7604c4c
MD5 2e7d5ef31fab9334ac36c391eb958a39
BLAKE2b-256 fa6aa236e73598ed18476077b0a4223794760dfe7f2017b2c0a87fecb225fe25

See more details on using hashes here.

Provenance

The following attestation bundles were made for culvert-0.1.0-py3-none-any.whl:

Publisher: publish-pypi.yml on enrichmeai/culvert

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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