Skip to main content

Zero-dependency SDK for building data-product-forge plugins — custom scaffolds, validators, cloud-infrastructure providers, catalog adapters. Import as `fluid_sdk`.

Project description

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 pyyamlyaml, scikit-learnsklearn. 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.

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

data_product_forge_sdk-0.9.1.tar.gz (27.8 kB view details)

Uploaded Source

Built Distribution

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

data_product_forge_sdk-0.9.1-py3-none-any.whl (35.4 kB view details)

Uploaded Python 3

File details

Details for the file data_product_forge_sdk-0.9.1.tar.gz.

File metadata

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

File hashes

Hashes for data_product_forge_sdk-0.9.1.tar.gz
Algorithm Hash digest
SHA256 58d06538bccd54cbdc432628893ff4374b72eed9c35b47c74bdc5959c9dc2f43
MD5 e527383066dcf5ab3c54c32900c7d0fc
BLAKE2b-256 e7e590e5d25b3282e0e79113e081d9930cbdd486de3b9964b3c706f4aded995c

See more details on using hashes here.

Provenance

The following attestation bundles were made for data_product_forge_sdk-0.9.1.tar.gz:

Publisher: release.yml on Agenticstiger/forge-cli-sdk

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

File details

Details for the file data_product_forge_sdk-0.9.1-py3-none-any.whl.

File metadata

File hashes

Hashes for data_product_forge_sdk-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a4f1e7b65471cf4a516ed56b60f0f0e2874b5f0ebe3351c2f46528ae1e6c5f47
MD5 c6cbf7e451d5d46306bdf794af08c5d0
BLAKE2b-256 67b71916f9fcb3875cd9f33249f4684b0979dc1116bfcea57d1b0424ea1252fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for data_product_forge_sdk-0.9.1-py3-none-any.whl:

Publisher: release.yml on Agenticstiger/forge-cli-sdk

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