Skip to main content

data-product-forge-sdk

Build a data-product-forge plugin in 30 seconds. Get 15+ conformance tests for free.

Zero-dependency Python SDK for building plugins that extend the data-product-forge (a.k.a. FLUID) CLI. Write a plugin once, plug it in via Python entry-points. Four built-in roles, one mental model.

pip install data-product-forge-sdk
from fluid_sdk import CustomScaffold, Validator, ContractHelper

Dual naming, on purpose. PyPI distribution: data-product-forge-sdk. Import path: fluid_sdk. Same pattern as pyyaml ↔ yaml, scikit-learn ↔ sklearn. The PyPI name reflects the product brand; the import path stays short.

Zero dependencies beyond the Python standard library.

What can I build?

Role What it does When you'd build one
InfraProvider Provisions cloud resources (datasets, tables, IAM) You're adding support for a new cloud platform
CustomScaffold Generates files from a contract (CI configs, app code, IaC) Your org has a standard project layout you want every team to use
Validator Inspects a contract and emits findings You have governance / compliance / cost rules to enforce
CatalogAdapter Syncs product metadata to a catalog (DataHub, Atlan) You want fluid contracts to flow into your existing catalog

30-second example — your first plugin

# scaffold.py
from fluid_sdk import ContractHelper, CustomScaffold, write_file_action


class HelloScaffold(CustomScaffold):
    name = "hello"

    def plan(self, contract):
        c = ContractHelper(contract)
        return [
            write_file_action(
                path="README.md",
                content=f"# {c.name}\n\n{c.description}\n".encode("utf-8"),
            ).to_dict(),
        ]
# tests/test_scaffold.py
from fluid_sdk.testing import CustomScaffoldTestHarness, LOCAL_CONTRACT
from scaffold import HelloScaffold


class TestHelloScaffold(CustomScaffoldTestHarness):
    plugin_class = HelloScaffold
    sample_contracts = [LOCAL_CONTRACT]

pytest runs 15+ conformance tests automatically. Determinism, idempotency, path-traversal safety, role declaration — all verified.

→ Full step-by-step in docs/getting-started/.

How users plug your plugin into the FLUID CLI

Plugin authors register via pyproject.toml:

[project.entry-points."fluid_build.custom_scaffolds"]
hello = "my_pkg.scaffold:HelloScaffold"

End users then:

pip install data-product-forge               # the CLI
pip install data-product-forge-custom-scaffold   # the engine
pip install your-plugin               # what you wrote

And in any contract:

extensions:
  customScaffold:
    libraries:
      - id: ci
        source: { kind: pypi, package: your-plugin, version: ">=0.1" }
    patterns:
      - use: ci:hello
fluid generate custom-scaffold
# Your plugin's files appear in the workspace.

Documentation

Start here:

Working examples (every one runs pytest + python demo.py standalone):

Reference:

The public API in 10 lines

from fluid_sdk import (
    CustomScaffold,        # subclass for file-emitting plugins
    InfraProvider,         # subclass for cloud-infra plugins
    Validator,             # subclass for contract-inspection plugins
    CatalogAdapter,        # subclass for catalog-sync plugins
    ContractHelper,        # wrap any contract dict — typed read access
    write_file_action,     # builds a canonical write_file PluginAction
    Finding,               # validator authors emit these
)
# Everything else is in the role docs.

Why a separate SDK?

The full data-product-forge CLI pulls ~40 transitive dependencies. As a plugin author, you don't need any of that — you only need:

  • BasePlugin + the four role subclasses
  • Action / result / metadata / capabilities data types
  • ContractHelper for parsing fluid contracts
  • A test harness

…all in pure Python stdlib. The end user installs the full CLI; you only need data-product-forge-sdk. Faster pip install, no version-resolution headaches, your plugin works against multiple data-product-forge CLI versions.

License

Apache-2.0. See LICENSE.

Metadata

Release files for data-product-forge-sdk 0.10.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for data-product-forge-sdk 0.10.0
File Size Uploaded
data_product_forge_sdk-0.10.0.tar.gz 37.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for data-product-forge-sdk 0.10.0
File Interpreter ABI Platform
data_product_forge_sdk-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 86.6 kB

Release files / data_product_forge_sdk-0.10.0.tar.gz

Download URL data_product_forge_sdk-0.10.0.tar.gz
Size 37.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3d87f1e3044fee4a744228255af9990f8d1a8c48338ac9998a82a83d6daa83bb
BLAKE2b-256 checksum
How to use checksums
db95c102c0783c6510b7773c202e940fa62e9757bc16e53ebcf740dc7975ae86
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 27, 2026.

Transparency log

Release files / data_product_forge_sdk-0.10.0-py3-none-any.whl

Download URL data_product_forge_sdk-0.10.0-py3-none-any.whl
Size 48.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
32d5cef7bb3fa4cddf685ad832438ae9535c6fbce5bcc362453fa8e7cc5a2e37
BLAKE2b-256 checksum
How to use checksums
ea566de48203beb9d45cc8af9e2f2435ab74497c709d9c52454831bd65bde871
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.10.0 This release

2 release files

0.9.1

2 release files

0.9.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page