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.
Files changed (220) hide show
  1. contractforge_databricks/__init__.py +172 -0
  2. contractforge_databricks/adapter.py +69 -0
  3. contractforge_databricks/annotations/__init__.py +10 -0
  4. contractforge_databricks/annotations/application.py +52 -0
  5. contractforge_databricks/annotations/audit.py +49 -0
  6. contractforge_databricks/annotations/sql.py +142 -0
  7. contractforge_databricks/api.py +65 -0
  8. contractforge_databricks/bundles/__init__.py +9 -0
  9. contractforge_databricks/bundles/assets.py +47 -0
  10. contractforge_databricks/bundles/project.py +213 -0
  11. contractforge_databricks/bundles/project_config.py +133 -0
  12. contractforge_databricks/capabilities/__init__.py +17 -0
  13. contractforge_databricks/capabilities/builders.py +43 -0
  14. contractforge_databricks/capabilities/evaluate.py +162 -0
  15. contractforge_databricks/capabilities/mapping.py +36 -0
  16. contractforge_databricks/capabilities/models.py +44 -0
  17. contractforge_databricks/capabilities/runtime.py +111 -0
  18. contractforge_databricks/capabilities/uc.py +47 -0
  19. contractforge_databricks/cli.py +196 -0
  20. contractforge_databricks/cli_deploy.py +98 -0
  21. contractforge_databricks/cli_governance.py +142 -0
  22. contractforge_databricks/cli_io.py +91 -0
  23. contractforge_databricks/cli_maintenance.py +69 -0
  24. contractforge_databricks/coercion.py +31 -0
  25. contractforge_databricks/contract_extensions.py +70 -0
  26. contractforge_databricks/cost/__init__.py +11 -0
  27. contractforge_databricks/cost/model.py +22 -0
  28. contractforge_databricks/cost/report.py +65 -0
  29. contractforge_databricks/cost/sql.py +136 -0
  30. contractforge_databricks/dashboards/__init__.py +15 -0
  31. contractforge_databricks/dashboards/control_tables.py +150 -0
  32. contractforge_databricks/diagnostics/__init__.py +7 -0
  33. contractforge_databricks/diagnostics/explain.py +40 -0
  34. contractforge_databricks/environment.py +53 -0
  35. contractforge_databricks/evidence/__init__.py +98 -0
  36. contractforge_databricks/evidence/ddl.py +35 -0
  37. contractforge_databricks/evidence/governance_log.py +175 -0
  38. contractforge_databricks/evidence/helpers.py +29 -0
  39. contractforge_databricks/evidence/ops_log.py +210 -0
  40. contractforge_databricks/evidence/records.py +27 -0
  41. contractforge_databricks/evidence/run_log.py +74 -0
  42. contractforge_databricks/evidence/schemas.py +7 -0
  43. contractforge_databricks/evidence/sql.py +144 -0
  44. contractforge_databricks/evidence/tables.py +20 -0
  45. contractforge_databricks/evidence/writer.py +118 -0
  46. contractforge_databricks/execution/__init__.py +70 -0
  47. contractforge_databricks/execution/delta_basic.py +57 -0
  48. contractforge_databricks/execution/hash_diff.py +126 -0
  49. contractforge_databricks/execution/hash_diff_latest.py +142 -0
  50. contractforge_databricks/execution/replace_partitions.py +40 -0
  51. contractforge_databricks/execution/results.py +5 -0
  52. contractforge_databricks/execution/retry.py +36 -0
  53. contractforge_databricks/execution/scd2.py +213 -0
  54. contractforge_databricks/execution/scd2_deletes.py +65 -0
  55. contractforge_databricks/execution/scd2_late.py +30 -0
  56. contractforge_databricks/execution/snapshot.py +77 -0
  57. contractforge_databricks/execution/sql_merge.py +85 -0
  58. contractforge_databricks/execution/tables.py +98 -0
  59. contractforge_databricks/execution/windows.py +58 -0
  60. contractforge_databricks/governance/__init__.py +30 -0
  61. contractforge_databricks/governance/access.py +185 -0
  62. contractforge_databricks/governance/application.py +93 -0
  63. contractforge_databricks/governance/drift.py +49 -0
  64. contractforge_databricks/governance/runtime.py +60 -0
  65. contractforge_databricks/governance/sql.py +31 -0
  66. contractforge_databricks/governance/validation.py +135 -0
  67. contractforge_databricks/lakeflow/__init__.py +21 -0
  68. contractforge_databricks/lakeflow/compatibility.py +194 -0
  69. contractforge_databricks/lakeflow/rendering.py +175 -0
  70. contractforge_databricks/lineage/__init__.py +7 -0
  71. contractforge_databricks/lineage/openlineage.py +182 -0
  72. contractforge_databricks/maintenance/__init__.py +27 -0
  73. contractforge_databricks/maintenance/retention.py +90 -0
  74. contractforge_databricks/maintenance/sql.py +68 -0
  75. contractforge_databricks/metrics/__init__.py +19 -0
  76. contractforge_databricks/metrics/history.py +21 -0
  77. contractforge_databricks/metrics/write.py +63 -0
  78. contractforge_databricks/operations/__init__.py +4 -0
  79. contractforge_databricks/operations/application.py +38 -0
  80. contractforge_databricks/operations/sql.py +95 -0
  81. contractforge_databricks/parity/__init__.py +18 -0
  82. contractforge_databricks/parity/catalog.py +59 -0
  83. contractforge_databricks/parity/models.py +7 -0
  84. contractforge_databricks/parity/scenarios.py +111 -0
  85. contractforge_databricks/partitioning/__init__.py +3 -0
  86. contractforge_databricks/partitioning/predicates.py +28 -0
  87. contractforge_databricks/preparation/__init__.py +47 -0
  88. contractforge_databricks/preparation/deduplicate.py +87 -0
  89. contractforge_databricks/preparation/encoding.py +37 -0
  90. contractforge_databricks/preparation/hashing.py +18 -0
  91. contractforge_databricks/preparation/pyspark.py +178 -0
  92. contractforge_databricks/preparation/pyspark_staging.py +70 -0
  93. contractforge_databricks/preparation/shape.py +209 -0
  94. contractforge_databricks/preparation/shape_validation.py +94 -0
  95. contractforge_databricks/preparation/staging.py +17 -0
  96. contractforge_databricks/preparation/zip_arrays.py +51 -0
  97. contractforge_databricks/presets/__init__.py +3 -0
  98. contractforge_databricks/presets/base.py +24 -0
  99. contractforge_databricks/presets/bronze.py +57 -0
  100. contractforge_databricks/presets/catalog.py +22 -0
  101. contractforge_databricks/presets/core.py +134 -0
  102. contractforge_databricks/presets/gold.py +62 -0
  103. contractforge_databricks/presets/modifiers.py +51 -0
  104. contractforge_databricks/presets/runtime.py +22 -0
  105. contractforge_databricks/presets/silver.py +101 -0
  106. contractforge_databricks/presets/write_engine.py +57 -0
  107. contractforge_databricks/quality/__init__.py +41 -0
  108. contractforge_databricks/quality/evaluation.py +178 -0
  109. contractforge_databricks/quality/persistence.py +81 -0
  110. contractforge_databricks/quality/registry.py +134 -0
  111. contractforge_databricks/quality/results.py +17 -0
  112. contractforge_databricks/quality/sql.py +113 -0
  113. contractforge_databricks/rendering/__init__.py +11 -0
  114. contractforge_databricks/rendering/bundle.py +93 -0
  115. contractforge_databricks/rendering/markdown.py +50 -0
  116. contractforge_databricks/rendering/names.py +56 -0
  117. contractforge_databricks/results.py +15 -0
  118. contractforge_databricks/runtime/__init__.py +101 -0
  119. contractforge_databricks/runtime/available_now.py +147 -0
  120. contractforge_databricks/runtime/bundles.py +211 -0
  121. contractforge_databricks/runtime/cache.py +20 -0
  122. contractforge_databricks/runtime/control_tables.py +19 -0
  123. contractforge_databricks/runtime/deploy.py +197 -0
  124. contractforge_databricks/runtime/detection.py +114 -0
  125. contractforge_databricks/runtime/dry_run.py +46 -0
  126. contractforge_databricks/runtime/errors.py +54 -0
  127. contractforge_databricks/runtime/file_selection.py +109 -0
  128. contractforge_databricks/runtime/finalization.py +168 -0
  129. contractforge_databricks/runtime/governance.py +37 -0
  130. contractforge_databricks/runtime/hooks.py +45 -0
  131. contractforge_databricks/runtime/http_file.py +37 -0
  132. contractforge_databricks/runtime/http_retry.py +15 -0
  133. contractforge_databricks/runtime/http_safety.py +9 -0
  134. contractforge_databricks/runtime/json_materialization.py +97 -0
  135. contractforge_databricks/runtime/lineage.py +164 -0
  136. contractforge_databricks/runtime/maintenance.py +43 -0
  137. contractforge_databricks/runtime/merge_validation.py +98 -0
  138. contractforge_databricks/runtime/metadata.py +21 -0
  139. contractforge_databricks/runtime/metrics.py +34 -0
  140. contractforge_databricks/runtime/models.py +32 -0
  141. contractforge_databricks/runtime/options.py +33 -0
  142. contractforge_databricks/runtime/orchestration_context.py +185 -0
  143. contractforge_databricks/runtime/orchestrator.py +147 -0
  144. contractforge_databricks/runtime/partitioning.py +93 -0
  145. contractforge_databricks/runtime/quality_quarantine.py +92 -0
  146. contractforge_databricks/runtime/rest_api.py +46 -0
  147. contractforge_databricks/runtime/rest_auth.py +21 -0
  148. contractforge_databricks/runtime/rest_pagination.py +21 -0
  149. contractforge_databricks/runtime/run_payload.py +177 -0
  150. contractforge_databricks/runtime/schema.py +106 -0
  151. contractforge_databricks/runtime/source_metadata.py +30 -0
  152. contractforge_databricks/runtime/source_registry.py +43 -0
  153. contractforge_databricks/runtime/source_schema.py +24 -0
  154. contractforge_databricks/runtime/sources.py +208 -0
  155. contractforge_databricks/runtime/spark.py +183 -0
  156. contractforge_databricks/runtime/spark_defaults.py +35 -0
  157. contractforge_databricks/runtime/storage_auth.py +132 -0
  158. contractforge_databricks/runtime/streaming.py +131 -0
  159. contractforge_databricks/runtime/success.py +104 -0
  160. contractforge_databricks/runtime/utils.py +52 -0
  161. contractforge_databricks/runtime/watermark.py +71 -0
  162. contractforge_databricks/runtime/windows.py +184 -0
  163. contractforge_databricks/runtime/write.py +66 -0
  164. contractforge_databricks/runtime/write_flow.py +146 -0
  165. contractforge_databricks/runtime/write_strategy.py +40 -0
  166. contractforge_databricks/schema/__init__.py +21 -0
  167. contractforge_databricks/schema/diff.py +11 -0
  168. contractforge_databricks/schema/policy.py +33 -0
  169. contractforge_databricks/schema/sync.py +23 -0
  170. contractforge_databricks/security/__init__.py +21 -0
  171. contractforge_databricks/security/errors.py +5 -0
  172. contractforge_databricks/security/redaction.py +5 -0
  173. contractforge_databricks/security/secrets.py +114 -0
  174. contractforge_databricks/security/source_policy.py +17 -0
  175. contractforge_databricks/shapes/__init__.py +3 -0
  176. contractforge_databricks/shapes/sql.py +123 -0
  177. contractforge_databricks/sources/__init__.py +67 -0
  178. contractforge_databricks/sources/artifacts.py +100 -0
  179. contractforge_databricks/sources/autoloader.py +48 -0
  180. contractforge_databricks/sources/bounded_streams.py +44 -0
  181. contractforge_databricks/sources/classification.py +115 -0
  182. contractforge_databricks/sources/delta_share.py +21 -0
  183. contractforge_databricks/sources/files.py +48 -0
  184. contractforge_databricks/sources/http_file.py +46 -0
  185. contractforge_databricks/sources/interpret.py +76 -0
  186. contractforge_databricks/sources/jdbc.py +32 -0
  187. contractforge_databricks/sources/metadata.py +18 -0
  188. contractforge_databricks/sources/native_passthrough.py +33 -0
  189. contractforge_databricks/sources/rds_iam.py +15 -0
  190. contractforge_databricks/sources/rds_iam_runtime.py +191 -0
  191. contractforge_databricks/sources/rest_api.py +33 -0
  192. contractforge_databricks/sources/support.py +50 -0
  193. contractforge_databricks/sources/table_refs.py +65 -0
  194. contractforge_databricks/sql/__init__.py +4 -0
  195. contractforge_databricks/sql/identifiers.py +17 -0
  196. contractforge_databricks/sql/literals.py +36 -0
  197. contractforge_databricks/state/__init__.py +39 -0
  198. contractforge_databricks/state/ddl.py +24 -0
  199. contractforge_databricks/state/migrations.py +146 -0
  200. contractforge_databricks/state/queries.py +149 -0
  201. contractforge_databricks/state/sql.py +116 -0
  202. contractforge_databricks/state/tables.py +9 -0
  203. contractforge_databricks/state/writer.py +83 -0
  204. contractforge_databricks/templates/__init__.py +15 -0
  205. contractforge_databricks/templates/catalog.py +205 -0
  206. contractforge_databricks/templates/catalog_parity.py +85 -0
  207. contractforge_databricks/templates/core.py +83 -0
  208. contractforge_databricks/templates/enrichment.py +175 -0
  209. contractforge_databricks/transforms/__init__.py +3 -0
  210. contractforge_databricks/transforms/sql.py +118 -0
  211. contractforge_databricks/watermark/__init__.py +6 -0
  212. contractforge_databricks/watermark/sql.py +91 -0
  213. contractforge_databricks/write_modes/__init__.py +20 -0
  214. contractforge_databricks/write_modes/registry.py +44 -0
  215. contractforge_databricks/write_modes/sql.py +33 -0
  216. contractforge_databricks/write_modes/strategy.py +192 -0
  217. contractforge_databricks-0.1.0.dist-info/METADATA +34 -0
  218. contractforge_databricks-0.1.0.dist-info/RECORD +220 -0
  219. contractforge_databricks-0.1.0.dist-info/WHEEL +4 -0
  220. 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,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.30.1
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ contractforge-databricks = contractforge_databricks.cli:main