data-product-forge 0.7.10__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data_product_forge-0.7.10.dist-info/METADATA +523 -0
- data_product_forge-0.7.10.dist-info/RECORD +459 -0
- data_product_forge-0.7.10.dist-info/WHEEL +5 -0
- data_product_forge-0.7.10.dist-info/entry_points.txt +9 -0
- data_product_forge-0.7.10.dist-info/licenses/LICENSE +202 -0
- data_product_forge-0.7.10.dist-info/licenses/NOTICE +29 -0
- data_product_forge-0.7.10.dist-info/top_level.txt +1 -0
- fluid_build/__init__.py +226 -0
- fluid_build/__main__.py +21 -0
- fluid_build/auth.py +109 -0
- fluid_build/build-manifest.yaml +353 -0
- fluid_build/cli/__init__.py +549 -0
- fluid_build/cli/__main__.py +21 -0
- fluid_build/cli/_command_center.py +329 -0
- fluid_build/cli/_common.py +188 -0
- fluid_build/cli/_io.py +38 -0
- fluid_build/cli/_logging.py +62 -0
- fluid_build/cli/agent_specs/domain_keywords.yaml +78 -0
- fluid_build/cli/agent_specs/finance.yaml +293 -0
- fluid_build/cli/agent_specs/healthcare.yaml +254 -0
- fluid_build/cli/agent_specs/retail.yaml +295 -0
- fluid_build/cli/agent_specs/telco.yaml +248 -0
- fluid_build/cli/ai_setup.py +796 -0
- fluid_build/cli/apply.py +1115 -0
- fluid_build/cli/artifact_ci_state.py +388 -0
- fluid_build/cli/artifact_discovery_cache.py +140 -0
- fluid_build/cli/artifact_envelope.py +182 -0
- fluid_build/cli/artifact_paths.py +271 -0
- fluid_build/cli/artifact_receipts.py +311 -0
- fluid_build/cli/artifact_scan.py +242 -0
- fluid_build/cli/artifact_writer.py +216 -0
- fluid_build/cli/auth.py +2481 -0
- fluid_build/cli/bootstrap.py +558 -0
- fluid_build/cli/compile.py +228 -0
- fluid_build/cli/config.py +688 -0
- fluid_build/cli/console.py +103 -0
- fluid_build/cli/context.py +87 -0
- fluid_build/cli/contract_tests.py +63 -0
- fluid_build/cli/contract_validation.py +1288 -0
- fluid_build/cli/core.py +466 -0
- fluid_build/cli/datamesh_manager.py +508 -0
- fluid_build/cli/demo.py +396 -0
- fluid_build/cli/diff.py +136 -0
- fluid_build/cli/docs_build.py +49 -0
- fluid_build/cli/doctor.py +661 -0
- fluid_build/cli/errors.py +270 -0
- fluid_build/cli/execute.py +343 -0
- fluid_build/cli/export.py +221 -0
- fluid_build/cli/export_opds.py +58 -0
- fluid_build/cli/forge.py +891 -0
- fluid_build/cli/forge_agent_specs.py +367 -0
- fluid_build/cli/forge_agents.py +152 -0
- fluid_build/cli/forge_context.py +353 -0
- fluid_build/cli/forge_contract_factory.py +228 -0
- fluid_build/cli/forge_contract_fragments.py +159 -0
- fluid_build/cli/forge_copilot_agent.py +551 -0
- fluid_build/cli/forge_copilot_agent_loop.py +366 -0
- fluid_build/cli/forge_copilot_contract_helpers.py +967 -0
- fluid_build/cli/forge_copilot_discovery.py +561 -0
- fluid_build/cli/forge_copilot_interview.py +1029 -0
- fluid_build/cli/forge_copilot_llm_providers.py +1734 -0
- fluid_build/cli/forge_copilot_memory.py +786 -0
- fluid_build/cli/forge_copilot_memory_mixin.py +291 -0
- fluid_build/cli/forge_copilot_personal_memory.py +268 -0
- fluid_build/cli/forge_copilot_prompts.py +424 -0
- fluid_build/cli/forge_copilot_response_schema.py +263 -0
- fluid_build/cli/forge_copilot_runtime.py +934 -0
- fluid_build/cli/forge_copilot_scaffold_mixin.py +402 -0
- fluid_build/cli/forge_copilot_schema_inference.py +695 -0
- fluid_build/cli/forge_copilot_skills_cache.py +134 -0
- fluid_build/cli/forge_copilot_taxonomy.py +531 -0
- fluid_build/cli/forge_copilot_tools.py +340 -0
- fluid_build/cli/forge_dialogs.py +837 -0
- fluid_build/cli/forge_domain_agent_base.py +349 -0
- fluid_build/cli/forge_domain_enrichment.py +194 -0
- fluid_build/cli/forge_modes.py +2506 -0
- fluid_build/cli/forge_team_memory.py +250 -0
- fluid_build/cli/forge_ui.py +552 -0
- fluid_build/cli/forge_validation.py +302 -0
- fluid_build/cli/generate.py +146 -0
- fluid_build/cli/generate_airflow.py +187 -0
- fluid_build/cli/generate_ci.py +86 -0
- fluid_build/cli/generate_schedule.py +312 -0
- fluid_build/cli/generate_standard.py +264 -0
- fluid_build/cli/generate_transformation.py +294 -0
- fluid_build/cli/help_advanced.py +106 -0
- fluid_build/cli/help_formatter.py +882 -0
- fluid_build/cli/hooks.py +147 -0
- fluid_build/cli/ide.py +1024 -0
- fluid_build/cli/import_cmd.py +602 -0
- fluid_build/cli/industry_skills/__init__.py +233 -0
- fluid_build/cli/industry_skills/_tools.yaml +29 -0
- fluid_build/cli/industry_skills/finance.yaml +51 -0
- fluid_build/cli/industry_skills/healthcare.yaml +53 -0
- fluid_build/cli/industry_skills/retail.yaml +55 -0
- fluid_build/cli/industry_skills/telco.yaml +48 -0
- fluid_build/cli/init.py +1927 -0
- fluid_build/cli/init_samples.py +168 -0
- fluid_build/cli/init_scan.py +335 -0
- fluid_build/cli/market.py +3315 -0
- fluid_build/cli/marketplace.py +594 -0
- fluid_build/cli/next_steps.py +197 -0
- fluid_build/cli/odcs.py +469 -0
- fluid_build/cli/odps_standard.py +335 -0
- fluid_build/cli/opds.py +449 -0
- fluid_build/cli/orchestration.py +1023 -0
- fluid_build/cli/performance.py +543 -0
- fluid_build/cli/pipeline_generator.py +512 -0
- fluid_build/cli/plan.py +586 -0
- fluid_build/cli/plugins.py +917 -0
- fluid_build/cli/policy_apply.py +94 -0
- fluid_build/cli/policy_check.py +529 -0
- fluid_build/cli/policy_compile.py +59 -0
- fluid_build/cli/preview.py +58 -0
- fluid_build/cli/product_add.py +169 -0
- fluid_build/cli/product_new.py +70 -0
- fluid_build/cli/provider_action_executor.py +279 -0
- fluid_build/cli/provider_cmds.py +71 -0
- fluid_build/cli/provider_init.py +392 -0
- fluid_build/cli/publish.py +514 -0
- fluid_build/cli/resilience.py +529 -0
- fluid_build/cli/scaffold_ci.py +194 -0
- fluid_build/cli/scaffold_composer.py +80 -0
- fluid_build/cli/security.py +535 -0
- fluid_build/cli/skills_cmd.py +263 -0
- fluid_build/cli/split.py +154 -0
- fluid_build/cli/status.py +476 -0
- fluid_build/cli/test.py +701 -0
- fluid_build/cli/validate.py +778 -0
- fluid_build/cli/verify.py +985 -0
- fluid_build/cli/version_cmd.py +305 -0
- fluid_build/cli/viz_graph.py +1634 -0
- fluid_build/cli/viz_plan.py +68 -0
- fluid_build/cli/viz_provider_actions.py +356 -0
- fluid_build/cli/workspace.py +1133 -0
- fluid_build/cli/workspace_config.py +299 -0
- fluid_build/config.py +18 -0
- fluid_build/config_manager.py +561 -0
- fluid_build/contract_tests.py +403 -0
- fluid_build/credentials/__init__.py +93 -0
- fluid_build/credentials/adapters.py +242 -0
- fluid_build/credentials/dotenv_store.py +183 -0
- fluid_build/credentials/encrypted_store.py +204 -0
- fluid_build/credentials/keyring_store.py +132 -0
- fluid_build/credentials/resolver.py +389 -0
- fluid_build/engines/__init__.py +65 -0
- fluid_build/engines/base.py +180 -0
- fluid_build/engines/dataflow/__init__.py +255 -0
- fluid_build/engines/dataform/__init__.py +324 -0
- fluid_build/engines/dbt/__init__.py +129 -0
- fluid_build/engines/dbt/models.py +318 -0
- fluid_build/engines/dbt/profiles.py +129 -0
- fluid_build/engines/dbt/project_yml.py +80 -0
- fluid_build/engines/dbt/schema_yml.py +181 -0
- fluid_build/engines/dbt/sources.py +124 -0
- fluid_build/engines/glue/__init__.py +252 -0
- fluid_build/engines/registry.py +106 -0
- fluid_build/engines/spark/__init__.py +286 -0
- fluid_build/engines/sql/__init__.py +88 -0
- fluid_build/engines/sql/scripts.py +131 -0
- fluid_build/errors.py +120 -0
- fluid_build/features.yaml +383 -0
- fluid_build/forge/__init__.py +166 -0
- fluid_build/forge/core/__init__.py +91 -0
- fluid_build/forge/core/deployment.py +1084 -0
- fluid_build/forge/core/engine.py +1087 -0
- fluid_build/forge/core/interfaces.py +360 -0
- fluid_build/forge/core/monitoring.py +947 -0
- fluid_build/forge/core/performance.py +194 -0
- fluid_build/forge/core/pipeline_templates.py +1608 -0
- fluid_build/forge/core/provider_actions.py +391 -0
- fluid_build/forge/core/registry.py +585 -0
- fluid_build/forge/core/simple_registry.py +224 -0
- fluid_build/forge/core/testing.py +445 -0
- fluid_build/forge/core/validation.py +678 -0
- fluid_build/forge/extensions/__init__.py +59 -0
- fluid_build/forge/extensions/ai_assistant.py +115 -0
- fluid_build/forge/extensions/environment_validator.py +150 -0
- fluid_build/forge/extensions/project_history.py +91 -0
- fluid_build/forge/generators/__init__.py +55 -0
- fluid_build/forge/generators/config_generator.py +391 -0
- fluid_build/forge/generators/contract_generator.py +65 -0
- fluid_build/forge/generators/readme_generator.py +141 -0
- fluid_build/forge/providers/__init__.py +62 -0
- fluid_build/forge/providers/aws.py +75 -0
- fluid_build/forge/providers/gcp.py +84 -0
- fluid_build/forge/providers/local.py +521 -0
- fluid_build/forge/providers/snowflake.py +79 -0
- fluid_build/forge/registration.py +157 -0
- fluid_build/forge/simple_forge.py +291 -0
- fluid_build/forge/simple_registration.py +161 -0
- fluid_build/forge/templates/__init__.py +72 -0
- fluid_build/forge/templates/analytics.py +1081 -0
- fluid_build/forge/templates/etl_pipeline.py +179 -0
- fluid_build/forge/templates/ml_pipeline.py +196 -0
- fluid_build/forge/templates/starter.py +562 -0
- fluid_build/forge/templates/streaming.py +182 -0
- fluid_build/loader.py +404 -0
- fluid_build/logging_utils.py +58 -0
- fluid_build/observability/__init__.py +32 -0
- fluid_build/observability/config.py +142 -0
- fluid_build/observability/git.py +160 -0
- fluid_build/observability/reporter.py +425 -0
- fluid_build/observability/secret_redactor.py +218 -0
- fluid_build/policy/__init__.py +15 -0
- fluid_build/policy/agent_policy.py +354 -0
- fluid_build/policy/compiler.py +210 -0
- fluid_build/policy/guardrails.py +22 -0
- fluid_build/policy/schema_engine.py +594 -0
- fluid_build/policy/sovereignty.py +226 -0
- fluid_build/provider/__init__.py +16 -0
- fluid_build/providers/__init__.py +581 -0
- fluid_build/providers/_sql_safety.py +61 -0
- fluid_build/providers/aws/__init__.py +65 -0
- fluid_build/providers/aws/actions/__init__.py +28 -0
- fluid_build/providers/aws/actions/athena.py +465 -0
- fluid_build/providers/aws/actions/cloudwatch.py +251 -0
- fluid_build/providers/aws/actions/events.py +170 -0
- fluid_build/providers/aws/actions/glue.py +876 -0
- fluid_build/providers/aws/actions/iam.py +437 -0
- fluid_build/providers/aws/actions/kinesis.py +797 -0
- fluid_build/providers/aws/actions/lambda_fn.py +220 -0
- fluid_build/providers/aws/actions/redshift.py +375 -0
- fluid_build/providers/aws/actions/s3.py +296 -0
- fluid_build/providers/aws/actions/secretsmanager.py +233 -0
- fluid_build/providers/aws/actions/sns.py +296 -0
- fluid_build/providers/aws/actions/sqs.py +289 -0
- fluid_build/providers/aws/actions/stepfunctions.py +28 -0
- fluid_build/providers/aws/aws.py +1497 -0
- fluid_build/providers/aws/codegen/__init__.py +25 -0
- fluid_build/providers/aws/codegen/airflow.py +668 -0
- fluid_build/providers/aws/codegen/dagster.py +368 -0
- fluid_build/providers/aws/codegen/prefect.py +346 -0
- fluid_build/providers/aws/plan/__init__.py +20 -0
- fluid_build/providers/aws/plan/export.py +35 -0
- fluid_build/providers/aws/plan/orchestration.py +357 -0
- fluid_build/providers/aws/plan/planner.py +681 -0
- fluid_build/providers/aws/plan/schedule.py +751 -0
- fluid_build/providers/aws/provider.py +949 -0
- fluid_build/providers/aws/tests/__init__.py +18 -0
- fluid_build/providers/aws/types.py +453 -0
- fluid_build/providers/aws/util/__init__.py +18 -0
- fluid_build/providers/aws/util/agent_policy.py +296 -0
- fluid_build/providers/aws/util/auth.py +75 -0
- fluid_build/providers/aws/util/circuit_breaker.py +353 -0
- fluid_build/providers/aws/util/config.py +86 -0
- fluid_build/providers/aws/util/credentials.py +350 -0
- fluid_build/providers/aws/util/ddl.py +441 -0
- fluid_build/providers/aws/util/dependencies.py +253 -0
- fluid_build/providers/aws/util/formats.py +290 -0
- fluid_build/providers/aws/util/logging.py +87 -0
- fluid_build/providers/aws/util/metadata.py +469 -0
- fluid_build/providers/aws/util/metrics.py +262 -0
- fluid_build/providers/aws/util/names.py +157 -0
- fluid_build/providers/aws/util/retry.py +104 -0
- fluid_build/providers/aws/util/s3_policies.py +322 -0
- fluid_build/providers/aws/util/sovereignty.py +323 -0
- fluid_build/providers/aws/util/validation.py +335 -0
- fluid_build/providers/aws_validation.py +335 -0
- fluid_build/providers/base.py +464 -0
- fluid_build/providers/bigquery_validation.py +345 -0
- fluid_build/providers/catalogs/__init__.py +69 -0
- fluid_build/providers/catalogs/base.py +223 -0
- fluid_build/providers/catalogs/datamesh_manager.py +134 -0
- fluid_build/providers/catalogs/fluid_cc/__init__.py +19 -0
- fluid_build/providers/catalogs/fluid_cc/provider.py +305 -0
- fluid_build/providers/common/__init__.py +27 -0
- fluid_build/providers/common/auth.py +102 -0
- fluid_build/providers/common/codegen_utils.py +320 -0
- fluid_build/providers/common/metrics.py +116 -0
- fluid_build/providers/common/resilience.py +126 -0
- fluid_build/providers/datamesh_manager/__init__.py +36 -0
- fluid_build/providers/datamesh_manager/datamesh_manager.py +1734 -0
- fluid_build/providers/gcp/__init__.py +58 -0
- fluid_build/providers/gcp/actions/__init__.py +34 -0
- fluid_build/providers/gcp/actions/bigquery.py +1354 -0
- fluid_build/providers/gcp/actions/composer.py +682 -0
- fluid_build/providers/gcp/actions/dataflow.py +232 -0
- fluid_build/providers/gcp/actions/iam.py +458 -0
- fluid_build/providers/gcp/actions/pubsub.py +839 -0
- fluid_build/providers/gcp/actions/run.py +183 -0
- fluid_build/providers/gcp/actions/scheduler.py +275 -0
- fluid_build/providers/gcp/actions/storage.py +755 -0
- fluid_build/providers/gcp/bq.py +89 -0
- fluid_build/providers/gcp/codegen/__init__.py +32 -0
- fluid_build/providers/gcp/codegen/airflow.py +350 -0
- fluid_build/providers/gcp/codegen/dagster.py +398 -0
- fluid_build/providers/gcp/codegen/prefect.py +361 -0
- fluid_build/providers/gcp/composer.py +40 -0
- fluid_build/providers/gcp/gcp.py +655 -0
- fluid_build/providers/gcp/gcs.py +60 -0
- fluid_build/providers/gcp/iam.py +65 -0
- fluid_build/providers/gcp/plan/__init__.py +16 -0
- fluid_build/providers/gcp/plan/bq_modeler.py +446 -0
- fluid_build/providers/gcp/plan/export.py +447 -0
- fluid_build/providers/gcp/plan/planner.py +569 -0
- fluid_build/providers/gcp/plan/schedule.py +553 -0
- fluid_build/providers/gcp/provider.py +908 -0
- fluid_build/providers/gcp/provider_action_handler.py +319 -0
- fluid_build/providers/gcp/pubsub.py +50 -0
- fluid_build/providers/gcp/util/__init__.py +16 -0
- fluid_build/providers/gcp/util/auth.py +320 -0
- fluid_build/providers/gcp/util/config.py +169 -0
- fluid_build/providers/gcp/util/logging.py +275 -0
- fluid_build/providers/gcp/util/names.py +526 -0
- fluid_build/providers/gcp/util/retry.py +415 -0
- fluid_build/providers/local/__init__.py +20 -0
- fluid_build/providers/local/docker_executor.py +419 -0
- fluid_build/providers/local/ducksql.py +68 -0
- fluid_build/providers/local/local.py +837 -0
- fluid_build/providers/local/mocks.py +351 -0
- fluid_build/providers/local/planner.py +639 -0
- fluid_build/providers/local/samples.py +621 -0
- fluid_build/providers/local/util/__init__.py +60 -0
- fluid_build/providers/local/util/logging.py +307 -0
- fluid_build/providers/local/util/retry.py +419 -0
- fluid_build/providers/local_validation.py +440 -0
- fluid_build/providers/odcs/__init__.py +27 -0
- fluid_build/providers/odcs/odcs-schema-v3.1.0.json +2928 -0
- fluid_build/providers/odcs/odcs.py +1441 -0
- fluid_build/providers/odps/__init__.py +22 -0
- fluid_build/providers/odps/odps.py +1035 -0
- fluid_build/providers/odps/serializer.py +195 -0
- fluid_build/providers/odps/validator.py +261 -0
- fluid_build/providers/odps_standard/__init__.py +27 -0
- fluid_build/providers/odps_standard/odps.py +562 -0
- fluid_build/providers/quality_engine.py +625 -0
- fluid_build/providers/snowflake/__init__.py +49 -0
- fluid_build/providers/snowflake/actions/__init__.py +16 -0
- fluid_build/providers/snowflake/actions/database.py +128 -0
- fluid_build/providers/snowflake/actions/grants.py +156 -0
- fluid_build/providers/snowflake/actions/procedure.py +112 -0
- fluid_build/providers/snowflake/actions/schema.py +140 -0
- fluid_build/providers/snowflake/actions/share.py +77 -0
- fluid_build/providers/snowflake/actions/sql.py +81 -0
- fluid_build/providers/snowflake/actions/stream.py +120 -0
- fluid_build/providers/snowflake/actions/table.py +495 -0
- fluid_build/providers/snowflake/actions/task.py +186 -0
- fluid_build/providers/snowflake/actions/udf.py +102 -0
- fluid_build/providers/snowflake/actions/view.py +149 -0
- fluid_build/providers/snowflake/codegen/__init__.py +32 -0
- fluid_build/providers/snowflake/codegen/airflow.py +281 -0
- fluid_build/providers/snowflake/codegen/dagster.py +195 -0
- fluid_build/providers/snowflake/codegen/prefect.py +212 -0
- fluid_build/providers/snowflake/connection.py +219 -0
- fluid_build/providers/snowflake/connection_enhanced.py +466 -0
- fluid_build/providers/snowflake/credentials.py +345 -0
- fluid_build/providers/snowflake/errors.py +241 -0
- fluid_build/providers/snowflake/governance.py +824 -0
- fluid_build/providers/snowflake/iam.py +95 -0
- fluid_build/providers/snowflake/monitoring/__init__.py +24 -0
- fluid_build/providers/snowflake/monitoring/performance.py +465 -0
- fluid_build/providers/snowflake/orchestration/__init__.py +30 -0
- fluid_build/providers/snowflake/orchestration/airflow_generator.py +325 -0
- fluid_build/providers/snowflake/orchestration/common.py +110 -0
- fluid_build/providers/snowflake/plan/__init__.py +20 -0
- fluid_build/providers/snowflake/plan/export.py +102 -0
- fluid_build/providers/snowflake/plan/planner.py +630 -0
- fluid_build/providers/snowflake/provider_enhanced.py +599 -0
- fluid_build/providers/snowflake/registry.py +450 -0
- fluid_build/providers/snowflake/snowflake.py +1336 -0
- fluid_build/providers/snowflake/tests/__init__.py +16 -0
- fluid_build/providers/snowflake/types.py +402 -0
- fluid_build/providers/snowflake/util/__init__.py +16 -0
- fluid_build/providers/snowflake/util/auth.py +212 -0
- fluid_build/providers/snowflake/util/circuit_breaker.py +360 -0
- fluid_build/providers/snowflake/util/config.py +603 -0
- fluid_build/providers/snowflake/util/logging.py +187 -0
- fluid_build/providers/snowflake/util/metadata.py +203 -0
- fluid_build/providers/snowflake/util/names.py +137 -0
- fluid_build/providers/snowflake/util/retry.py +253 -0
- fluid_build/providers/snowflake/util.py +53 -0
- fluid_build/providers/snowflake_validation.py +367 -0
- fluid_build/providers/validation_cache.py +366 -0
- fluid_build/providers/validation_provider.py +335 -0
- fluid_build/runtimes/__init__.py +15 -0
- fluid_build/runtimes/airflow_provider_actions.py +344 -0
- fluid_build/runtimes/dataform_gcp.py +211 -0
- fluid_build/runtimes/dbt_bigquery.py +35 -0
- fluid_build/runtimes/dbt_duckdb.py +35 -0
- fluid_build/schedulers/__init__.py +61 -0
- fluid_build/schedulers/airflow/__init__.py +376 -0
- fluid_build/schedulers/base.py +129 -0
- fluid_build/schedulers/dagster/__init__.py +363 -0
- fluid_build/schedulers/prefect/__init__.py +313 -0
- fluid_build/schedulers/registry.py +106 -0
- fluid_build/schedulers/synthesis.py +127 -0
- fluid_build/schema.py +284 -0
- fluid_build/schema_manager.py +741 -0
- fluid_build/schemas/__init__.py +16 -0
- fluid_build/schemas/fluid-schema-0.4.0.json +944 -0
- fluid_build/schemas/fluid-schema-0.5.7.json +2195 -0
- fluid_build/schemas/fluid-schema-0.7.1.json +3497 -0
- fluid_build/schemas/fluid-schema-0.7.2.json +3811 -0
- fluid_build/secrets.py +335 -0
- fluid_build/structured_logging.py +310 -0
- fluid_build/templates/README.md +132 -0
- fluid_build/templates/contract-documentation/README.md +121 -0
- fluid_build/templates/contract-documentation/contract.fluid.yaml +103 -0
- fluid_build/templates/contract-documentation/data/products.csv +4 -0
- fluid_build/templates/csv-basics/README.md +253 -0
- fluid_build/templates/csv-basics/contract.fluid.yaml +99 -0
- fluid_build/templates/csv-basics/data/customers.csv +11 -0
- fluid_build/templates/customer-360/README.md +464 -0
- fluid_build/templates/customer-360/contract.fluid.yaml +260 -0
- fluid_build/templates/customer-360/data/customers.csv +11 -0
- fluid_build/templates/customer-360/data/interactions.csv +17 -0
- fluid_build/templates/customer-360/data/orders.csv +21 -0
- fluid_build/templates/data-quality-validation/README.md +361 -0
- fluid_build/templates/data-quality-validation/contract.fluid.yaml +148 -0
- fluid_build/templates/data-quality-validation/data/products.csv +11 -0
- fluid_build/templates/environment-configuration/README.md +284 -0
- fluid_build/templates/environment-configuration/config/dev.yaml +14 -0
- fluid_build/templates/environment-configuration/config/prod.yaml +14 -0
- fluid_build/templates/environment-configuration/contract.fluid.yaml +90 -0
- fluid_build/templates/environment-configuration/data/users.csv +6 -0
- fluid_build/templates/external-sql-files/README.md +188 -0
- fluid_build/templates/external-sql-files/contract.fluid.yaml +117 -0
- fluid_build/templates/external-sql-files/data/sales.csv +11 -0
- fluid_build/templates/external-sql-files/sql/calculate_revenue.sql +15 -0
- fluid_build/templates/external-sql-files/sql/daily_summary.sql +15 -0
- fluid_build/templates/first-dag/README.md +421 -0
- fluid_build/templates/first-dag/contract.fluid.yaml +177 -0
- fluid_build/templates/first-dag/data/customers.csv +11 -0
- fluid_build/templates/first-dag/data/orders.csv +13 -0
- fluid_build/templates/hello-world/README.md +184 -0
- fluid_build/templates/hello-world/contract.fluid.yaml +48 -0
- fluid_build/templates/incremental-processing/README.md +241 -0
- fluid_build/templates/incremental-processing/contract.fluid.yaml +111 -0
- fluid_build/templates/incremental-processing/data/transactions.csv +11 -0
- fluid_build/templates/multi-source/README.md +308 -0
- fluid_build/templates/multi-source/contract.fluid.yaml +146 -0
- fluid_build/templates/multi-source/data/customers.csv +9 -0
- fluid_build/templates/multi-source/data/orders.csv +23 -0
- fluid_build/templates/multiple-outputs/README.md +104 -0
- fluid_build/templates/multiple-outputs/contract.fluid.yaml +136 -0
- fluid_build/templates/multiple-outputs/data/events.csv +13 -0
- fluid_build/templates/pipeline-orchestration/README.md +323 -0
- fluid_build/templates/pipeline-orchestration/contract.fluid.yaml +121 -0
- fluid_build/templates/pipeline-orchestration/data/customers.csv +6 -0
- fluid_build/templates/pipeline-orchestration/data/inventory.csv +6 -0
- fluid_build/templates/pipeline-orchestration/data/sales.csv +9 -0
- fluid_build/templates/testing-your-contract/README.md +99 -0
- fluid_build/templates/testing-your-contract/contract.fluid.yaml +64 -0
- fluid_build/templates/testing-your-contract/data/orders.csv +4 -0
- fluid_build/templates/testing-your-contract/tests/test_orders.yaml +32 -0
- fluid_build/tools/__init__.py +15 -0
- fluid_build/tools/contract_tests.py +42 -0
- fluid_build/tools/diagnostics.py +38 -0
- fluid_build/tools/diff.py +26 -0
- fluid_build/tools/plan.py +33 -0
- fluid_build/tools/visualizer.py +29 -0
- fluid_build/util/__init__.py +15 -0
- fluid_build/util/contract.py +379 -0
- fluid_build/util/cron.py +32 -0
- fluid_build/util/io.py +40 -0
- fluid_build/util/network.py +386 -0
- fluid_build/util/schema.py +18 -0
- fluid_build/validation.py +610 -0
|
@@ -0,0 +1,523 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: data-product-forge
|
|
3
|
+
Version: 0.7.10
|
|
4
|
+
Summary: FLUID Build System: plan/apply/visualize data products across providers (GCP, Snowflake, Local) with policy & contract tests.
|
|
5
|
+
Author: Agentics Transformation Pty Ltd
|
|
6
|
+
License-Expression: Apache-2.0
|
|
7
|
+
Project-URL: Homepage, https://agenticstiger.github.io/forge_docs/
|
|
8
|
+
Project-URL: Repository, https://github.com/Agenticstiger/forge-cli
|
|
9
|
+
Project-URL: Issues, https://github.com/Agenticstiger/forge-cli/issues
|
|
10
|
+
Project-URL: Documentation, https://agenticstiger.github.io/forge_docs/
|
|
11
|
+
Project-URL: Changelog, https://github.com/Agenticstiger/forge-cli/blob/main/CHANGELOG.md
|
|
12
|
+
Keywords: data products,FLUID,opds,gitops,gcp,snowflake,duckdb,composer,dbt,dataform
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Intended Audience :: Information Technology
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
22
|
+
Classifier: Topic :: System :: Systems Administration
|
|
23
|
+
Requires-Python: >=3.9
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
License-File: NOTICE
|
|
27
|
+
Requires-Dist: click>=8.1
|
|
28
|
+
Requires-Dist: pyyaml>=6.0
|
|
29
|
+
Requires-Dist: jsonschema>=4.22
|
|
30
|
+
Requires-Dist: rich>=13.7
|
|
31
|
+
Requires-Dist: pydantic>=2.7
|
|
32
|
+
Requires-Dist: typing-extensions>=4.8
|
|
33
|
+
Requires-Dist: jinja2>=3.1
|
|
34
|
+
Requires-Dist: httpx>=0.27
|
|
35
|
+
Requires-Dist: colorama>=0.4.6; platform_system == "Windows"
|
|
36
|
+
Provides-Extra: sdk
|
|
37
|
+
Requires-Dist: fluid-provider-sdk>=0.1.0; extra == "sdk"
|
|
38
|
+
Provides-Extra: local
|
|
39
|
+
Requires-Dist: duckdb>=1.0; extra == "local"
|
|
40
|
+
Requires-Dist: pandas>=2.2; extra == "local"
|
|
41
|
+
Provides-Extra: gcp
|
|
42
|
+
Requires-Dist: google-auth>=2.29; extra == "gcp"
|
|
43
|
+
Requires-Dist: google-auth-oauthlib>=1.2; extra == "gcp"
|
|
44
|
+
Requires-Dist: google-cloud-bigquery>=3.20; extra == "gcp"
|
|
45
|
+
Requires-Dist: google-cloud-storage>=2.16; extra == "gcp"
|
|
46
|
+
Requires-Dist: google-cloud-iam>=2.15; python_version >= "3.10" and extra == "gcp"
|
|
47
|
+
Requires-Dist: dbt-bigquery>=1.7; python_version >= "3.10" and extra == "gcp"
|
|
48
|
+
Provides-Extra: snowflake
|
|
49
|
+
Requires-Dist: snowflake-connector-python>=4.4; extra == "snowflake"
|
|
50
|
+
Requires-Dist: snowflake-snowpark-python>=1.15; python_version >= "3.10" and extra == "snowflake"
|
|
51
|
+
Requires-Dist: dbt-snowflake>=1.7; python_version >= "3.10" and extra == "snowflake"
|
|
52
|
+
Provides-Extra: viz
|
|
53
|
+
Requires-Dist: graphviz>=0.20; extra == "viz"
|
|
54
|
+
Provides-Extra: opds
|
|
55
|
+
Requires-Dist: ruamel.yaml>=0.18; extra == "opds"
|
|
56
|
+
Provides-Extra: tui
|
|
57
|
+
Requires-Dist: textual>=0.58; extra == "tui"
|
|
58
|
+
Provides-Extra: copilot
|
|
59
|
+
Requires-Dist: pyarrow>=14; extra == "copilot"
|
|
60
|
+
Requires-Dist: fastavro>=1.9; extra == "copilot"
|
|
61
|
+
Provides-Extra: docs
|
|
62
|
+
Requires-Dist: mkdocs>=1.6; extra == "docs"
|
|
63
|
+
Requires-Dist: mkdocs-material>=9.5; extra == "docs"
|
|
64
|
+
Provides-Extra: dev
|
|
65
|
+
Requires-Dist: pytest>=7.4; extra == "dev"
|
|
66
|
+
Requires-Dist: pytest-cov>=4.1; extra == "dev"
|
|
67
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
68
|
+
Requires-Dist: pytest-randomly>=3.15; extra == "dev"
|
|
69
|
+
Requires-Dist: mypy>=1.10; extra == "dev"
|
|
70
|
+
Requires-Dist: ruff>=0.5; extra == "dev"
|
|
71
|
+
Requires-Dist: types-PyYAML>=6.0.12; extra == "dev"
|
|
72
|
+
Requires-Dist: black==25.11.0; extra == "dev"
|
|
73
|
+
Requires-Dist: requests>=2.32.5; extra == "dev"
|
|
74
|
+
Provides-Extra: all
|
|
75
|
+
Requires-Dist: data-product-forge[copilot,dev,docs,gcp,local,opds,snowflake,tui,viz]; extra == "all"
|
|
76
|
+
Dynamic: license-file
|
|
77
|
+
|
|
78
|
+
<div align="center">
|
|
79
|
+
|
|
80
|
+
<img src="assets/fluid-forge-logo.png" alt="FLUID Forge" width="480">
|
|
81
|
+
|
|
82
|
+
<br><br>
|
|
83
|
+
|
|
84
|
+
### Stop writing boilerplate. Start declaring Data Products.
|
|
85
|
+
|
|
86
|
+
**The declarative control plane for data engineering in the Agentic Era.**
|
|
87
|
+
|
|
88
|
+
[](https://python.org)
|
|
89
|
+
[](LICENSE)
|
|
90
|
+
[](https://pypi.org/project/data-product-forge/)
|
|
91
|
+
[](https://github.com/Agenticstiger/forge-cli/actions/workflows/ci.yml)
|
|
92
|
+
|
|
93
|
+
[Documentation](https://agenticstiger.github.io/forge_docs/) · [Getting Started](https://agenticstiger.github.io/forge_docs/getting-started/) · [FLUID Specification](https://open-data-protocol.github.io/fluid/) · [The Book](https://a.co/d/04zTi7aQ) · [Community](https://github.com/Agenticstiger/forge-cli/discussions)
|
|
94
|
+
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 🌊 What is FLUID?
|
|
101
|
+
|
|
102
|
+
**FLUID** (Federated Layered Universal Instructional Declaration) is an open-source declarative framework for building, validating, and deploying data products across any cloud. You write a single YAML contract describing *what* your data product is — its schema, quality rules, access policies, and scheduling — and FLUID Forge compiles that into provider-specific infrastructure (BigQuery, Snowflake, AWS Glue, Athena, or local DuckDB) with full governance baked in.
|
|
103
|
+
|
|
104
|
+
Think of it as **Terraform for data products**: one contract, many clouds, zero boilerplate.
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
contract.fluid.yaml → fluid validate → fluid plan → fluid apply
|
|
108
|
+
(declare) (check) (preview) (deploy)
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 🤯 Why We Built This
|
|
114
|
+
|
|
115
|
+
Data engineering is stuck in the dark ages of imperative spaghetti code. You want to ship data products fast, but compliance teams demand governance. You end up with **Configuration Sprawl**: `.tf` files for Terraform, `schema.yml` for dbt, `.rego` for OPA, and a web of Airflow DAGs.
|
|
116
|
+
|
|
117
|
+
**FLUID Forge is the compiler that ends the chaos.** You declare what your data product *is*. The CLI compiles that into a validated, deterministic execution plan across any supported cloud.
|
|
118
|
+
|
|
119
|
+
### The Old Way vs. The FLUID Way
|
|
120
|
+
|
|
121
|
+
| 🛑 **The Old Way** (Imperative Chaos) | ✨ **The FLUID Way** (Declarative Order) |
|
|
122
|
+
|----------------------------------------|------------------------------------------|
|
|
123
|
+
| Weeks of boilerplate to wire up IaC, SQL, and DAGs. | **Minutes** to deploy. Just declare your intent and apply. |
|
|
124
|
+
| Vendor lock-in. Your DAGs only work on one cloud. | **Provider-agnostic.** Switch clouds by changing one line of YAML. |
|
|
125
|
+
| Governance as an afterthought. Manual compliance tickets. | **Governance-as-Code.** Policies compile to native IAM before deployment. |
|
|
126
|
+
| "Works on my machine." Broken production deploys. | **Deterministic plans.** See exactly what will change before it runs. |
|
|
127
|
+
| AI hallucinations. Agents don't understand your tables. | **Semantic Truth.** Built-in OSI semantics so LLMs query perfectly. |
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
## ⚡ 60 Seconds to Magic
|
|
133
|
+
|
|
134
|
+
Data engineering shouldn't require weeks of handwritten infrastructure code, bespoke CI/CD pipelines, and copy-pasted SQL.
|
|
135
|
+
|
|
136
|
+
**What Terraform did for infrastructure, FLUID Forge does for data products.**
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# 1. Install the CLI
|
|
140
|
+
pip install data-product-forge
|
|
141
|
+
|
|
142
|
+
# 2. Validate your data product contract
|
|
143
|
+
fluid validate contract.fluid.yaml
|
|
144
|
+
|
|
145
|
+
# 3. See exactly what will happen
|
|
146
|
+
fluid plan contract.fluid.yaml
|
|
147
|
+
|
|
148
|
+
# 4. Deploy infrastructure, logic, and governance — instantly
|
|
149
|
+
fluid apply contract.fluid.yaml
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
That's it. You just deployed a **versioned, governed, and orchestrated Data Product** from a single YAML file.
|
|
153
|
+
|
|
154
|
+
> **Want to move from local to Google Cloud?**
|
|
155
|
+
> `pip install "data-product-forge[gcp]"` → change `platform: local` to `platform: gcp` → run `fluid apply`. **Done.**
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 🖥️ First-Time Setup from Source
|
|
160
|
+
|
|
161
|
+
Choose your platform below for step-by-step instructions.
|
|
162
|
+
|
|
163
|
+
### Prerequisites
|
|
164
|
+
|
|
165
|
+
| Requirement | Version |
|
|
166
|
+
|-------------|---------|
|
|
167
|
+
| **Python** | 3.9 or higher |
|
|
168
|
+
| **pip** | Latest recommended |
|
|
169
|
+
| **Git** | Any recent version |
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
<details>
|
|
174
|
+
<summary><strong>🍎 macOS</strong></summary>
|
|
175
|
+
|
|
176
|
+
#### 1. Install system dependencies
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
# Install Xcode Command Line Tools (includes Git and make)
|
|
180
|
+
xcode-select --install
|
|
181
|
+
|
|
182
|
+
# Or install Python & Git via Homebrew (recommended)
|
|
183
|
+
brew install python git
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
#### 2. Verify Python
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
python3 --version # Should print Python 3.9+
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
#### 3. Clone and install
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
git clone https://github.com/Agenticstiger/forge-cli.git
|
|
196
|
+
cd forge-cli
|
|
197
|
+
|
|
198
|
+
# Create a virtual environment (recommended)
|
|
199
|
+
python3 -m venv .venv
|
|
200
|
+
source .venv/bin/activate
|
|
201
|
+
|
|
202
|
+
# Install in editable mode with the local provider
|
|
203
|
+
pip install --upgrade pip wheel
|
|
204
|
+
pip install -e ".[local]"
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
#### 4. Verify the installation
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
fluid --version
|
|
211
|
+
fluid validate examples/01-hello-world/contract.fluid.yaml
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
> **Tip:** You can also run the automated setup script:
|
|
215
|
+
> ```bash
|
|
216
|
+
> chmod +x setup.sh && ./setup.sh
|
|
217
|
+
> ```
|
|
218
|
+
|
|
219
|
+
</details>
|
|
220
|
+
|
|
221
|
+
<details>
|
|
222
|
+
<summary><strong>🐧 Ubuntu / Debian Linux</strong></summary>
|
|
223
|
+
|
|
224
|
+
#### 1. Install system dependencies
|
|
225
|
+
|
|
226
|
+
```bash
|
|
227
|
+
sudo apt update
|
|
228
|
+
sudo apt install -y python3 python3-venv python3-pip git build-essential
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
#### 2. Verify Python
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
python3 --version # Should print Python 3.9+
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
#### 3. Clone and install
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
git clone https://github.com/Agenticstiger/forge-cli.git
|
|
241
|
+
cd forge-cli
|
|
242
|
+
|
|
243
|
+
# Create a virtual environment (recommended)
|
|
244
|
+
python3 -m venv .venv
|
|
245
|
+
source .venv/bin/activate
|
|
246
|
+
|
|
247
|
+
# Install in editable mode with the local provider
|
|
248
|
+
pip install --upgrade pip wheel
|
|
249
|
+
pip install -e ".[local]"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
#### 4. Verify the installation
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
fluid --version
|
|
256
|
+
fluid validate examples/01-hello-world/contract.fluid.yaml
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
> **Tip:** You can also run the automated setup script:
|
|
260
|
+
> ```bash
|
|
261
|
+
> chmod +x setup.sh && ./setup.sh
|
|
262
|
+
> ```
|
|
263
|
+
|
|
264
|
+
</details>
|
|
265
|
+
|
|
266
|
+
<details>
|
|
267
|
+
<summary><strong>🪟 Windows</strong></summary>
|
|
268
|
+
|
|
269
|
+
#### 1. Install Python
|
|
270
|
+
|
|
271
|
+
Download and install Python 3.9+ from [python.org](https://www.python.org/downloads/).
|
|
272
|
+
|
|
273
|
+
> **Important:** Check **"Add Python to PATH"** during installation.
|
|
274
|
+
|
|
275
|
+
#### 2. Install Git
|
|
276
|
+
|
|
277
|
+
Download and install Git from [git-scm.com](https://git-scm.com/download/win), or install via a package manager:
|
|
278
|
+
|
|
279
|
+
```powershell
|
|
280
|
+
# Via winget
|
|
281
|
+
winget install Git.Git
|
|
282
|
+
|
|
283
|
+
# Or via Chocolatey
|
|
284
|
+
choco install git
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
#### 3. Verify prerequisites
|
|
288
|
+
|
|
289
|
+
```powershell
|
|
290
|
+
python --version # Should print Python 3.9+
|
|
291
|
+
git --version
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
#### 4. Clone and install
|
|
295
|
+
|
|
296
|
+
**PowerShell:**
|
|
297
|
+
```powershell
|
|
298
|
+
git clone https://github.com/Agenticstiger/forge-cli.git
|
|
299
|
+
cd forge-cli
|
|
300
|
+
|
|
301
|
+
# Create a virtual environment (recommended)
|
|
302
|
+
python -m venv .venv
|
|
303
|
+
.venv\Scripts\Activate.ps1
|
|
304
|
+
|
|
305
|
+
# Install in editable mode with the local provider
|
|
306
|
+
pip install --upgrade pip wheel
|
|
307
|
+
pip install -e ".[local]"
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
**Command Prompt (cmd):**
|
|
311
|
+
```cmd
|
|
312
|
+
git clone https://github.com/Agenticstiger/forge-cli.git
|
|
313
|
+
cd forge-cli
|
|
314
|
+
|
|
315
|
+
python -m venv .venv
|
|
316
|
+
.venv\Scripts\activate.bat
|
|
317
|
+
|
|
318
|
+
pip install --upgrade pip wheel
|
|
319
|
+
pip install -e ".[local]"
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
#### 5. Verify the installation
|
|
323
|
+
|
|
324
|
+
```powershell
|
|
325
|
+
fluid --version
|
|
326
|
+
fluid validate examples\01-hello-world\contract.fluid.yaml
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
> **Tip:** You can also run the automated setup script:
|
|
330
|
+
> - **PowerShell:** `.\setup.ps1`
|
|
331
|
+
> - **Command Prompt:** `setup.bat`
|
|
332
|
+
|
|
333
|
+
</details>
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
### Installing additional providers
|
|
338
|
+
|
|
339
|
+
Once the base install is working, add cloud providers as needed:
|
|
340
|
+
|
|
341
|
+
```bash
|
|
342
|
+
pip install -e ".[gcp]" # + Google Cloud (BigQuery, GCS, Composer)
|
|
343
|
+
pip install -e ".[snowflake]" # + Snowflake
|
|
344
|
+
pip install -e ".[all]" # Everything (all providers + dev tools)
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
## 🧬 Anatomy of a FLUID Contract
|
|
350
|
+
|
|
351
|
+
Everything starts with `contract.fluid.yaml` — the **single source of truth** for your data product's entire lifecycle.
|
|
352
|
+
|
|
353
|
+
```yaml
|
|
354
|
+
fluidVersion: "0.7.1"
|
|
355
|
+
kind: DataProduct
|
|
356
|
+
id: example.customer_360
|
|
357
|
+
name: Customer 360
|
|
358
|
+
domain: analytics
|
|
359
|
+
|
|
360
|
+
metadata:
|
|
361
|
+
layer: Gold
|
|
362
|
+
owner:
|
|
363
|
+
team: data-platform
|
|
364
|
+
email: platform@example.com
|
|
365
|
+
|
|
366
|
+
# 1. THE LOGIC — How is it built?
|
|
367
|
+
builds:
|
|
368
|
+
- id: transform_customer
|
|
369
|
+
pattern: embedded-logic
|
|
370
|
+
engine: sql
|
|
371
|
+
properties:
|
|
372
|
+
sql: |
|
|
373
|
+
SELECT user_id, email, LTV
|
|
374
|
+
FROM raw.users JOIN raw.orders USING (user_id)
|
|
375
|
+
|
|
376
|
+
# 2. THE INTERFACE — What does it output?
|
|
377
|
+
exposes:
|
|
378
|
+
- exposeId: customer_profiles
|
|
379
|
+
kind: table
|
|
380
|
+
binding:
|
|
381
|
+
platform: snowflake # ← Change to 'gcp' or 'aws' instantly
|
|
382
|
+
format: snowflake_table
|
|
383
|
+
location:
|
|
384
|
+
database: PROD
|
|
385
|
+
schema: GOLD
|
|
386
|
+
table: CUST_360
|
|
387
|
+
contract:
|
|
388
|
+
schema:
|
|
389
|
+
- name: email
|
|
390
|
+
type: string
|
|
391
|
+
sensitivity: pii # ← Triggers auto-masking/encryption
|
|
392
|
+
|
|
393
|
+
# 3. THE GOVERNANCE — Who (or what) can access it?
|
|
394
|
+
accessPolicy:
|
|
395
|
+
grants:
|
|
396
|
+
- principal: "group:marketing@example.com"
|
|
397
|
+
permissions: ["read"]
|
|
398
|
+
|
|
399
|
+
agentPolicy: # ← Agentic Era Governance
|
|
400
|
+
allowedModels: ["gpt-4", "claude-3"]
|
|
401
|
+
allowedUseCases: ["analysis", "summarization"]
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## 🔌 Providers — Bring Your Own Cloud
|
|
407
|
+
|
|
408
|
+
Providers are the bridge between your declarative contract and your target execution environment.
|
|
409
|
+
|
|
410
|
+
| Provider | Target Ecosystem | Superpowers |
|
|
411
|
+
|----------|-----------------|-------------|
|
|
412
|
+
| 💻 **local** | DuckDB, Local FS | Zero-config. Runs anywhere. Perfect for dev/test. |
|
|
413
|
+
| ☁️ **gcp** | Google Cloud | BigQuery, GCS, Composer (Airflow), Dataform, IAM. |
|
|
414
|
+
| 🌩️ **aws** | Amazon Web Services | S3, Glue, Athena, Redshift, MWAA, IAM. |
|
|
415
|
+
| ❄️ **snowflake** | Snowflake | Databases, schemas, streams, tasks, RBAC, sharing. |
|
|
416
|
+
|
|
417
|
+
> Export-only providers for open data standards: **odps**, **odcs**, **datamesh-manager**.
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
421
|
+
## 🛠️ Installation
|
|
422
|
+
|
|
423
|
+
FLUID Forge is modular. Install only what you need.
|
|
424
|
+
|
|
425
|
+
```bash
|
|
426
|
+
pip install data-product-forge # Minimal — CLI + Local/DuckDB provider
|
|
427
|
+
pip install "data-product-forge[gcp]" # + Google Cloud
|
|
428
|
+
pip install "data-product-forge[aws]" # + AWS
|
|
429
|
+
pip install "data-product-forge[snowflake]" # + Snowflake
|
|
430
|
+
pip install "data-product-forge[all]" # Everything
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
> 💡 **Tip:** We recommend [pipx](https://pipx.pypa.io/) for an isolated global install:
|
|
434
|
+
> `pipx install "data-product-forge[all]"`
|
|
435
|
+
|
|
436
|
+
---
|
|
437
|
+
|
|
438
|
+
## 💻 CLI Command Reference
|
|
439
|
+
|
|
440
|
+
FLUID Forge is designed to feel as natural as `git` or `terraform`.
|
|
441
|
+
|
|
442
|
+
### Core Lifecycle
|
|
443
|
+
|
|
444
|
+
```bash
|
|
445
|
+
fluid init # Scaffold a new Data Product contract
|
|
446
|
+
fluid validate contract.fluid.yaml # Validate schema, dependencies, syntax
|
|
447
|
+
fluid plan contract.fluid.yaml # Generate a deterministic execution plan
|
|
448
|
+
fluid apply contract.fluid.yaml # Execute the plan against your target provider
|
|
449
|
+
fluid verify contract.fluid.yaml # Post-deployment data quality & compliance checks
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### AI & Code Generation
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
fluid forge # 🤖 Interactive, AI-powered project creation
|
|
456
|
+
fluid generate-airflow contract.fluid.yaml # Compile contract → native Airflow DAG
|
|
457
|
+
fluid generate-pipeline contract.fluid.yaml # Scaffold transformation code
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
### Governance & Compliance
|
|
461
|
+
|
|
462
|
+
```bash
|
|
463
|
+
fluid policy-compile contract.fluid.yaml # Translate policies → native IAM
|
|
464
|
+
fluid contract-tests contract.fluid.yaml # Run assertion suites
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
### Visualization
|
|
468
|
+
|
|
469
|
+
```bash
|
|
470
|
+
fluid graph contract.fluid.yaml # Graphviz DAG of internal lineage
|
|
471
|
+
fluid docs contract.fluid.yaml # Auto-generate documentation from contract
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
---
|
|
475
|
+
|
|
476
|
+
## 🎓 Templates
|
|
477
|
+
|
|
478
|
+
Don't start from scratch. `fluid init` ships with battle-tested enterprise patterns:
|
|
479
|
+
|
|
480
|
+
```bash
|
|
481
|
+
fluid init --template customer-360
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
| Template | What You Get |
|
|
485
|
+
|----------|-------------|
|
|
486
|
+
| `hello-world` | The basics — start here |
|
|
487
|
+
| `incremental-processing` | Append/Merge load patterns |
|
|
488
|
+
| `multi-source` | Complex DAG dependency orchestration |
|
|
489
|
+
| `policy-examples` | Advanced RBAC and AI agent governance |
|
|
490
|
+
|
|
491
|
+
---
|
|
492
|
+
|
|
493
|
+
## 🤝 Contributing
|
|
494
|
+
|
|
495
|
+
FLUID Forge is community-driven. We want your ideas, providers, and pull requests!
|
|
496
|
+
|
|
497
|
+
1. Fork the repo
|
|
498
|
+
2. Run `make setup` for a full dev environment
|
|
499
|
+
3. Check out [CONTRIBUTING.md](CONTRIBUTING.md) for style guides and architecture overview
|
|
500
|
+
|
|
501
|
+
Please read our [Code of Conduct](CODE_OF_CONDUCT.md) before participating.
|
|
502
|
+
|
|
503
|
+
To report security vulnerabilities, see [SECURITY.md](SECURITY.md).
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
## License
|
|
508
|
+
|
|
509
|
+
[Apache License 2.0](LICENSE) · Copyright 2024–2026 Agentics Transformation Pty Ltd
|
|
510
|
+
|
|
511
|
+
---
|
|
512
|
+
|
|
513
|
+
<div align="center">
|
|
514
|
+
|
|
515
|
+
**Built for the future of data. Built for the Agentic Era.**
|
|
516
|
+
|
|
517
|
+
[Documentation](https://agenticstiger.github.io/forge_docs/) · [FLUID Specification](https://open-data-protocol.github.io/fluid/) · [The Book](https://a.co/d/04zTi7aQ) · [PyPI](https://pypi.org/project/data-product-forge/) · [Issues](https://github.com/Agenticstiger/forge-cli/issues)
|
|
518
|
+
|
|
519
|
+
---
|
|
520
|
+
|
|
521
|
+
🇿🇦 **Proudly developed by [dustlabs.co.za](https://dustlabs.co.za)**
|
|
522
|
+
|
|
523
|
+
</div>
|