Python API¶
The DataMuru class wraps the same engine used by the CLI.
from datamuru.api import DataMuru
dm = DataMuru("datamuru.yml")
issues = dm.validate()
report = dm.doctor()
plan = dm.plan(target="catalog:analytics")
Constructor¶
DataMuru(config_path: str | Path, environment: str | None = None)
Methods¶
| Method | Result |
|---|---|
validate() |
validation issues |
doctor() |
DoctorReport |
edition_summary() |
EditionSummary |
state_backend_report() |
state backend readiness report |
enterprise_activation_report() |
activation readiness report |
enterprise_activation_purchase_request() |
redacted purchase/license activation request |
enterprise_activation_evidence_report() |
redacted activation audit evidence report |
enterprise_activation_handoff_package(output_dir) |
redacted activation handoff package manifest |
enterprise_control_plane_contract() |
hosted control plane handoff contract |
enterprise_tenant_entitlement_record() |
immutable redacted tenant entitlement record |
enterprise_control_plane_architecture() |
hosted control plane reference architecture |
DataMuru.fulfill_enterprise_activation(...) |
config-independent offline fulfillment result |
write_enterprise_activation_bundle(output_path) |
redacted activation handoff bundle path |
write_enterprise_activation_purchase_request(output_path) |
redacted purchase/license activation request path |
write_enterprise_activation_evidence(output_path) |
redacted activation audit evidence path |
write_enterprise_activation_handoff_package(output_dir) |
redacted activation handoff package manifest |
write_enterprise_control_plane_contract(output_path) |
redacted hosted control plane contract path |
write_enterprise_tenant_entitlement_record(output_path) |
tenant entitlement record path |
write_enterprise_control_plane_architecture(output_path) |
hosted control plane architecture path |
plan(target=None) |
Plan |
save_plan(output_path, target=None) |
saved-plan result |
apply(target=None) |
ApplyResult |
apply_saved_plan(plan_path) |
ApplyResult |
destroy(target=None) |
ApplyResult |
import_discover(include_system=False, catalogs=None, progress=None) |
ImportDiscoveryReport |
import_generate(...) |
generated workspace configuration result |
import_adopt(targets=[...], commit=False) |
ImportAdoptionResult |
import_databricks_to_snowflake_mapping(...) |
review-only Databricks-to-Snowflake mapping result |
import_snowflake_to_databricks_mapping(...) |
review-only Snowflake-to-Databricks mapping result |
progress is an optional callback that receives dictionaries such as
{"message": "...", "total": 12, "completed": 5}. CLI text output uses this to
render import progress while keeping JSON output machine-readable.
Reverse mapping example:
mapping = dm.import_snowflake_to_databricks_mapping(
databases=["FINANCE"],
target_workspace="databricks-dev",
target_cloud="azure",
catalog_prefix="sf",
identifier_case="lower",
)
The method returns SnowflakeToDatabricksMappingResult. Its YAML is a draft;
the call does not move data or invoke provider mutation methods.
Example: guarded apply¶
from datamuru.api import DataMuru
dm = DataMuru("datamuru.yml")
if not dm.doctor().success:
raise RuntimeError("Provider diagnostics failed")
plan = dm.plan(target="catalog:analytics")
destructive = [change for change in plan.changes if change.action == "destroy"]
if destructive:
raise RuntimeError("Review destroy actions before apply")
result = dm.apply(target="catalog:analytics")
Offline fulfillment¶
Offline fulfillment does not require a project configuration:
from datamuru.api import DataMuru
result = DataMuru.fulfill_enterprise_activation(
".datamuru/activation/purchase-request.json",
".datamuru/activation/fulfillment",
decision="approve",
operator="licensing@datamuru.com",
decision_reference="CRM-1234",
)
The result contains a versioned decision record and, for approval, an activation receipt. Both are offline evidence rather than signed licenses or hosted tenant provisioning results.
The Python contracts are alpha APIs. Pin the package version and test upgrades.