contractforge-databricks 0.1.0__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.
- contractforge_databricks/__init__.py +172 -0
- contractforge_databricks/adapter.py +69 -0
- contractforge_databricks/annotations/__init__.py +10 -0
- contractforge_databricks/annotations/application.py +52 -0
- contractforge_databricks/annotations/audit.py +49 -0
- contractforge_databricks/annotations/sql.py +142 -0
- contractforge_databricks/api.py +65 -0
- contractforge_databricks/bundles/__init__.py +9 -0
- contractforge_databricks/bundles/assets.py +47 -0
- contractforge_databricks/bundles/project.py +213 -0
- contractforge_databricks/bundles/project_config.py +133 -0
- contractforge_databricks/capabilities/__init__.py +17 -0
- contractforge_databricks/capabilities/builders.py +43 -0
- contractforge_databricks/capabilities/evaluate.py +162 -0
- contractforge_databricks/capabilities/mapping.py +36 -0
- contractforge_databricks/capabilities/models.py +44 -0
- contractforge_databricks/capabilities/runtime.py +111 -0
- contractforge_databricks/capabilities/uc.py +47 -0
- contractforge_databricks/cli.py +196 -0
- contractforge_databricks/cli_deploy.py +98 -0
- contractforge_databricks/cli_governance.py +142 -0
- contractforge_databricks/cli_io.py +91 -0
- contractforge_databricks/cli_maintenance.py +69 -0
- contractforge_databricks/coercion.py +31 -0
- contractforge_databricks/contract_extensions.py +70 -0
- contractforge_databricks/cost/__init__.py +11 -0
- contractforge_databricks/cost/model.py +22 -0
- contractforge_databricks/cost/report.py +65 -0
- contractforge_databricks/cost/sql.py +136 -0
- contractforge_databricks/dashboards/__init__.py +15 -0
- contractforge_databricks/dashboards/control_tables.py +150 -0
- contractforge_databricks/diagnostics/__init__.py +7 -0
- contractforge_databricks/diagnostics/explain.py +40 -0
- contractforge_databricks/environment.py +53 -0
- contractforge_databricks/evidence/__init__.py +98 -0
- contractforge_databricks/evidence/ddl.py +35 -0
- contractforge_databricks/evidence/governance_log.py +175 -0
- contractforge_databricks/evidence/helpers.py +29 -0
- contractforge_databricks/evidence/ops_log.py +210 -0
- contractforge_databricks/evidence/records.py +27 -0
- contractforge_databricks/evidence/run_log.py +74 -0
- contractforge_databricks/evidence/schemas.py +7 -0
- contractforge_databricks/evidence/sql.py +144 -0
- contractforge_databricks/evidence/tables.py +20 -0
- contractforge_databricks/evidence/writer.py +118 -0
- contractforge_databricks/execution/__init__.py +70 -0
- contractforge_databricks/execution/delta_basic.py +57 -0
- contractforge_databricks/execution/hash_diff.py +126 -0
- contractforge_databricks/execution/hash_diff_latest.py +142 -0
- contractforge_databricks/execution/replace_partitions.py +40 -0
- contractforge_databricks/execution/results.py +5 -0
- contractforge_databricks/execution/retry.py +36 -0
- contractforge_databricks/execution/scd2.py +213 -0
- contractforge_databricks/execution/scd2_deletes.py +65 -0
- contractforge_databricks/execution/scd2_late.py +30 -0
- contractforge_databricks/execution/snapshot.py +77 -0
- contractforge_databricks/execution/sql_merge.py +85 -0
- contractforge_databricks/execution/tables.py +98 -0
- contractforge_databricks/execution/windows.py +58 -0
- contractforge_databricks/governance/__init__.py +30 -0
- contractforge_databricks/governance/access.py +185 -0
- contractforge_databricks/governance/application.py +93 -0
- contractforge_databricks/governance/drift.py +49 -0
- contractforge_databricks/governance/runtime.py +60 -0
- contractforge_databricks/governance/sql.py +31 -0
- contractforge_databricks/governance/validation.py +135 -0
- contractforge_databricks/lakeflow/__init__.py +21 -0
- contractforge_databricks/lakeflow/compatibility.py +194 -0
- contractforge_databricks/lakeflow/rendering.py +175 -0
- contractforge_databricks/lineage/__init__.py +7 -0
- contractforge_databricks/lineage/openlineage.py +182 -0
- contractforge_databricks/maintenance/__init__.py +27 -0
- contractforge_databricks/maintenance/retention.py +90 -0
- contractforge_databricks/maintenance/sql.py +68 -0
- contractforge_databricks/metrics/__init__.py +19 -0
- contractforge_databricks/metrics/history.py +21 -0
- contractforge_databricks/metrics/write.py +63 -0
- contractforge_databricks/operations/__init__.py +4 -0
- contractforge_databricks/operations/application.py +38 -0
- contractforge_databricks/operations/sql.py +95 -0
- contractforge_databricks/parity/__init__.py +18 -0
- contractforge_databricks/parity/catalog.py +59 -0
- contractforge_databricks/parity/models.py +7 -0
- contractforge_databricks/parity/scenarios.py +111 -0
- contractforge_databricks/partitioning/__init__.py +3 -0
- contractforge_databricks/partitioning/predicates.py +28 -0
- contractforge_databricks/preparation/__init__.py +47 -0
- contractforge_databricks/preparation/deduplicate.py +87 -0
- contractforge_databricks/preparation/encoding.py +37 -0
- contractforge_databricks/preparation/hashing.py +18 -0
- contractforge_databricks/preparation/pyspark.py +178 -0
- contractforge_databricks/preparation/pyspark_staging.py +70 -0
- contractforge_databricks/preparation/shape.py +209 -0
- contractforge_databricks/preparation/shape_validation.py +94 -0
- contractforge_databricks/preparation/staging.py +17 -0
- contractforge_databricks/preparation/zip_arrays.py +51 -0
- contractforge_databricks/presets/__init__.py +3 -0
- contractforge_databricks/presets/base.py +24 -0
- contractforge_databricks/presets/bronze.py +57 -0
- contractforge_databricks/presets/catalog.py +22 -0
- contractforge_databricks/presets/core.py +134 -0
- contractforge_databricks/presets/gold.py +62 -0
- contractforge_databricks/presets/modifiers.py +51 -0
- contractforge_databricks/presets/runtime.py +22 -0
- contractforge_databricks/presets/silver.py +101 -0
- contractforge_databricks/presets/write_engine.py +57 -0
- contractforge_databricks/quality/__init__.py +41 -0
- contractforge_databricks/quality/evaluation.py +178 -0
- contractforge_databricks/quality/persistence.py +81 -0
- contractforge_databricks/quality/registry.py +134 -0
- contractforge_databricks/quality/results.py +17 -0
- contractforge_databricks/quality/sql.py +113 -0
- contractforge_databricks/rendering/__init__.py +11 -0
- contractforge_databricks/rendering/bundle.py +93 -0
- contractforge_databricks/rendering/markdown.py +50 -0
- contractforge_databricks/rendering/names.py +56 -0
- contractforge_databricks/results.py +15 -0
- contractforge_databricks/runtime/__init__.py +101 -0
- contractforge_databricks/runtime/available_now.py +147 -0
- contractforge_databricks/runtime/bundles.py +211 -0
- contractforge_databricks/runtime/cache.py +20 -0
- contractforge_databricks/runtime/control_tables.py +19 -0
- contractforge_databricks/runtime/deploy.py +197 -0
- contractforge_databricks/runtime/detection.py +114 -0
- contractforge_databricks/runtime/dry_run.py +46 -0
- contractforge_databricks/runtime/errors.py +54 -0
- contractforge_databricks/runtime/file_selection.py +109 -0
- contractforge_databricks/runtime/finalization.py +168 -0
- contractforge_databricks/runtime/governance.py +37 -0
- contractforge_databricks/runtime/hooks.py +45 -0
- contractforge_databricks/runtime/http_file.py +37 -0
- contractforge_databricks/runtime/http_retry.py +15 -0
- contractforge_databricks/runtime/http_safety.py +9 -0
- contractforge_databricks/runtime/json_materialization.py +97 -0
- contractforge_databricks/runtime/lineage.py +164 -0
- contractforge_databricks/runtime/maintenance.py +43 -0
- contractforge_databricks/runtime/merge_validation.py +98 -0
- contractforge_databricks/runtime/metadata.py +21 -0
- contractforge_databricks/runtime/metrics.py +34 -0
- contractforge_databricks/runtime/models.py +32 -0
- contractforge_databricks/runtime/options.py +33 -0
- contractforge_databricks/runtime/orchestration_context.py +185 -0
- contractforge_databricks/runtime/orchestrator.py +147 -0
- contractforge_databricks/runtime/partitioning.py +93 -0
- contractforge_databricks/runtime/quality_quarantine.py +92 -0
- contractforge_databricks/runtime/rest_api.py +46 -0
- contractforge_databricks/runtime/rest_auth.py +21 -0
- contractforge_databricks/runtime/rest_pagination.py +21 -0
- contractforge_databricks/runtime/run_payload.py +177 -0
- contractforge_databricks/runtime/schema.py +106 -0
- contractforge_databricks/runtime/source_metadata.py +30 -0
- contractforge_databricks/runtime/source_registry.py +43 -0
- contractforge_databricks/runtime/source_schema.py +24 -0
- contractforge_databricks/runtime/sources.py +208 -0
- contractforge_databricks/runtime/spark.py +183 -0
- contractforge_databricks/runtime/spark_defaults.py +35 -0
- contractforge_databricks/runtime/storage_auth.py +132 -0
- contractforge_databricks/runtime/streaming.py +131 -0
- contractforge_databricks/runtime/success.py +104 -0
- contractforge_databricks/runtime/utils.py +52 -0
- contractforge_databricks/runtime/watermark.py +71 -0
- contractforge_databricks/runtime/windows.py +184 -0
- contractforge_databricks/runtime/write.py +66 -0
- contractforge_databricks/runtime/write_flow.py +146 -0
- contractforge_databricks/runtime/write_strategy.py +40 -0
- contractforge_databricks/schema/__init__.py +21 -0
- contractforge_databricks/schema/diff.py +11 -0
- contractforge_databricks/schema/policy.py +33 -0
- contractforge_databricks/schema/sync.py +23 -0
- contractforge_databricks/security/__init__.py +21 -0
- contractforge_databricks/security/errors.py +5 -0
- contractforge_databricks/security/redaction.py +5 -0
- contractforge_databricks/security/secrets.py +114 -0
- contractforge_databricks/security/source_policy.py +17 -0
- contractforge_databricks/shapes/__init__.py +3 -0
- contractforge_databricks/shapes/sql.py +123 -0
- contractforge_databricks/sources/__init__.py +67 -0
- contractforge_databricks/sources/artifacts.py +100 -0
- contractforge_databricks/sources/autoloader.py +48 -0
- contractforge_databricks/sources/bounded_streams.py +44 -0
- contractforge_databricks/sources/classification.py +115 -0
- contractforge_databricks/sources/delta_share.py +21 -0
- contractforge_databricks/sources/files.py +48 -0
- contractforge_databricks/sources/http_file.py +46 -0
- contractforge_databricks/sources/interpret.py +76 -0
- contractforge_databricks/sources/jdbc.py +32 -0
- contractforge_databricks/sources/metadata.py +18 -0
- contractforge_databricks/sources/native_passthrough.py +33 -0
- contractforge_databricks/sources/rds_iam.py +15 -0
- contractforge_databricks/sources/rds_iam_runtime.py +191 -0
- contractforge_databricks/sources/rest_api.py +33 -0
- contractforge_databricks/sources/support.py +50 -0
- contractforge_databricks/sources/table_refs.py +65 -0
- contractforge_databricks/sql/__init__.py +4 -0
- contractforge_databricks/sql/identifiers.py +17 -0
- contractforge_databricks/sql/literals.py +36 -0
- contractforge_databricks/state/__init__.py +39 -0
- contractforge_databricks/state/ddl.py +24 -0
- contractforge_databricks/state/migrations.py +146 -0
- contractforge_databricks/state/queries.py +149 -0
- contractforge_databricks/state/sql.py +116 -0
- contractforge_databricks/state/tables.py +9 -0
- contractforge_databricks/state/writer.py +83 -0
- contractforge_databricks/templates/__init__.py +15 -0
- contractforge_databricks/templates/catalog.py +205 -0
- contractforge_databricks/templates/catalog_parity.py +85 -0
- contractforge_databricks/templates/core.py +83 -0
- contractforge_databricks/templates/enrichment.py +175 -0
- contractforge_databricks/transforms/__init__.py +3 -0
- contractforge_databricks/transforms/sql.py +118 -0
- contractforge_databricks/watermark/__init__.py +6 -0
- contractforge_databricks/watermark/sql.py +91 -0
- contractforge_databricks/write_modes/__init__.py +20 -0
- contractforge_databricks/write_modes/registry.py +44 -0
- contractforge_databricks/write_modes/sql.py +33 -0
- contractforge_databricks/write_modes/strategy.py +192 -0
- contractforge_databricks-0.1.0.dist-info/METADATA +34 -0
- contractforge_databricks-0.1.0.dist-info/RECORD +220 -0
- contractforge_databricks-0.1.0.dist-info/WHEEL +4 -0
- contractforge_databricks-0.1.0.dist-info/entry_points.txt +2 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"""Databricks write strategy selection.
|
|
2
|
+
|
|
3
|
+
This module is the single decision point for choosing Databricks-native
|
|
4
|
+
features versus a ContractForge-compatible algorithm.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from typing import Literal
|
|
10
|
+
|
|
11
|
+
from contractforge_core.execution import WriteStrategy
|
|
12
|
+
from contractforge_core.semantic import SemanticContract
|
|
13
|
+
from contractforge_databricks.capabilities.models import DatabricksCapabilities
|
|
14
|
+
from contractforge_databricks.contract_extensions import databricks_extensions
|
|
15
|
+
from contractforge_databricks.parity import scenarios_for_engine, scenarios_for_mode
|
|
16
|
+
from contractforge_databricks.write_modes.registry import get_write_mode
|
|
17
|
+
|
|
18
|
+
StrategyKind = Literal["native_databricks", "contractforge_algorithm", "unsupported"]
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def choose_write_strategy(
|
|
22
|
+
contract: SemanticContract,
|
|
23
|
+
capabilities: DatabricksCapabilities,
|
|
24
|
+
) -> WriteStrategy:
|
|
25
|
+
requested = _requested_engine(contract)
|
|
26
|
+
if requested:
|
|
27
|
+
explicit = _explicit_strategy(contract, capabilities, requested)
|
|
28
|
+
if explicit is not None:
|
|
29
|
+
return explicit
|
|
30
|
+
mode = contract.write.mode
|
|
31
|
+
|
|
32
|
+
if mode == "scd0_append":
|
|
33
|
+
return _delta_strategy(capabilities, engine="delta_append", reason="Delta append is the native Databricks path.")
|
|
34
|
+
if mode == "scd0_overwrite":
|
|
35
|
+
return _delta_strategy(
|
|
36
|
+
capabilities,
|
|
37
|
+
engine="delta_overwrite",
|
|
38
|
+
reason="Delta overwrite is the native Databricks path when replacement scope is explicit.",
|
|
39
|
+
)
|
|
40
|
+
if mode == "scd1_upsert":
|
|
41
|
+
if capabilities.supports("sql_merge"):
|
|
42
|
+
scenario_count = len(scenarios_for_engine("databricks_sql_merge"))
|
|
43
|
+
return WriteStrategy(
|
|
44
|
+
"native_databricks",
|
|
45
|
+
"databricks_sql_merge",
|
|
46
|
+
f"Databricks SQL MERGE has {scenario_count} documented SCD1 parity scenarios.",
|
|
47
|
+
)
|
|
48
|
+
return WriteStrategy("unsupported", "databricks_sql_merge", "SCD1 requires Delta MERGE.", blockers=("sql_merge",))
|
|
49
|
+
if mode == "scd1_hash_diff":
|
|
50
|
+
if capabilities.supports("delta_tables"):
|
|
51
|
+
return WriteStrategy(
|
|
52
|
+
"contractforge_algorithm",
|
|
53
|
+
"core_managed_hash_diff_delta",
|
|
54
|
+
"Databricks has no single native hash-diff write mode; use the ContractForge algorithm over Delta.",
|
|
55
|
+
)
|
|
56
|
+
return WriteStrategy("unsupported", "core_managed_hash_diff_delta", "Hash diff requires Delta table support.", blockers=("delta_tables",))
|
|
57
|
+
if mode == "scd2_historical":
|
|
58
|
+
if capabilities.status("lakeflow_auto_cdc") == "supported":
|
|
59
|
+
scenario_count = len(scenarios_for_mode("scd2_historical"))
|
|
60
|
+
return WriteStrategy(
|
|
61
|
+
"native_databricks",
|
|
62
|
+
"lakeflow_auto_cdc",
|
|
63
|
+
f"Lakeflow AUTO CDC has {scenario_count} documented SCD2 review scenarios.",
|
|
64
|
+
warnings=("requires Lakeflow compatibility validation",),
|
|
65
|
+
)
|
|
66
|
+
if capabilities.supports("sql_merge"):
|
|
67
|
+
return WriteStrategy(
|
|
68
|
+
"contractforge_algorithm",
|
|
69
|
+
"core_managed_scd2_delta_merge",
|
|
70
|
+
"Use ContractForge SCD2 Delta MERGE algorithm because Lakeflow equivalence is not proven.",
|
|
71
|
+
)
|
|
72
|
+
return WriteStrategy("unsupported", "core_managed_scd2_delta_merge", "SCD2 requires Delta MERGE.", blockers=("sql_merge",))
|
|
73
|
+
if mode == "snapshot_soft_delete":
|
|
74
|
+
if capabilities.supports("snapshot_soft_delete_merge"):
|
|
75
|
+
return WriteStrategy(
|
|
76
|
+
"contractforge_algorithm",
|
|
77
|
+
"core_managed_snapshot_soft_delete_delta_merge",
|
|
78
|
+
"Use ContractForge soft-delete algorithm to avoid Lakeflow hard-delete semantic mismatch.",
|
|
79
|
+
)
|
|
80
|
+
return WriteStrategy(
|
|
81
|
+
"unsupported",
|
|
82
|
+
"core_managed_snapshot_soft_delete_delta_merge",
|
|
83
|
+
"Snapshot soft delete requires Delta MERGE with NOT MATCHED BY SOURCE.",
|
|
84
|
+
blockers=("snapshot_soft_delete_merge",),
|
|
85
|
+
)
|
|
86
|
+
if mode.startswith("custom:") and get_write_mode(mode):
|
|
87
|
+
return WriteStrategy(
|
|
88
|
+
"contractforge_algorithm",
|
|
89
|
+
mode,
|
|
90
|
+
"Adapter-owned custom write mode registered for Databricks runtime execution.",
|
|
91
|
+
warnings=("custom write modes are not portable core semantics",),
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
return WriteStrategy("unsupported", "unknown", f"Unsupported write mode: {mode}", blockers=("write_mode",))
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def _delta_strategy(capabilities: DatabricksCapabilities, *, engine: str, reason: str) -> WriteStrategy:
|
|
98
|
+
if capabilities.supports("delta_tables"):
|
|
99
|
+
return WriteStrategy("native_databricks", engine, reason)
|
|
100
|
+
return WriteStrategy("unsupported", engine, "Delta table support is required.", blockers=("delta_tables",))
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def _explicit_strategy(
|
|
104
|
+
contract: SemanticContract,
|
|
105
|
+
capabilities: DatabricksCapabilities,
|
|
106
|
+
requested: str,
|
|
107
|
+
) -> WriteStrategy | None:
|
|
108
|
+
fallback_policy = _fallback_policy(contract)
|
|
109
|
+
normalized = _normalize_engine(requested)
|
|
110
|
+
if normalized in {"auto", "delta", "core_managed"}:
|
|
111
|
+
return None
|
|
112
|
+
if normalized == "databricks_sql_merge":
|
|
113
|
+
if contract.write.mode == "scd1_upsert" and capabilities.supports("sql_merge"):
|
|
114
|
+
return WriteStrategy(
|
|
115
|
+
"native_databricks",
|
|
116
|
+
"databricks_sql_merge",
|
|
117
|
+
"databricks_sql_merge was explicitly requested and capability evidence supports Delta MERGE.",
|
|
118
|
+
)
|
|
119
|
+
return _fallback_or_unsupported(
|
|
120
|
+
contract,
|
|
121
|
+
fallback_policy,
|
|
122
|
+
requested_engine="databricks_sql_merge",
|
|
123
|
+
fallback_engine="core_managed_scd2_delta_merge" if contract.write.mode == "scd2_historical" else "core_managed_delta",
|
|
124
|
+
blocker="databricks_sql_merge requires SCD1 upsert with Delta MERGE capability.",
|
|
125
|
+
)
|
|
126
|
+
if normalized == "lakeflow_auto_cdc":
|
|
127
|
+
if contract.write.mode in {"scd1_upsert", "scd2_historical"} and capabilities.status("lakeflow_auto_cdc") == "supported":
|
|
128
|
+
return WriteStrategy(
|
|
129
|
+
"native_databricks",
|
|
130
|
+
"lakeflow_auto_cdc",
|
|
131
|
+
"lakeflow_auto_cdc was explicitly requested and capability evidence reports support.",
|
|
132
|
+
warnings=("requires Lakeflow compatibility validation",),
|
|
133
|
+
)
|
|
134
|
+
fallback_engine = "core_managed_scd2_delta_merge" if contract.write.mode == "scd2_historical" else "databricks_sql_merge"
|
|
135
|
+
return _fallback_or_unsupported(
|
|
136
|
+
contract,
|
|
137
|
+
fallback_policy,
|
|
138
|
+
requested_engine="lakeflow_auto_cdc",
|
|
139
|
+
fallback_engine=fallback_engine,
|
|
140
|
+
blocker="lakeflow_auto_cdc requires supported Lakeflow capability evidence and SCD1/SCD2 CDC semantics.",
|
|
141
|
+
)
|
|
142
|
+
return WriteStrategy(
|
|
143
|
+
"unsupported",
|
|
144
|
+
normalized,
|
|
145
|
+
f"Unknown Databricks write engine requested: {requested}",
|
|
146
|
+
blockers=("write_engine",),
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
def _fallback_or_unsupported(
|
|
151
|
+
contract: SemanticContract,
|
|
152
|
+
fallback_policy: str,
|
|
153
|
+
*,
|
|
154
|
+
requested_engine: str,
|
|
155
|
+
fallback_engine: str,
|
|
156
|
+
blocker: str,
|
|
157
|
+
) -> WriteStrategy:
|
|
158
|
+
if fallback_policy in {"fallback_to_core", "preview_only"}:
|
|
159
|
+
return WriteStrategy(
|
|
160
|
+
"contractforge_algorithm",
|
|
161
|
+
fallback_engine,
|
|
162
|
+
f"{requested_engine} was requested, but the adapter selected a ContractForge-compatible fallback.",
|
|
163
|
+
blockers=(blocker,),
|
|
164
|
+
warnings=(f"fallback_policy={fallback_policy}",),
|
|
165
|
+
)
|
|
166
|
+
return WriteStrategy(
|
|
167
|
+
"unsupported",
|
|
168
|
+
requested_engine,
|
|
169
|
+
f"{requested_engine} was requested with fallback_policy=fail, but it cannot be selected safely for {contract.write.mode}.",
|
|
170
|
+
blockers=(blocker,),
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def _requested_engine(contract: SemanticContract) -> str | None:
|
|
175
|
+
write_engine = databricks_extensions(contract).get("write_engine")
|
|
176
|
+
if isinstance(write_engine, dict):
|
|
177
|
+
return str(write_engine.get("requested") or write_engine.get("engine") or "").strip() or None
|
|
178
|
+
return str(write_engine).strip() if write_engine else None
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def _fallback_policy(contract: SemanticContract) -> str:
|
|
182
|
+
write_engine = databricks_extensions(contract).get("write_engine")
|
|
183
|
+
if isinstance(write_engine, dict):
|
|
184
|
+
return str(write_engine.get("fallback_policy") or "fail")
|
|
185
|
+
return "fail"
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def _normalize_engine(value: str) -> str:
|
|
189
|
+
normalized = value.strip().lower().replace("databricks_lakeflow_auto_cdc", "lakeflow_auto_cdc")
|
|
190
|
+
if normalized == "lakeflow":
|
|
191
|
+
return "lakeflow_auto_cdc"
|
|
192
|
+
return normalized
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: contractforge-databricks
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Databricks adapter for ContractForge Core.
|
|
5
|
+
Project-URL: Homepage, https://github.com/marquesantero/contractforge-core/tree/main/adapters/databricks
|
|
6
|
+
Project-URL: Documentation, https://marquesantero.github.io/contractforge-core/docs/adapters/databricks
|
|
7
|
+
Project-URL: Repository, https://github.com/marquesantero/contractforge-core
|
|
8
|
+
Project-URL: Issues, https://github.com/marquesantero/contractforge-core/issues
|
|
9
|
+
Project-URL: Changelog, https://github.com/marquesantero/contractforge-core/blob/main/adapters/databricks/CHANGELOG.md
|
|
10
|
+
Author: ContractForge contributors
|
|
11
|
+
License: MIT
|
|
12
|
+
Keywords: contractforge,data-contracts,databricks,ingestion,lakehouse
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Topic :: Database
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
23
|
+
Requires-Python: >=3.10
|
|
24
|
+
Requires-Dist: contractforge-core<0.2,>=0.1
|
|
25
|
+
Provides-Extra: dev
|
|
26
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
|
|
29
|
+
# ContractForge Databricks Adapter
|
|
30
|
+
|
|
31
|
+
Databricks adapter for ContractForge.
|
|
32
|
+
|
|
33
|
+
This package depends on `contractforge-core` and translates platform-neutral
|
|
34
|
+
ingestion contracts into Databricks-native execution behavior and artifacts.
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
contractforge_databricks/__init__.py,sha256=IBDz93bmWk85InisK15BYWKKcqvCm6xmV85cDEgV8ww,6165
|
|
2
|
+
contractforge_databricks/adapter.py,sha256=ydt3OEfq6B0mosDQ3gSvtL4CG2VBBwQ9y31hWbXu5bQ,3014
|
|
3
|
+
contractforge_databricks/api.py,sha256=aHX_pQE7izsCRMWSvM-5sdjiPt6_FFcSyRsgWoK12ng,2324
|
|
4
|
+
contractforge_databricks/cli.py,sha256=BQnAOyNvsVMi4H953m8aWG_zR0TQFBrb7_IuvaFpTV0,8305
|
|
5
|
+
contractforge_databricks/cli_deploy.py,sha256=iepf8lnM0qvNOxi7h0KAzBB7rMF3TgTG0PGleDvTcAM,3371
|
|
6
|
+
contractforge_databricks/cli_governance.py,sha256=hCwCe76ozXkolnr_cD2Z4szmp7JrWrqX_IVzWJdgy9M,5747
|
|
7
|
+
contractforge_databricks/cli_io.py,sha256=qd3MSINTOIAHB3CRoHDn4UqrnTkVUk5RXLMkKwGtwW4,2882
|
|
8
|
+
contractforge_databricks/cli_maintenance.py,sha256=3mLrOwYK_gimNqEztV_gCZ-VwdgnszkGVmVDGouMP7E,3019
|
|
9
|
+
contractforge_databricks/coercion.py,sha256=htcs7qXuQbPFBHQYjc6F754QaEhZPnqWmtwRD7JBays,1017
|
|
10
|
+
contractforge_databricks/contract_extensions.py,sha256=FOKXcETucaq5YfRpDC1hfctdKA27fRNm3V0T357gbes,2033
|
|
11
|
+
contractforge_databricks/environment.py,sha256=_UXBVzCcB5kJlWZxt4yDfcd25IZhUukwzF9ZEPW9Fgk,2060
|
|
12
|
+
contractforge_databricks/results.py,sha256=rArZUpIQIWqptds14axUQGUiwVobJap-esSFK18ivew,351
|
|
13
|
+
contractforge_databricks/annotations/__init__.py,sha256=P93imE6Wy4RJfeYNrFc-KH0aVS_3o0Owpws3HX-yJ0c,419
|
|
14
|
+
contractforge_databricks/annotations/application.py,sha256=T_gejrnUH_XpsUy3laMUKKE1LjLtPmE4i4Tru304lkM,1957
|
|
15
|
+
contractforge_databricks/annotations/audit.py,sha256=AKzlj2vIvXS4qpV0lLNdcg9VKqyG3tkS0lueZp1GDpo,1965
|
|
16
|
+
contractforge_databricks/annotations/sql.py,sha256=uBcYZ1qX24UfF5Q_8FyDk8WbUlQb-sFNSnVW8eiljWs,4887
|
|
17
|
+
contractforge_databricks/bundles/__init__.py,sha256=nPLM-V0RN0KaUVoMSVjpBUFS_bOjZqywNAS3QAV0StA,390
|
|
18
|
+
contractforge_databricks/bundles/assets.py,sha256=wx7n3YNV0pbqmT9V6VER8hMq1a2IjwtaweUKtlDkGJ0,1286
|
|
19
|
+
contractforge_databricks/bundles/project.py,sha256=q07RIH5UIfEM8VSbjM6RrW9GHF3QT8dXAdqvKG9NMcA,8305
|
|
20
|
+
contractforge_databricks/bundles/project_config.py,sha256=KuGSF5CbjzmJdEBId_zI1-0LN51P8FAtcXjTUsGgh7o,4984
|
|
21
|
+
contractforge_databricks/capabilities/__init__.py,sha256=th7VMtILZ_obA8lT4-NkBbVcDsMMfk7QfkeK9xX4xhY,571
|
|
22
|
+
contractforge_databricks/capabilities/builders.py,sha256=_9VgsHGA2a_5nY3ZbPDgZ0IT3F-jCXvqMO3qnkT4Gp8,1546
|
|
23
|
+
contractforge_databricks/capabilities/evaluate.py,sha256=WcRbwBOJ7YdqsMNr4dDI2qWaketlYDGevCX-dxrxG_4,7998
|
|
24
|
+
contractforge_databricks/capabilities/mapping.py,sha256=1n7I5m5am5ts0HyBgh7DW7bgquinwczuYrnHxdbaf1k,1879
|
|
25
|
+
contractforge_databricks/capabilities/models.py,sha256=lnB_gnJshZgsaEA6xR0Xd0yLWDeD3qpyYHfKCjM1vQo,1529
|
|
26
|
+
contractforge_databricks/capabilities/runtime.py,sha256=dTZg2YD02ZgtR7k2IubXckA5GomxQoWKjlfberct4eU,4327
|
|
27
|
+
contractforge_databricks/capabilities/uc.py,sha256=seC_SlI4xzFv6MyTTuqflN6Q857giBZXkSKBTWDCJhI,1640
|
|
28
|
+
contractforge_databricks/cost/__init__.py,sha256=cy2T3DdpqW9ydnAbxLYwVhZexcvPSt5NFVfLxHo8h54,427
|
|
29
|
+
contractforge_databricks/cost/model.py,sha256=YICB4DEVCaT8ExqYoIrdvozyzku-xRNiGgShNMeTxX0,582
|
|
30
|
+
contractforge_databricks/cost/report.py,sha256=8EtktHhKXRPY1dyk6QIWRSeYpKfr8Gjhs9xLFkSnK9Y,2082
|
|
31
|
+
contractforge_databricks/cost/sql.py,sha256=ztIjkzAK0yyICVO8GC9zt47dGNEiDwcFvQsTPR8XeWs,5692
|
|
32
|
+
contractforge_databricks/dashboards/__init__.py,sha256=U8SghzxJSCmsLqXnK6UGQdw8RjVa21s8OHLe07yOLu4,408
|
|
33
|
+
contractforge_databricks/dashboards/control_tables.py,sha256=HJsYWZm3cTFc9hVCxIsGSvD-nD0ajHTGV5x4ki-6bGw,12615
|
|
34
|
+
contractforge_databricks/diagnostics/__init__.py,sha256=RWZ9Pp3BAMp7LLuECLa5J7TG3YJqcn3d5tcjXkTXBxs,249
|
|
35
|
+
contractforge_databricks/diagnostics/explain.py,sha256=m2_SI52975_4gigUTD67yk1kCBDbpBRDrIuhqXYQ6Bg,1564
|
|
36
|
+
contractforge_databricks/evidence/__init__.py,sha256=XhX2Y7pUdJ3VOE19iWb7_Y_4ZTbc1DSp4xmFFmUE9RA,3289
|
|
37
|
+
contractforge_databricks/evidence/ddl.py,sha256=hGgvTp-4cDgOrii3nHn7CGpLyQCUzqnafoU4D2gtwgc,1350
|
|
38
|
+
contractforge_databricks/evidence/governance_log.py,sha256=yKYn-rQHMuuWhMhGP2UlFNm5en1PbZsx7vNnaq_3ukg,6860
|
|
39
|
+
contractforge_databricks/evidence/helpers.py,sha256=sFsHTFbsAK9mJuwj2yKavs8rKWTTxAVvPcpM3UluWbc,902
|
|
40
|
+
contractforge_databricks/evidence/ops_log.py,sha256=kbrhOrd1_4z-UV3RIple0Xff68exoko8rlqC0d9hrYM,7664
|
|
41
|
+
contractforge_databricks/evidence/records.py,sha256=zazyYYTAjmM8NMr_nCEVtKFkZXFIqQnUReSmlgot_N0,711
|
|
42
|
+
contractforge_databricks/evidence/run_log.py,sha256=0jDsnZC3G8TGkYEyLIoZJ6IoZeKSmWz7yqm8s1VHs5E,2429
|
|
43
|
+
contractforge_databricks/evidence/schemas.py,sha256=kY78Zfv7WZ6miXUC0Anx9sad11vFFr6tEsPBzK-Nd0Q,251
|
|
44
|
+
contractforge_databricks/evidence/sql.py,sha256=6xQLT7WNUEjiXWH7pZJbhyQAm8PBoWxWuYCLGU6fBAU,6014
|
|
45
|
+
contractforge_databricks/evidence/tables.py,sha256=5s5s4x8Q2fZznKqgBaIswrM3GV6TSZ8Jd0G7E6oCrOg,720
|
|
46
|
+
contractforge_databricks/evidence/writer.py,sha256=md-O-jnKCVAndER4-dv_gmmwlL4diqudub7PV1KHb78,5122
|
|
47
|
+
contractforge_databricks/execution/__init__.py,sha256=px80T1naSmVV07HtnkQC691rNIKhXGu9zsTj5epprfw,2464
|
|
48
|
+
contractforge_databricks/execution/delta_basic.py,sha256=xGK37_AI7HeJtE_5EGe3HjRQ-Nml-3FUC7uf68k_XMU,1944
|
|
49
|
+
contractforge_databricks/execution/hash_diff.py,sha256=dUp_WOQNgwObWhx45BLsPf9Ym1XgJb1pgCN9h1Iz86A,4697
|
|
50
|
+
contractforge_databricks/execution/hash_diff_latest.py,sha256=BEzy21RL_zuCpekKn_Nohr86s2NvjDs2GKwAPcTvo70,5209
|
|
51
|
+
contractforge_databricks/execution/replace_partitions.py,sha256=lncWkO7efi4ycJg3al5tmYdVQdeCCAeYIWAoRJN_sA0,1512
|
|
52
|
+
contractforge_databricks/execution/results.py,sha256=cPFn4oBd3IW4W_AHsiv6eSmuCJCcWBx8ggmjT27tftk,201
|
|
53
|
+
contractforge_databricks/execution/retry.py,sha256=Sm33yIsl-y-DZi3rCP67S06hgXqrOlfRj_71r8D5U0g,1047
|
|
54
|
+
contractforge_databricks/execution/scd2.py,sha256=sxNv640qUGrIcrEztdVzRHXvatokBAmMoAIpOF-gvLs,9131
|
|
55
|
+
contractforge_databricks/execution/scd2_deletes.py,sha256=ZKw6bTQZCACNBo7zmt439OhcQvirpptNTAjQic8a3RU,3084
|
|
56
|
+
contractforge_databricks/execution/scd2_late.py,sha256=BFyfVnboHETXzFJUeLBxzi3EVYZi7wLol6cWOOTOy7M,1123
|
|
57
|
+
contractforge_databricks/execution/snapshot.py,sha256=TLzeWyJ_usNB5bD1RTYbLd3TEAPw2v6idjqRUCqyur8,3157
|
|
58
|
+
contractforge_databricks/execution/sql_merge.py,sha256=-4oR6CCNvLARyz5WBv9_1u2HQQVku8_kIcN1vqIrCvw,3040
|
|
59
|
+
contractforge_databricks/execution/tables.py,sha256=80xPXUttwlEYomfti-3u_WdfhKcIQR6GqxDSFIoRn24,4162
|
|
60
|
+
contractforge_databricks/execution/windows.py,sha256=u2-PUu7zVHywkcbY0fpWFYcAP3SP3NpvyNMLUBrzURY,1666
|
|
61
|
+
contractforge_databricks/governance/__init__.py,sha256=VCd5W6D0zzf82xvZLlSapqS3Too3OzNM2UOSpYzaGpA,1020
|
|
62
|
+
contractforge_databricks/governance/access.py,sha256=80VKn7vIc5x3P7v3eQtQVsD0_Riyeqe_UVJMQfySTP8,7543
|
|
63
|
+
contractforge_databricks/governance/application.py,sha256=d3LTEm5jEnSuKDNSkv0kVeGCw__rePbXR3HE3venZjA,3886
|
|
64
|
+
contractforge_databricks/governance/drift.py,sha256=iDaHYALN28EOv3S79B5vzD4kNmvO8dyhjRdgs7ZcQmY,1698
|
|
65
|
+
contractforge_databricks/governance/runtime.py,sha256=uyHy791jKJSAl0ZbRDWxd5_0-F8Fk-JK0ozi5UTpSJA,2642
|
|
66
|
+
contractforge_databricks/governance/sql.py,sha256=MLDtywG_Cie9Kss3TAcjuZdyA_ttO2lAFIuT045MCPY,1178
|
|
67
|
+
contractforge_databricks/governance/validation.py,sha256=n0qNjKLg5ydw1bWR_WUMd7tSm_F0VxCbLVmUqapMenc,5712
|
|
68
|
+
contractforge_databricks/lakeflow/__init__.py,sha256=UyFMiBFPxLsbKOor6OKZ4kmsoe0AOdI2xlI44XsiXGk,595
|
|
69
|
+
contractforge_databricks/lakeflow/compatibility.py,sha256=-YrApSsC1MtkiuDjvlqlkEWC1fH0wxxArdZcT0I7TyE,7222
|
|
70
|
+
contractforge_databricks/lakeflow/rendering.py,sha256=sEdMyCc7-vE6xsac5CIAj_rr-RT2YkXxW3q7f6EGkBQ,5398
|
|
71
|
+
contractforge_databricks/lineage/__init__.py,sha256=e7hqyWLv3I2ehX3V-f-H9AgmHDI99PPsDD8snGChHRI,249
|
|
72
|
+
contractforge_databricks/lineage/openlineage.py,sha256=uoYHFPvkq-R6F5s6zsxhMshfQTasx9DY5pgxBVUAc90,6654
|
|
73
|
+
contractforge_databricks/maintenance/__init__.py,sha256=6qlBnj3DOA4ihs905E0ea9ux7SE0DwsV0re_hCDsJL4,737
|
|
74
|
+
contractforge_databricks/maintenance/retention.py,sha256=sOpPb0WA5a31aJdtUp4aUZPmSgnQzBztc2m3cQZp5-Q,4125
|
|
75
|
+
contractforge_databricks/maintenance/sql.py,sha256=Xk1YNya-ACr88Pl4WawA5UeCCNKcfiZNnzraOgJ6Asw,2583
|
|
76
|
+
contractforge_databricks/metrics/__init__.py,sha256=aU4p9byHQXI8jc0KfIA4IFrE_vU-zx42FrTtIV054Ks,519
|
|
77
|
+
contractforge_databricks/metrics/history.py,sha256=2hZSRzeinEmKlqI8SBD8lyfWlfHTnNI7MJY6gS3jgCY,610
|
|
78
|
+
contractforge_databricks/metrics/write.py,sha256=kkxHt6O5mydRXwUJxwxb0I3ZVWoE1HqIEYDsD-tOqR0,2453
|
|
79
|
+
contractforge_databricks/operations/__init__.py,sha256=j-hww1P2spKN8yQoIBWwAjbZDnlNA9IXHMx4YW1dE6k,292
|
|
80
|
+
contractforge_databricks/operations/application.py,sha256=zMoXAoQ6sUEpQwEHRu7SD6R4UwpFeOe3JPjMZKWw-gc,1452
|
|
81
|
+
contractforge_databricks/operations/sql.py,sha256=r6PQ4XlvLSNnKxsFGz8bfSlLcPSJWZij6fDriNWIoUo,3419
|
|
82
|
+
contractforge_databricks/parity/__init__.py,sha256=wdRQLNF3i9eviLlRJM90tcAqao4_BrkkXRiZgsuCNGw,562
|
|
83
|
+
contractforge_databricks/parity/catalog.py,sha256=fXAyts3GNoa1JWBJhuMVSbRi9pSRI82RMO3rEglBZgc,2151
|
|
84
|
+
contractforge_databricks/parity/models.py,sha256=DFINqkqzBVPWgBp8grrybagvLuAlezFgL9WnAjkdDkw,308
|
|
85
|
+
contractforge_databricks/parity/scenarios.py,sha256=vgApyAd97oHc8yfqWCXOA10ifsxnUAPc-Mo8BbMIBAo,6223
|
|
86
|
+
contractforge_databricks/partitioning/__init__.py,sha256=AOGxH_zaLA-XL49dfEDmptI8if39VEWUG2B1YSdUk08,182
|
|
87
|
+
contractforge_databricks/partitioning/predicates.py,sha256=7I0O7Tq8DO0WkSGBNO7c3tMGhIltVuFEl86PfvTMNB8,1060
|
|
88
|
+
contractforge_databricks/preparation/__init__.py,sha256=21AOaex5JOd8eqjPbIgiyDnhWO3nlkUKjvCN_zuGwHk,1437
|
|
89
|
+
contractforge_databricks/preparation/deduplicate.py,sha256=L70TCCDj9OsVksERU-DvLoWaEsJu6DSOYM3sY4gWdFc,3335
|
|
90
|
+
contractforge_databricks/preparation/encoding.py,sha256=Tr28jE3C6Ch7jBxyOYgg8u4ZqM7m-slJQkV_o1KdGU8,1281
|
|
91
|
+
contractforge_databricks/preparation/hashing.py,sha256=8WtGEnFBnPJGM3Hbh1Kx1ZSA4RHalDqS9495TSXZhZ8,743
|
|
92
|
+
contractforge_databricks/preparation/pyspark.py,sha256=KH16EGWQdzSoHloPWH6wo_83Dkc_saqmiZJZ3-VjtsM,7331
|
|
93
|
+
contractforge_databricks/preparation/pyspark_staging.py,sha256=beUwXo1usFo7tlHcW3QcrhyWvcmsp71dpsV0W4m2Bco,3303
|
|
94
|
+
contractforge_databricks/preparation/shape.py,sha256=LsIZF9f5-8g69Qcw2uc3VNIVgmA_gD3sXnMGroFU-OI,8468
|
|
95
|
+
contractforge_databricks/preparation/shape_validation.py,sha256=FgYpOhnA4nU7_WF3ntCxMFM3s0jnaWJQWS9iPV-jQko,3425
|
|
96
|
+
contractforge_databricks/preparation/staging.py,sha256=n_Ye9l8vkMKzMPuhEhKwinLzEHQeM7YfCL2Rr2onKFE,424
|
|
97
|
+
contractforge_databricks/preparation/zip_arrays.py,sha256=CG8qLtqeu50M9ocCQmH7PJ8GUCFH5Rt8XoYHEpr43kI,2128
|
|
98
|
+
contractforge_databricks/presets/__init__.py,sha256=aFZ44Kev3zSdDwfUeVX-MAQn6_gkOf6nY2nhBkJS65U,217
|
|
99
|
+
contractforge_databricks/presets/base.py,sha256=qVLZsnEuv2UxwwxGTaOD9AxDYG8nz36BMlivcy76Otg,497
|
|
100
|
+
contractforge_databricks/presets/bronze.py,sha256=CJO8rDEbxDitw49C8cATYE1Bepf2PHEAlSfj6puxplE,2162
|
|
101
|
+
contractforge_databricks/presets/catalog.py,sha256=MKU48nrNvRbzttqWmPXv_6QsCs4UnMDebnuMLzZ-gWQ,873
|
|
102
|
+
contractforge_databricks/presets/core.py,sha256=fz2tNXktAKWdRAXJQpmQDmUQhzrEYyD2qQYlbek-LJw,4691
|
|
103
|
+
contractforge_databricks/presets/gold.py,sha256=Zj5t3Gp6s3o6cj-RcgH3MEq3sPqpSkFoCBK_e598guU,2153
|
|
104
|
+
contractforge_databricks/presets/modifiers.py,sha256=6lmCufzuruaNH_sqH7o4IrboN04gKsUTcV1rVSgpOJQ,1855
|
|
105
|
+
contractforge_databricks/presets/runtime.py,sha256=H-evgEBx3cAGaqOauJ9qoxqwoFwDwEzOiDDS5dAdUdU,841
|
|
106
|
+
contractforge_databricks/presets/silver.py,sha256=6YpPS-oydNQN8YzL_-2-rYv1Jtr5WRfrCgIXQSHfUzY,3702
|
|
107
|
+
contractforge_databricks/presets/write_engine.py,sha256=5Be0cNqI7RgOOcBIbutiLdKBysBAl0jYQFiRqQhZ8NY,1937
|
|
108
|
+
contractforge_databricks/quality/__init__.py,sha256=MTSgV8rr5hg8LwS3N0Hr43upZtceFBb1g366AeITuEo,1258
|
|
109
|
+
contractforge_databricks/quality/evaluation.py,sha256=gx-vaLqVyL41mf-oocMGdog2q-0HUZt-lk_f1xnktBU,8702
|
|
110
|
+
contractforge_databricks/quality/persistence.py,sha256=TM6Oqfo6jsfDMLpVIxHTATWVfPc29KIelub_4HXdMrA,2659
|
|
111
|
+
contractforge_databricks/quality/registry.py,sha256=-ndMFLl0eNrkx6-TCs6SE8eMblz4rueAWDfPhUK1LXg,5524
|
|
112
|
+
contractforge_databricks/quality/results.py,sha256=QJ8O3REE4deLAVUM2ptmixnzUK9JXhbgY10nDxGgvJI,361
|
|
113
|
+
contractforge_databricks/quality/sql.py,sha256=h0jd3BYjqVM642izVZNFI9E1t9mTyJo3QwTaxQ1vMQc,4948
|
|
114
|
+
contractforge_databricks/rendering/__init__.py,sha256=w_D-ozHQWMP9_xuf5VcO_lPJ3FzjgKx2fltnl8SiJ3Y,305
|
|
115
|
+
contractforge_databricks/rendering/bundle.py,sha256=l5ZIJYvaJDx9JrP_M4-dyV_41tg9lnMk1153dUSNiEs,5816
|
|
116
|
+
contractforge_databricks/rendering/markdown.py,sha256=FjF5K17UsVcah2AIbMbaXq5xEvlmENN4ZJrShhk-B98,2025
|
|
117
|
+
contractforge_databricks/rendering/names.py,sha256=KgAQ0fYhlr5jhmXJcSVE33tq3FJOrLy5oBOo8tgSpeo,1990
|
|
118
|
+
contractforge_databricks/runtime/__init__.py,sha256=pT3LWgyYMhfhmRQVgo11keoKh86cOvYFqDg-OGMH0XU,3261
|
|
119
|
+
contractforge_databricks/runtime/available_now.py,sha256=fy3P3zmFLeDLexrYj4Z6PNLvmshJE4FCJa-1NugaJBk,5806
|
|
120
|
+
contractforge_databricks/runtime/bundles.py,sha256=M8KahI3qfq2sZywD9Lgiz6EQx5iZdWIRZ26H3kbZYow,8571
|
|
121
|
+
contractforge_databricks/runtime/cache.py,sha256=0jkW3RgbrU8H1tACIzlCDUzc2NSw5LQfkvIbXoHv0o0,771
|
|
122
|
+
contractforge_databricks/runtime/control_tables.py,sha256=wbrXLVcbL41dWILJz6WJ8F9Xt9CeCDKp9sMSY3Fv14g,883
|
|
123
|
+
contractforge_databricks/runtime/deploy.py,sha256=HXivnw7iINDHhHClRpQLji8k41IpxENQlSh9hTGWEAo,7212
|
|
124
|
+
contractforge_databricks/runtime/detection.py,sha256=K-YfJ9XDe-ZOPacC2l_eb1C-swtwEBL_H_XbhwHvGF8,3671
|
|
125
|
+
contractforge_databricks/runtime/dry_run.py,sha256=Wezy00kWFs-45_6JromAuVk_DqsawCZJ80IyD61s1HM,1304
|
|
126
|
+
contractforge_databricks/runtime/errors.py,sha256=Q1ldr8D72T176vwOrRbBuEnHinuEKhCir4TTIT06-yU,1447
|
|
127
|
+
contractforge_databricks/runtime/file_selection.py,sha256=Wg3KCKNtWN5GbBxFacRkfeNwqlPFUgREMKEy4X_dew4,4143
|
|
128
|
+
contractforge_databricks/runtime/finalization.py,sha256=QBfARVaoyhpcwH6HVp-_ia-E9luMGRPpkZpY7881KME,5974
|
|
129
|
+
contractforge_databricks/runtime/governance.py,sha256=7MKPi6-9CyaNVOIBkqlDVMxDNQpHJ2RkSfALKYUED3w,1372
|
|
130
|
+
contractforge_databricks/runtime/hooks.py,sha256=-4iUvxHPeyznE4PCEZPnkN_EVT7XBZC_W7nm5oCxWLc,1654
|
|
131
|
+
contractforge_databricks/runtime/http_file.py,sha256=y4UmjjqiI4S5OFdI6jMzJiJtjmMzmtvPJ4XkG0514XY,1448
|
|
132
|
+
contractforge_databricks/runtime/http_retry.py,sha256=tqIiaTIUVv00SrXBdOVctNeOuQ2-F33TDXYS_-6O2lc,374
|
|
133
|
+
contractforge_databricks/runtime/http_safety.py,sha256=MagvTwwDWojXROCaqUnenvoc8RpVLxvqqQrL8kP_l50,282
|
|
134
|
+
contractforge_databricks/runtime/json_materialization.py,sha256=G-HtEZAHYQ0SRn5-WNCF1AKwast-JP5nEdbvDk3Ny0I,4065
|
|
135
|
+
contractforge_databricks/runtime/lineage.py,sha256=QEfDYbpWNDaC8m8X9nx99t7VHmgXrsLU1JbilkmzdVc,5232
|
|
136
|
+
contractforge_databricks/runtime/maintenance.py,sha256=zd0GibsCDXA6N9gNT9TK3ZsGLfPCpdvQc3ZB1xqrIlo,1384
|
|
137
|
+
contractforge_databricks/runtime/merge_validation.py,sha256=KwpqevjLB4oCEEAdqP7mBz44f3kHTCSNkfQbdmv2vys,4318
|
|
138
|
+
contractforge_databricks/runtime/metadata.py,sha256=EbhuDNJ4H5l5bbqPYZRDqa-2Q3W0EdRJp-w9hsyJ7Gk,803
|
|
139
|
+
contractforge_databricks/runtime/metrics.py,sha256=xy-1cR8LGgSmZcP5ubl66kWHkDsX6Ff0HxlAjfCahf4,1208
|
|
140
|
+
contractforge_databricks/runtime/models.py,sha256=8rAjtBJ935fF6-MfmnnU7qj3bREh-n0Dfsg9lHBCM-Y,985
|
|
141
|
+
contractforge_databricks/runtime/options.py,sha256=RyhwHPUYYPpbrY2R9MZkam4QutNTgzgTT9rkVUoKh5Q,1775
|
|
142
|
+
contractforge_databricks/runtime/orchestration_context.py,sha256=ZcnbPm76Wl_u9izqtpVrBKweoBItKM4cfgoDBR-WKGM,6508
|
|
143
|
+
contractforge_databricks/runtime/orchestrator.py,sha256=ohEGi4_fGRCzSyOSPWXr5pG1ynH8fe-omzSO4sgjZnk,6156
|
|
144
|
+
contractforge_databricks/runtime/partitioning.py,sha256=sbrfY_XgjgEnwUl5wfrM3a45UTUcbnIMURks8BvwpWA,4168
|
|
145
|
+
contractforge_databricks/runtime/quality_quarantine.py,sha256=CwsPPD5criVsf5vJLks49hYUhjZLDCAETZ_-km2cwnY,3345
|
|
146
|
+
contractforge_databricks/runtime/rest_api.py,sha256=mR1j0P2lxTt0OK1HwhH-7JByppJfegshoDJERkG5Mrw,1862
|
|
147
|
+
contractforge_databricks/runtime/rest_auth.py,sha256=cDK9zJS76lzy4cPieto3tOXFi2DBKIxr8EOXwgRSTb8,807
|
|
148
|
+
contractforge_databricks/runtime/rest_pagination.py,sha256=9XTg47cvFsERr6TEjUFuUO5khbwQTAK5pxpso8V2jD0,433
|
|
149
|
+
contractforge_databricks/runtime/run_payload.py,sha256=wkj177T6U3aJ-sAVsysnW72EKC5eutI6ccSJpgME0mM,8824
|
|
150
|
+
contractforge_databricks/runtime/schema.py,sha256=tEuYFvW-FzQ1OS_MG1j6lXLwJuux2cbj85E00YfFDOk,3739
|
|
151
|
+
contractforge_databricks/runtime/source_metadata.py,sha256=WnB-_1vFXhxnRBdD1ioQackRLiRkeWq1iQWrHbSorzQ,992
|
|
152
|
+
contractforge_databricks/runtime/source_registry.py,sha256=h-OG_-tL1fshySC7kLxwOwQWtZ8fE7PLztNNCdVeKIQ,1568
|
|
153
|
+
contractforge_databricks/runtime/source_schema.py,sha256=WKcyiUOkqVwrfFgo0mL1m2XeZaY8Kwmck-GLYm48pII,1059
|
|
154
|
+
contractforge_databricks/runtime/sources.py,sha256=FshGxF5PuuI56XU2CFn7hVfw4ghoJV90q4hhd6k35ZU,9259
|
|
155
|
+
contractforge_databricks/runtime/spark.py,sha256=QcS15eMwmUw_bOgdCeLLqr6U5T2n-KtoSEeqobjwqNE,6814
|
|
156
|
+
contractforge_databricks/runtime/spark_defaults.py,sha256=4TLBguTqPeHp6lXz001_GmaFG8dPACSlZgGDGVPSoyQ,1220
|
|
157
|
+
contractforge_databricks/runtime/storage_auth.py,sha256=woTfrq01F6S-BoF4HqUfQ55u_jJk9OQrG7rrmAaJiNA,6013
|
|
158
|
+
contractforge_databricks/runtime/streaming.py,sha256=YPnrP6wpE__E2H585-qal_xOMq0KzGbkdRVBMxb5NQE,5540
|
|
159
|
+
contractforge_databricks/runtime/success.py,sha256=9qrmYF6yGOTgHjcvxgi4ND1V__8DPHp1v38X3h0dEuQ,3536
|
|
160
|
+
contractforge_databricks/runtime/utils.py,sha256=8HtiJRqZOEmyTW9hevse8hHMq8FYTV5NlR_z1q-qkyo,1495
|
|
161
|
+
contractforge_databricks/runtime/watermark.py,sha256=SmPhQoqZVuZNAFbBRcwicxWsGU3ICZfHebgEtHFe-tc,2434
|
|
162
|
+
contractforge_databricks/runtime/windows.py,sha256=nXpaojWeLX3rb_TnaXNUon2NS3wnopbxKZNQM5Adhwg,7744
|
|
163
|
+
contractforge_databricks/runtime/write.py,sha256=9V0yEMylfsSwNhWnnYznZR77tPEFP65GsES7LmdEhPQ,2602
|
|
164
|
+
contractforge_databricks/runtime/write_flow.py,sha256=3jBbRNWWy5Qbma1yCo3Yq1Q_eSCWgnLyWCmGFnHVBgY,5069
|
|
165
|
+
contractforge_databricks/runtime/write_strategy.py,sha256=PZi554mmfwTNM-B1FyENca5ilOMEKfkO7m4KVqSdnKc,1689
|
|
166
|
+
contractforge_databricks/schema/__init__.py,sha256=B8kEOvobtMm2YGkkI5SpPh0CsbwQozv6J_bkTDKEDyU,585
|
|
167
|
+
contractforge_databricks/schema/diff.py,sha256=7aUk4WF-UPuMqLbL3GQQrn5VnjSUjyTTBr5eUzJsajc,313
|
|
168
|
+
contractforge_databricks/schema/policy.py,sha256=xBX3oOiUmf2NfzV3Qsw-LZnSNnCq0NrOFFOuyJOS18U,1270
|
|
169
|
+
contractforge_databricks/schema/sync.py,sha256=PQr5gk0e21foIxE__ixY8m25czgmT8MZ-7kGRkMmXnU,1080
|
|
170
|
+
contractforge_databricks/security/__init__.py,sha256=R68xU8AyDYCXv2UdBZ_EtVceXgFBZsfWtbjgOwrrk-w,714
|
|
171
|
+
contractforge_databricks/security/errors.py,sha256=Io5zfPuCRpXpVXFW1s3SYmI_XVY2fzIN2ajuT6T_kCA,216
|
|
172
|
+
contractforge_databricks/security/redaction.py,sha256=suUQGM-5AjNfhpKG_Dy5gywfsrmznnX6Vx0ADWGDoi4,200
|
|
173
|
+
contractforge_databricks/security/secrets.py,sha256=IrilZqqaw5g7AjAMV3KI8x8TXrkhsBCqH9ZoDM0f_fg,4818
|
|
174
|
+
contractforge_databricks/security/source_policy.py,sha256=HwcBYDAbS3bRUqKZZiAxRRu_-8jSX9iSFC3EMFlGsCk,631
|
|
175
|
+
contractforge_databricks/shapes/__init__.py,sha256=Ghi7_C3AKQ9waOkdZYwmpUWjWWrdNy1JBlAJskPlzlY,97
|
|
176
|
+
contractforge_databricks/shapes/sql.py,sha256=_487aHyIYvbH6lwxXQXtKCscSquJ8j0CKDyUHnfqOh0,4699
|
|
177
|
+
contractforge_databricks/sources/__init__.py,sha256=icoVbJrXGsp90HTx6RCG2LOXXF969XpkxcR9IfxbqO0,2614
|
|
178
|
+
contractforge_databricks/sources/artifacts.py,sha256=nTWIuSo1NX3OGf9FkJpIv9fMGjzf1h8j3PUO_-hA03I,4648
|
|
179
|
+
contractforge_databricks/sources/autoloader.py,sha256=iw2VzUNUzmjmlqxOAEugmF3EfUD8rZqyCc3lYjkESQQ,1593
|
|
180
|
+
contractforge_databricks/sources/bounded_streams.py,sha256=a4wdMLh4WFufHfyiQ01t_KQLO1lADzOiZ0WxI7Uaa34,1801
|
|
181
|
+
contractforge_databricks/sources/classification.py,sha256=iZPfo1bTKRnmjZeGOiTX_I2GCnqBJP4-ZsFXIHwnb0E,4156
|
|
182
|
+
contractforge_databricks/sources/delta_share.py,sha256=9ep3XsiKJMA6LQckUjqEVDd51KWUtXXqoGLbGeM07p0,760
|
|
183
|
+
contractforge_databricks/sources/files.py,sha256=AC-52Bl5eG5uYDILHv1-bcl-B0IUUlaAMW46goWELSs,1727
|
|
184
|
+
contractforge_databricks/sources/http_file.py,sha256=SjRdd9mDI_5W3rKebrPUYvKxSIgpgWfPbOYtyHBG5As,1673
|
|
185
|
+
contractforge_databricks/sources/interpret.py,sha256=2VRiBcFuDhL2Q11UppKUT6z1GmocL0KLz0oCLebRTDw,2767
|
|
186
|
+
contractforge_databricks/sources/jdbc.py,sha256=naYCm3eRKOBj5i9zSfL0RMUZdiWMltceI_MJuV9IU28,1204
|
|
187
|
+
contractforge_databricks/sources/metadata.py,sha256=GvW9HeZJQesqFi9hhCeZNlujrvFI2yTZJDNIelYDOGo,707
|
|
188
|
+
contractforge_databricks/sources/native_passthrough.py,sha256=sPaUTIg8TskQ-3OpMa5FU8O42nI7xwyHYh6KM4VWdv4,1304
|
|
189
|
+
contractforge_databricks/sources/rds_iam.py,sha256=73kwzpglj_BcRCfhqPz1MuWZVA1FCIuFArzIwUcvB8g,394
|
|
190
|
+
contractforge_databricks/sources/rds_iam_runtime.py,sha256=uOWD81i5tgUlASjPDEmfoTF8JJM90tUEXHcTke61j3w,6177
|
|
191
|
+
contractforge_databricks/sources/rest_api.py,sha256=7N35xZlr633fe6FFNUeNdYQJTNqhI3DdxE5obbx_rW4,1696
|
|
192
|
+
contractforge_databricks/sources/support.py,sha256=TfvKkLnnnaT3sOxnH13CPBc5OfB1L2KZxaEdr2BsaCg,1405
|
|
193
|
+
contractforge_databricks/sources/table_refs.py,sha256=CGcjHI11K-_AOQp6liCzi3c4aYjCYSuPiqM1hPhQ2nk,2446
|
|
194
|
+
contractforge_databricks/sql/__init__.py,sha256=jCZAT3vAMjXMsokvAvHb85Tdu3lZQBjIsg84QkaFR08,285
|
|
195
|
+
contractforge_databricks/sql/identifiers.py,sha256=O0gLR0B7ZRiRIrmv1_gCUJDix4Wexxl4mHCf57M7y3k,542
|
|
196
|
+
contractforge_databricks/sql/literals.py,sha256=vJk7JIcVT5muiclrJ1-AyZTe3c-F4p1MHZ3xa_HQskc,922
|
|
197
|
+
contractforge_databricks/state/__init__.py,sha256=hElK2Jc-0uGdc9B-YU8l9CwyX2VHI4-Vdju_0wsPDwU,1349
|
|
198
|
+
contractforge_databricks/state/ddl.py,sha256=U3dDj7oVIWVkE54HvtiDxTIz2CiZ73DEkswI-a51txU,896
|
|
199
|
+
contractforge_databricks/state/migrations.py,sha256=ETz2dtFbg20PFDLp6LqAqSJLMU62PCX_FgoPsY7B7Fg,5408
|
|
200
|
+
contractforge_databricks/state/queries.py,sha256=3cA4eBlj6tFrfjfKzj2QaXaXLXrlR7NjTd0VynmsT8o,4144
|
|
201
|
+
contractforge_databricks/state/sql.py,sha256=RGklIsahYBOwwJtdUUvj3Ww5_ocT-KCHeQUpITjNSj0,4064
|
|
202
|
+
contractforge_databricks/state/tables.py,sha256=KTwRAFBZ31391zWHWfvLlbI96xc4tVwn3eKxByCzhfo,297
|
|
203
|
+
contractforge_databricks/state/writer.py,sha256=70ITDy2oWhkMW1oJy2pjt72fvueC5da04yVSY3QVwXI,2879
|
|
204
|
+
contractforge_databricks/templates/__init__.py,sha256=-irygiOMtyloGdg-RBj35zGzwMOiR_ekwK51CPk4xJA,381
|
|
205
|
+
contractforge_databricks/templates/catalog.py,sha256=ZLdwPeAluEAc1rnCKP83mH5SMkuEXC3q_xtrZTBGpI4,10619
|
|
206
|
+
contractforge_databricks/templates/catalog_parity.py,sha256=wgMHW_KHnIlq08wDIaODI0AwpmVGv4eteadAOI6l2a0,3302
|
|
207
|
+
contractforge_databricks/templates/core.py,sha256=Cv1Gd-fs98BNgu536MmmHHYIqtXgmxzoO4lxv9Kh_Uc,3159
|
|
208
|
+
contractforge_databricks/templates/enrichment.py,sha256=ryjDRS9fwDcXXjZcUsd4j4B1HiWt7PO22AxOoFL1YuE,7536
|
|
209
|
+
contractforge_databricks/transforms/__init__.py,sha256=8VP12TYuDQuccIDkonJfG7iPdbV5UCizxDh2cpE40ak,109
|
|
210
|
+
contractforge_databricks/transforms/sql.py,sha256=ISAvVLPtNNu8vOOYrBkI5k62H4zYiiUUUQfmqgso1bc,4448
|
|
211
|
+
contractforge_databricks/watermark/__init__.py,sha256=nXEfNibeiAcAYlymy2Dp-D5UWQeJKUsPPwh9ejB8WTE,227
|
|
212
|
+
contractforge_databricks/watermark/sql.py,sha256=4SK3Y4equPovYhY0h5qyjofHGuyFwh9yEXnZCEVr7No,3285
|
|
213
|
+
contractforge_databricks/write_modes/__init__.py,sha256=6d70jEO8Z5Hbsb6V-uwJ0C5sSp8l-R6D566GyxZEE9U,598
|
|
214
|
+
contractforge_databricks/write_modes/registry.py,sha256=AkY09JH5wMMHURjeGAEE9KkifNL-DweCXkU_G7C7yIE,1483
|
|
215
|
+
contractforge_databricks/write_modes/sql.py,sha256=uMtBDZpzCcPW7ayI8CRjG9f0yr8e1FKqJFXMBSmBuus,1528
|
|
216
|
+
contractforge_databricks/write_modes/strategy.py,sha256=rxwz_6ETZhqIWN3WQtiPvTvZoty57ahqJXaQbxx3ULI,8578
|
|
217
|
+
contractforge_databricks-0.1.0.dist-info/METADATA,sha256=n8IIsJzavSSgculncELqr3e3IM8dlT4hIUgLT4AgW6A,1594
|
|
218
|
+
contractforge_databricks-0.1.0.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
|
|
219
|
+
contractforge_databricks-0.1.0.dist-info/entry_points.txt,sha256=ZivNKeOsJ9s-aHV3Y34eugAvW2t96tfRZUEa0jdH5js,79
|
|
220
|
+
contractforge_databricks-0.1.0.dist-info/RECORD,,
|