Metadata-Version: 2.4
Name: fluid-provider-sdk
Version: 0.1.0
Summary: SDK for building FLUID data product providers — zero dependencies
Author: Agentics AI / DustLabs
License: Apache-2.0
Project-URL: Documentation, https://agentics-rising.github.io/forge_docs/
Project-URL: Repository, https://github.com/Agentics-Rising/forge-cli-sdk
Project-URL: Issues, https://github.com/Agentics-Rising/forge-cli-sdk/issues
Keywords: fluid,data-products,providers,sdk,plugin
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Typing :: Typed
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# fluid-provider-sdk

Zero-dependency SDK for building [FLUID](https://open-data-protocol.github.io/fluid/) data product providers.

## Why a separate package?

Third-party provider authors only need the `BaseProvider` ABC and a handful of
types. Installing the full `fluid-build` CLI (~40 dependencies) just to develop
a provider is overkill. This SDK package has **zero external dependencies**.

## Install

```bash
pip install fluid-provider-sdk
```

## Quick Start

```python
from fluid_provider_sdk import BaseProvider, ApplyResult, ProviderError

class MyCloudProvider(BaseProvider):
    name = "mycloud"

    def plan(self, contract):
        return [{"op": "create_table", "resource_id": "t1"}]

    def apply(self, actions):
        import time
        start = time.time()
        results = []
        for action in actions:
            results.append({"op": action["op"], "status": "ok"})
        return ApplyResult(
            provider=self.name,
            applied=len(results),
            failed=0,
            duration_sec=round(time.time() - start, 3),
            timestamp="",
            results=results,
        )
```

Register via entry point in your `pyproject.toml`:

```toml
[project.entry-points."fluid_build.providers"]
mycloud = "my_package.provider:MyCloudProvider"
```

## API Reference

See [CREATING_PROVIDERS.md](../fluid-forge-cli/docs/CREATING_PROVIDERS.md) for
the full guide.
