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.0.tar.gz (26.4 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.0-py3-none-any.whl (33.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: data_product_forge_sdk-0.9.0.tar.gz
  • Upload date:
  • Size: 26.4 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.0.tar.gz
Algorithm Hash digest
SHA256 e142f5db56e77adc0b0b28d471523b20c12dae6953681b09f0b6a3e845bcbf97
MD5 fb9644802f2e8fb11038f758838c8409
BLAKE2b-256 612d39f7cb00c2d57b945bd7b8dcf67cef6a5d16d08aa51d8e2a453ce29aa8bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for data_product_forge_sdk-0.9.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for data_product_forge_sdk-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9e986c4b13154b0878c26195fb6b04f517e6e4dbdae0650495a8290a69b7eba0
MD5 f05e7b5eaf688435235576939c976ef9
BLAKE2b-256 076a8574101f679a03238a2b93ffaf328e70b77a0cace8e4818cd490bdb49bba

See more details on using hashes here.

Provenance

The following attestation bundles were made for data_product_forge_sdk-0.9.0-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