serverless-data-mesh 0.2.0__tar.gz → 1.2.0__tar.gz
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.
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/.gitignore +10 -0
- serverless_data_mesh-1.2.0/CHANGELOG.md +146 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/PKG-INFO +6 -3
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/PYPI.md +2 -0
- serverless_data_mesh-1.2.0/README.md +853 -0
- serverless_data_mesh-1.2.0/VERSION +1 -0
- serverless_data_mesh-1.2.0/benchmarks/run_aws_benchmark.py +70 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/benchmarks/run_cost_estimate.py +2 -2
- serverless_data_mesh-1.2.0/benchmarks/run_local_benchmark.py +47 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/architecture.md +11 -0
- serverless_data_mesh-1.2.0/docs/demo-walkthrough.html +283 -0
- serverless_data_mesh-1.2.0/docs/due-diligence-architecture-claims.md +138 -0
- serverless_data_mesh-1.2.0/docs/first-mesh-on-aws.md +101 -0
- serverless_data_mesh-1.2.0/docs/how-to-start.md +128 -0
- serverless_data_mesh-1.2.0/docs/images/durable-lambda-compute-model.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/medallion-one-yaml-mesh.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/pipeline-creation-flow.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/pipeline-generated-artifacts.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/portfolio-stack-veridata-sparkrules.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/sparkrules-pipeline-position.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-01-install-demo.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-01-install-demo.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-02-new-mesh.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-02-new-mesh.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-03-apply.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-03-apply.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-04-ui.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-04-ui.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-05-deploy.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-05-deploy.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-06-observe.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/step-06-observe.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/tutorial/tutorial-overview.gif +0 -0
- serverless_data_mesh-1.2.0/docs/images/vaquar-pattern-proprietary-pvdm.png +0 -0
- serverless_data_mesh-1.2.0/docs/images/veridata-vrp-chunk-proof.png +0 -0
- serverless_data_mesh-1.2.0/docs/metadata-driven-pipeline.md +817 -0
- serverless_data_mesh-1.2.0/docs/observability-production.md +62 -0
- serverless_data_mesh-1.2.0/docs/portable-multi-cloud.md +24 -0
- serverless_data_mesh-1.2.0/docs/roadmap-pvdm-a-agentic.md +97 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/vaquar-pattern.md +33 -1
- serverless_data_mesh-1.2.0/docs/visual-tutorial.md +64 -0
- serverless_data_mesh-1.2.0/examples/__init__.py +1 -0
- serverless_data_mesh-1.2.0/examples/contracts/payments.mesh.pipeline.yaml +48 -0
- serverless_data_mesh-1.2.0/examples/domain_writer/__init__.py +1 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/handler.py +5 -4
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/spark_io.py +2 -2
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/workload.py +3 -2
- serverless_data_mesh-1.2.0/examples/durable-compute/README.md +81 -0
- serverless_data_mesh-1.2.0/examples/durable-compute/terraform.tfvars.example +11 -0
- serverless_data_mesh-1.2.0/examples/medallion-e2e/README.md +181 -0
- serverless_data_mesh-1.2.0/examples/medallion-e2e/northstar.mesh.yaml +135 -0
- serverless_data_mesh-1.2.0/examples/retail-mesh/README.md +274 -0
- serverless_data_mesh-1.2.0/examples/retail-mesh/compile_all.py +44 -0
- serverless_data_mesh-1.2.0/examples/retail-mesh/contracts/customers.mesh.pipeline.yaml +32 -0
- serverless_data_mesh-1.2.0/examples/retail-mesh/contracts/inventory.mesh.pipeline.yaml +34 -0
- serverless_data_mesh-1.2.0/examples/retail-mesh/contracts/orders.mesh.pipeline.yaml +58 -0
- serverless_data_mesh-1.2.0/examples/retail-mesh/contracts/payments.mesh.pipeline.yaml +36 -0
- serverless_data_mesh-1.2.0/examples/retail-mesh/contracts/shipping.mesh.pipeline.yaml +33 -0
- serverless_data_mesh-1.2.0/examples/retail-mesh/mesh-registry.yaml +63 -0
- serverless_data_mesh-1.2.0/examples/retail-mesh/mesh-transactions/daily-close.yaml +26 -0
- serverless_data_mesh-1.2.0/examples/retail-mesh/spark/orders_readers.example.py +68 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/tutorials/walkthrough.py +1 -1
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/README.md +37 -1
- serverless_data_mesh-1.2.0/infrastructure/terraform/environments/dev/main.tf +163 -0
- serverless_data_mesh-1.2.0/infrastructure/terraform/environments/medallion/main.tf +122 -0
- serverless_data_mesh-1.2.0/infrastructure/terraform/environments/medallion/outputs.tf +28 -0
- serverless_data_mesh-1.2.0/infrastructure/terraform/environments/medallion/terraform.tfvars.example +21 -0
- serverless_data_mesh-1.2.0/infrastructure/terraform/environments/medallion/variables.tf +107 -0
- serverless_data_mesh-1.2.0/infrastructure/terraform/environments/medallion/versions.tf +10 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/producer/main.tf +6 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/producer/terraform.tfvars.example +1 -1
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/main.tf +22 -5
- serverless_data_mesh-1.2.0/infrastructure/terraform/environments/prod/providers.tf +13 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/terraform.tfvars.example +5 -1
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/variables.tf +24 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/main.tf +43 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/variables.tf +6 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/main.tf +9 -3
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/variables.tf +3 -2
- serverless_data_mesh-1.2.0/infrastructure/terraform/modules/lambda-fleet/main.tf +97 -0
- serverless_data_mesh-1.2.0/infrastructure/terraform/modules/lambda-fleet/outputs.tf +25 -0
- serverless_data_mesh-1.2.0/infrastructure/terraform/modules/medallion-mesh/main.tf +85 -0
- serverless_data_mesh-1.2.0/infrastructure/terraform/modules/medallion-mesh/outputs.tf +7 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/dashboard.tf +116 -6
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/main.tf +1 -1
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/outputs.tf +1 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/variables.tf +6 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/variables.tf +1 -1
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/main.tf +5 -14
- serverless_data_mesh-1.2.0/infrastructure/terraform/scripts/package_lambda.ps1 +112 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/scripts/package_lambda.sh +18 -2
- serverless_data_mesh-1.2.0/integrations/backstage/README.md +31 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/pyproject.toml +17 -1
- serverless_data_mesh-1.2.0/schemas/sdm-v1-dataproductpipeline.json +64 -0
- serverless_data_mesh-1.2.0/schemas/sdm-v1-medallionmesh.json +75 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/__init__.py +40 -3
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/attestation/__init__.py +19 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/attestation/pvdma.py +215 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/catalog/glue_connector.py +1 -1
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/catalog/glue_rest.py +3 -1
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/catalog_export/__init__.py +5 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/catalog_export/backstage.py +132 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/cli.py +580 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/compile/__init__.py +16 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/compile/contract.py +247 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/compile/emit.py +478 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/compile/from_init.py +35 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/compile/loader.py +57 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/compile/medallion.py +270 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/compile/medallion_emit.py +403 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/compile/medallion_validate.py +48 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/compile/runtime.py +134 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/compile/validate.py +42 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/compile/wizard.py +270 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/config.py +3 -3
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/dashboard/cloudwatch.py +3 -5
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/dashboard/trust.py +6 -4
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/deploy/__init__.py +5 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/deploy/runner.py +139 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/governance/consumer_sla.py +9 -6
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/lineage/openlineage.py +2 -2
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/local/runtime.py +115 -8
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/metrics/__init__.py +5 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/metrics/mesh_trust.py +72 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/observability/__init__.py +5 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/observability/structured.py +15 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/canary.py +2 -1
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/coordinator.py +98 -8
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/reprocess.py +4 -7
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/portable/__init__.py +17 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/portable/cloud.py +104 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/py.typed +1 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/readers/__init__.py +21 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/readers/s3_bronze.py +161 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/readers/upstream_parquet.py +125 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/rules/__init__.py +14 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/rules/gate.py +60 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/rules/sparkrules_connector.py +7 -3
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/scaffold/init_domain.py +25 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/templates/medallion-starter.mesh.yaml +46 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/templates/single-pipeline.mesh.yaml +34 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/types/workload.py +4 -3
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/__init__.py +5 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/data.py +316 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/server.py +163 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/static/app.css +200 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/static/app.js +196 -0
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/ui/static/index.html +143 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/__init__.py +11 -3
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/fallback.py +5 -3
- serverless_data_mesh-1.2.0/src/serverless_data_mesh/verification/kms_sign.py +123 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/vrp.py +6 -5
- serverless_data_mesh-1.2.0/tests/__init__.py +1 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/conftest.py +6 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/eval/test_consumer_safety.py +3 -2
- serverless_data_mesh-1.2.0/tests/unit/__init__.py +1 -0
- serverless_data_mesh-1.2.0/tests/unit/test_attestation_kms.py +100 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_catalog.py +0 -1
- serverless_data_mesh-1.2.0/tests/unit/test_catalog_export.py +31 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_cli_scaffold.py +4 -2
- serverless_data_mesh-1.2.0/tests/unit/test_compile.py +74 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_consumer_sla.py +9 -6
- serverless_data_mesh-1.2.0/tests/unit/test_coverage_new_modules.py +327 -0
- serverless_data_mesh-1.2.0/tests/unit/test_deploy.py +24 -0
- serverless_data_mesh-1.2.0/tests/unit/test_medallion.py +48 -0
- serverless_data_mesh-1.2.0/tests/unit/test_metrics.py +37 -0
- serverless_data_mesh-1.2.0/tests/unit/test_observability.py +45 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_openlineage.py +9 -6
- serverless_data_mesh-1.2.0/tests/unit/test_reference_readers.py +37 -0
- serverless_data_mesh-1.2.0/tests/unit/test_schemas.py +35 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_sparkrules_connector.py +0 -1
- serverless_data_mesh-1.2.0/tests/unit/test_ui_server.py +97 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_verification.py +4 -1
- serverless_data_mesh-1.2.0/tests/unit/test_version.py +22 -0
- serverless_data_mesh-1.2.0/tests/unit/test_wizard.py +51 -0
- serverless_data_mesh-0.2.0/CHANGELOG.md +0 -81
- serverless_data_mesh-0.2.0/README.md +0 -409
- serverless_data_mesh-0.2.0/VERSION +0 -1
- serverless_data_mesh-0.2.0/examples/__init__.py +0 -0
- serverless_data_mesh-0.2.0/examples/domain_writer/__init__.py +0 -0
- serverless_data_mesh-0.2.0/examples/multi-domain-orders-payments/domains/orders/handler.py +0 -22
- serverless_data_mesh-0.2.0/examples/multi-domain-orders-payments/domains/payments/handler.py +0 -22
- serverless_data_mesh-0.2.0/infrastructure/terraform/environments/dev/main.tf +0 -160
- serverless_data_mesh-0.2.0/infrastructure/terraform/scripts/package_lambda.ps1 +0 -31
- serverless_data_mesh-0.2.0/src/serverless_data_mesh/cli.py +0 -165
- serverless_data_mesh-0.2.0/src/serverless_data_mesh/metrics/__init__.py +0 -5
- serverless_data_mesh-0.2.0/src/serverless_data_mesh/metrics/mesh_trust.py +0 -56
- serverless_data_mesh-0.2.0/src/serverless_data_mesh/py.typed +0 -0
- serverless_data_mesh-0.2.0/src/serverless_data_mesh/rules/__init__.py +0 -8
- serverless_data_mesh-0.2.0/src/serverless_data_mesh/scaffold/init_domain.py +0 -210
- serverless_data_mesh-0.2.0/tests/__init__.py +0 -0
- serverless_data_mesh-0.2.0/tests/unit/__init__.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/LICENSE +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/benchmarks/README.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/benchmarks/results/2026-06-baseline.json +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/benchmarks/run_benchmark.sh +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/benchmarks/workloads/100k_rows.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/benchmarks/workloads/10m_rows.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/benchmarks/workloads/1m_rows.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/blog-the-vaquar-pattern.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/data-mesh-end-to-end.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/data-mesh-patterns.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/deployment.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/domain-contracts.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/getting-started.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/glue-connector.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/images/lambda-execution-flow.png +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/images/serverless-data-mesh-hero.png +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/images/three-account-data-mesh.png +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/images/vaquar-pattern-blog-hero.png +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/images/vaquar-pattern-e2e-journey.png +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/images/vaquar-pattern-invariant.png +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/images/why-sdm-four-phase-connectivity.png +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/images/why-sdm-hero-connectivity.png +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/images/why-sdm-trust-gap.png +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/mesh-trust-dashboard.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/pypi.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/sparkrules-connector.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/terraform-guide.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/docs/why-serverless-data-mesh.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/README.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/io.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/domain_writer/rules_io.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/multi-domain-orders-payments/README.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/multi-domain-orders-payments/coordinator_config.yaml +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/multi-domain-orders-payments/test_atomicity.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/tutorials/README.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/examples/tutorials/verification_gate_demo.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/grafana/mesh-trust-dashboard.json +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/sam/README.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/sam/template.yaml +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/dev/terraform.tfvars.example +0 -0
- {serverless_data_mesh-0.2.0/infrastructure/terraform/environments/prod → serverless_data_mesh-1.2.0/infrastructure/terraform/environments/medallion}/providers.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/README.md +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/publisher/main.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/publisher/terraform.tfvars.example +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/steward/main.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/multi-account/steward/terraform.tfvars.example +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/outputs.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/environments/prod/versions.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/main.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/outputs.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/variables.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/eventbridge/versions.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/governance/main.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/governance/versions.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/outputs.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/iam/versions.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/outputs.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/lambda/versions.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/main.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/outputs.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/variables.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/messaging/versions.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/monitoring/versions.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/main.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/outputs.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/state_machine.asl.json.tpl +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/stepfunctions/versions.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/outputs.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/variables.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/infrastructure/terraform/modules/storage/versions.tf +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/catalog/__init__.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/dashboard/__init__.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/exceptions.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/governance/__init__.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/lineage/__init__.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/local/__init__.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/__init__.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/durable_steps.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/orchestration/state.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/scaffold/__init__.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/types/__init__.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/src/serverless_data_mesh/verification/backend.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_auto_repair_demo.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_canary.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_config.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_example_workload.py +1 -1
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_fallback_verifier.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_local_runtime.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_reprocess.py +0 -0
- {serverless_data_mesh-0.2.0 → serverless_data_mesh-1.2.0}/tests/unit/test_types.py +0 -0
|
@@ -59,3 +59,13 @@ VRP_SIGNING_KEY*
|
|
|
59
59
|
# Local scratch / agent artifacts
|
|
60
60
|
tests/_scratch_*
|
|
61
61
|
agent-transcripts/
|
|
62
|
+
|
|
63
|
+
# Metadata-driven compile output
|
|
64
|
+
examples/retail-mesh/generated/
|
|
65
|
+
examples/medallion-e2e/generated/
|
|
66
|
+
domains/
|
|
67
|
+
infrastructure/terraform/fixtures/generated-mesh/
|
|
68
|
+
|
|
69
|
+
# Keep VS Code YAML schema mapping
|
|
70
|
+
!.vscode/
|
|
71
|
+
!.vscode/settings.json
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
## [1.2.0] - 2026-07-21
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **PVDM-A Decision Attestation** + CLI `attest` + coordinator/local wiring
|
|
12
|
+
- **Optional KMS VRP envelopes** (`VRP_KMS_KEY_ID`)
|
|
13
|
+
- **Pre-physical rules gate** (`SDM_RULES_GATE` / SparkRules)
|
|
14
|
+
- **Mesh control center UI** with dashboards, `/walkthrough` GIF demo, one-click demos
|
|
15
|
+
- **README GIF walkthrough** + durable-compute example + Docker image (`ghcr.io`)
|
|
16
|
+
- **100% coverage gate** for attestation / kms_sign / rules.gate / ui.data (`scripts/coverage_gate.py`)
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **Lambda VERSION path**: `__init__.py` tries `serverless_data_mesh/VERSION`, repo root, and metadata; wheel bundles `VERSION` in package
|
|
21
|
+
- **IAM**: `cloudwatch:PutMetricData` for `ServerlessDataMesh*` namespace on domain writer role
|
|
22
|
+
- **Terraform storage**: lifecycle `for_each` uses static bucket keys (not computed `.id` map keys)
|
|
23
|
+
- **Metrics**: `SDM_METRICS_ENABLED` / `SDM_DISABLE_METRICS` opt-out; PutMetricData failures are non-fatal
|
|
24
|
+
- **Lambda packaging**: `SDM_PIPELINE_SRC` overlays compiled `handler.py` at zip root; `handler.lambda_handler` in manifest and Terraform
|
|
25
|
+
- **Observability:** structured `pvdm_outcome` JSON logs; LocalPVDMRuntime S3 proofs when `VRP_PROOF_BUCKET` set
|
|
26
|
+
- **Monitoring:** ops dashboard widgets (invocations, errors, duration, DLQ); DLQ alarm; JSON log metric filters
|
|
27
|
+
- **Scripts:** `aws_observability_smoke.sh`, `aws_dlq_smoke_test.sh`; [observability-production.md](docs/observability-production.md)
|
|
28
|
+
|
|
29
|
+
## [1.1.0] - 2026-06-14
|
|
30
|
+
|
|
31
|
+
Enterprise completeness: reference readers, per-layer Lambda fleet, deploy CLI, Backstage, schemas, UI, benchmarks, multi-cloud stubs.
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
|
|
35
|
+
- **Reference readers**: S3 bronze landing + upstream Parquet (`serverless_data_mesh.readers`)
|
|
36
|
+
- **Per-layer Lambda fleet** Terraform module (`lambda-fleet`) + `layer_lambda.manifest.json` from compile
|
|
37
|
+
- **`serverless-data-mesh deploy`** — apply + terraform + optional Step Functions start
|
|
38
|
+
- **`serverless-data-mesh catalog export`** — Backstage `catalog-info.yaml` entities
|
|
39
|
+
- **`serverless-data-mesh ui`** — local mesh control panel (HTTP)
|
|
40
|
+
- **JSON Schema** for `sdm/v1` contracts + VS Code YAML autocomplete
|
|
41
|
+
- **Portable cloud** adapters (AWS production, GCP/Azure stubs)
|
|
42
|
+
- **Docs**: `docs/first-mesh-on-aws.md` (5-minute guide)
|
|
43
|
+
- **CI**: medallion Terraform validate, local benchmark, smoke-aws + benchmark workflows
|
|
44
|
+
- **Benchmarks**: `run_local_benchmark.py`, `run_aws_benchmark.py`
|
|
45
|
+
|
|
46
|
+
## [1.0.0] - 2026-06-14
|
|
47
|
+
|
|
48
|
+
Production release: metadata-driven medallion mesh, zero-friction CLI, and Terraform deploy path.
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
|
|
52
|
+
- **Metadata-driven pipeline compiler** (`serverless-data-mesh compile`)
|
|
53
|
+
- `sdm/v1` `DataProductPipeline` and `MedallionMesh` YAML contract models
|
|
54
|
+
- Generated artifacts: handler, readers stub, pipeline_config, Step Functions, EventBridge, tests
|
|
55
|
+
- `serverless_data_mesh.compile.runtime.run_metadata_pipeline`
|
|
56
|
+
- Example contract: `examples/contracts/payments.mesh.pipeline.yaml`
|
|
57
|
+
- **Real-world retail ETL walkthrough**: `examples/retail-mesh/` (5 pipelines, PySpark on Lambda)
|
|
58
|
+
- **Medallion E2E mesh**: `examples/medallion-e2e/` — one YAML → bronze/silver/gold for all domains
|
|
59
|
+
- **Complete metadata guide**: `docs/metadata-driven-pipeline.md` — full schema, deploy, CI/CD
|
|
60
|
+
- **Zero-friction CLI**: `new`, `apply`, `validate`, `doctor` — YAML to full mesh in 2 commands
|
|
61
|
+
- **Terraform medallion-mesh module** and `environments/medallion/` stack
|
|
62
|
+
- Prod stack: mesh trust dashboard domains, optional Lake Formation governance module
|
|
63
|
+
- Dependency: `pyyaml>=6`
|
|
64
|
+
|
|
65
|
+
### Changed
|
|
66
|
+
|
|
67
|
+
- `serverless-data-mesh init` now uses the compile pipeline (outputs `mesh.pipeline.yaml`)
|
|
68
|
+
- PyPI classifier: **Production/Stable**
|
|
69
|
+
|
|
70
|
+
## [0.2.0] - 2026-06-15
|
|
71
|
+
|
|
72
|
+
### Added
|
|
73
|
+
|
|
74
|
+
- **Auto VRP reprocessing** (`orchestration/reprocess.py`): detect drops, repair sink, re-proof, commit or escalate
|
|
75
|
+
- **Consumer SLA enforcement** (`governance/consumer_sla.py`): freshness, completeness, required columns; LF grant hook
|
|
76
|
+
- **Live CloudWatch trust dashboard** (Terraform `monitoring/dashboard.tf` + `publish_vrp_metric`)
|
|
77
|
+
- **Grafana template** (`infrastructure/grafana/mesh-trust-dashboard.json`)
|
|
78
|
+
- **Lake Formation governance module** (`terraform/modules/governance/`)
|
|
79
|
+
- CLI: `serverless-data-mesh canary`, `reprocess-demo`, `dashboard --cloudwatch`
|
|
80
|
+
- Scaffold: `consumer_sla.yaml`, `step_function.asl.json`, richer handler imports
|
|
81
|
+
- Docs: `docs/mesh-trust-dashboard.md`
|
|
82
|
+
- Tests: reprocess, consumer SLA, canary, auto-repair demo
|
|
83
|
+
|
|
84
|
+
### Changed
|
|
85
|
+
|
|
86
|
+
- `IceGuardDurableCoordinator` supports optional `sink_reader` + `enable_auto_repair`
|
|
87
|
+
- Trust dashboard supports proofs scan, CloudWatch live mode, and demo fallback
|
|
88
|
+
|
|
89
|
+
## [0.1.3] - 2026-06-15
|
|
90
|
+
|
|
91
|
+
### Added
|
|
92
|
+
|
|
93
|
+
- **Pure-Python fallback verifier** when veridata-recon wheels unavailable (Windows/Mac demo works)
|
|
94
|
+
- `serverless-data-mesh init` domain scaffold CLI
|
|
95
|
+
- `serverless-data-mesh dashboard` mesh trust dashboard HTML
|
|
96
|
+
- `benchmarks/run_cost_estimate.py` with published cost estimates (100K/1M/10M)
|
|
97
|
+
- `ConsumerSLAContract` type and `run_canary_comparison` for progressive delivery
|
|
98
|
+
- Tests: fallback verifier, scaffold, dashboard
|
|
99
|
+
|
|
100
|
+
### Changed
|
|
101
|
+
|
|
102
|
+
- Local demo, gate demo, multi-domain, and benchmark use `create_proof_generator()` auto-backend
|
|
103
|
+
- `benchmarks/results/2026-06-baseline.json` populated (pricing model estimated)
|
|
104
|
+
|
|
105
|
+
## [0.1.2] - 2026-06-15
|
|
106
|
+
|
|
107
|
+
### Added
|
|
108
|
+
|
|
109
|
+
- **Local demo**: `serverless-data-mesh demo` runs PVDM in <60s without AWS (`LocalPVDMRuntime`)
|
|
110
|
+
- `examples/tutorials/verification_gate_demo.py`: corrupt data blocked before consumers
|
|
111
|
+
- `examples/multi-domain-orders-payments/`: deferred mesh leader commit + `test_atomicity.py`
|
|
112
|
+
- `benchmarks/`: cost comparison methodology, workloads (100k/1M/10M), results placeholder
|
|
113
|
+
- `serverless_data_mesh.lineage`: OpenLineage `emit_openlineage_event` on commit
|
|
114
|
+
- Tests: `test_local_runtime.py`, `test_openlineage.py`
|
|
115
|
+
|
|
116
|
+
## [0.1.1] - 2026-06-15
|
|
117
|
+
|
|
118
|
+
### Added
|
|
119
|
+
|
|
120
|
+
- **Vaquar Pattern** (`docs/vaquar-pattern.md`): proof-gated serverless lakehouse publication (PVDM)
|
|
121
|
+
- Blog-style [why-serverless-data-mesh.md](docs/why-serverless-data-mesh.md) with connectivity diagrams
|
|
122
|
+
- New diagram assets: `why-sdm-hero-connectivity.png`, `why-sdm-four-phase-connectivity.png`, `why-sdm-trust-gap.png`
|
|
123
|
+
|
|
124
|
+
### Fixed
|
|
125
|
+
|
|
126
|
+
- Hatch `VERSION` parsing: `pattern` for plain semver file (CI build green)
|
|
127
|
+
- `__version__` reads from package metadata when installed; dev fallback uses `parents[2]`
|
|
128
|
+
- Multi-account Terraform: Steward creates only checkpoint/proof buckets; Publisher creates only lakehouse
|
|
129
|
+
- Storage module: optional per-bucket creation via nullable bucket names
|
|
130
|
+
|
|
131
|
+
### Changed
|
|
132
|
+
|
|
133
|
+
- Pattern catalog: Vaquar Pattern as flagship pattern #0 in [data-mesh-patterns.md](docs/data-mesh-patterns.md)
|
|
134
|
+
|
|
135
|
+
## [0.1.0] - 2026-06-14
|
|
136
|
+
|
|
137
|
+
### Added
|
|
138
|
+
|
|
139
|
+
- Initial release: IceGuard + Durable Execution + veridata-recon + Glue REST
|
|
140
|
+
- `IceGuardDurableCoordinator` for cross-domain transaction boundaries
|
|
141
|
+
- `GlueRestCatalogAdapter` for SigV4 Iceberg metadata commits
|
|
142
|
+
- `VRPProofGenerator` and `validate_then_commit` hooks
|
|
143
|
+
- Domain writer Lambda example with SAM template
|
|
144
|
+
- `VERSION` file, pre-commit, Dependabot, SECURITY.md, consumer safety benchmark
|
|
145
|
+
- `SparkRulesConnector` (`[rules]` extra), PyPI publish workflow
|
|
146
|
+
- CI workflow, unit tests, and documentation
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: serverless-data-mesh
|
|
3
|
-
Version:
|
|
3
|
+
Version: 1.2.0
|
|
4
4
|
Summary: Federated data mesh framework for proof-gated, exactly-once Iceberg data product publication on AWS Lambda.
|
|
5
5
|
Project-URL: Homepage, https://github.com/vaquarkhan/aws-serverless-datamesh-framework
|
|
6
6
|
Project-URL: Documentation, https://github.com/vaquarkhan/aws-serverless-datamesh-framework#readme
|
|
@@ -10,8 +10,8 @@ Project-URL: PyPI, https://pypi.org/project/serverless-data-mesh/
|
|
|
10
10
|
Author: Serverless Data Mesh Contributors
|
|
11
11
|
License-Expression: Apache-2.0
|
|
12
12
|
License-File: LICENSE
|
|
13
|
-
Keywords: aws,data-as-a-product,data-mesh,domain-oriented,durable-execution,federated-data-mesh,federated-governance,iceberg,iceguard,lakehouse,lambda,pyiceberg,rule-engine,serverless,sparkrules,vaquar-pattern,veridata-recon
|
|
14
|
-
Classifier: Development Status ::
|
|
13
|
+
Keywords: aws,bronze-silver-gold,data-as-a-product,data-mesh,domain-oriented,durable-execution,etl,federated-data-mesh,federated-governance,iceberg,iceguard,lakehouse,lambda,medallion,metadata-driven,pyiceberg,rule-engine,serverless,sparkrules,vaquar-pattern,veridata-recon
|
|
14
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
15
15
|
Classifier: Intended Audience :: Developers
|
|
16
16
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
17
17
|
Classifier: Operating System :: OS Independent
|
|
@@ -27,6 +27,7 @@ Requires-Dist: aws-durable-execution-sdk-python>=1.0.0
|
|
|
27
27
|
Requires-Dist: boto3>=1.34
|
|
28
28
|
Requires-Dist: iceguard>=1.0.0
|
|
29
29
|
Requires-Dist: pyiceberg[glue,rest-sigv4]>=0.7.0
|
|
30
|
+
Requires-Dist: pyyaml>=6
|
|
30
31
|
Requires-Dist: veridata-recon>=0.1.0
|
|
31
32
|
Provides-Extra: all
|
|
32
33
|
Requires-Dist: pyspark>=3.5.0; extra == 'all'
|
|
@@ -66,6 +67,8 @@ Introduces the **[Vaquar Pattern](https://github.com/vaquarkhan/aws-serverless-d
|
|
|
66
67
|
```bash
|
|
67
68
|
pip install serverless-data-mesh
|
|
68
69
|
serverless-data-mesh demo # <60s local PVDM demo, no AWS
|
|
70
|
+
serverless-data-mesh new --template medallion --output my-mesh
|
|
71
|
+
serverless-data-mesh apply --contract my-mesh/mesh.yaml --output my-mesh/generated
|
|
69
72
|
pip install "serverless-data-mesh[rules]" # + SparkRules on Lambda
|
|
70
73
|
pip install "serverless-data-mesh[spark]" # + PySpark + SparkRules
|
|
71
74
|
pip install "serverless-data-mesh[all]" # rules + spark
|
|
@@ -15,6 +15,8 @@ Introduces the **[Vaquar Pattern](https://github.com/vaquarkhan/aws-serverless-d
|
|
|
15
15
|
```bash
|
|
16
16
|
pip install serverless-data-mesh
|
|
17
17
|
serverless-data-mesh demo # <60s local PVDM demo, no AWS
|
|
18
|
+
serverless-data-mesh new --template medallion --output my-mesh
|
|
19
|
+
serverless-data-mesh apply --contract my-mesh/mesh.yaml --output my-mesh/generated
|
|
18
20
|
pip install "serverless-data-mesh[rules]" # + SparkRules on Lambda
|
|
19
21
|
pip install "serverless-data-mesh[spark]" # + PySpark + SparkRules
|
|
20
22
|
pip install "serverless-data-mesh[all]" # rules + spark
|