factcircuit
FactCircuit는 불변 출처와 단계별 검증, 제한된 검색, 재현 가능한 평가를 제공하는 감사 가능한 주장·증거 검증 루프입니다
Fluid Forge 데이터 제품 계약 한 번 작성 후 어디서나 배포 DuckDB 로컬 테스트
Fluid Forge is for data engineers who want to write a data product contract once and deploy it anywhere. Build and test locally with DuckDB, then push the same contract to BigQu...
데이터Python · ShellGitHub @Agenticstiger온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Zero-dependency SDK for building FLUID data product providers
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
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.
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.README 전문 보기 ↗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 aspyyaml↔yaml,scikit-learn↔sklearn. The PyPI name reflects the product brand; the import path stays short.
Zero dependencies beyond the Python standard library.
| 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 |
# 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/.
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.
Start here:
Working examples (every one runs pytest + python demo.py standalone):
examples/hello-scaffold/ — the smallest possible plugin (~30 LOC)examples/gitlab-ci-scaffold/ — full CI generator (~150 LOC, 27 tests)examples/steward-validator/ — custom governance rule (~80 LOC, 22 tests)Reference:
docs/reference/architecture.md — the four-layer modeldocs/reference/role-taxonomy.md — pick the right roledocs/reference/contract-parsing.md — ContractHelper APIdocs/reference/conformance-testing.md — test harnessesfrom 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.
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 subclassesContractHelper for parsing fluid contracts…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.
Apache-2.0. See LICENSE.