DataHub Python Builds

These prebuilt wheel files can be used to install our Python packages as of a specific commit.

Build context

Built at 2026-04-24T06:22:09.714040+00:00.

{
  "timestamp": "2026-04-24T06:22:09.714040+00:00",
  "branch": "feat/sigma-dm-containers",
  "commit": {
    "hash": "f9d71af1dd4b9f5db40279e3454780998ae68c5a",
    "message": "fix(ingest/sigma): shape-aware DM /lineage dedup, counter split, extract_lineage gate\n\nReview follow-ups on PR #17141 PR 1:\n\nC1: `_get_data_model_lineage_entries` dedup key was `(type, nodeId)`,\nbut the real DM `/lineage` payload does not carry `nodeId` -- `element`\nrows use `elementId` and `dataset`/`table` rows use `inodeId`. Under\nthe old key every real row collapsed to `(, \"\")` so after the\nfirst entry per type everything was silently dropped. Switch to a\nshape-aware key and preserve rows missing the expected identifier\nrather than collapsing them.\n\nM7: Rewrote the dedup unit tests against the real DM /lineage shape\n(elementId / inodeId) and added a regression for entries missing the\nnatural key.\n\nTighten test_sigma_ingest_data_models_external_dataset_not_ingested\nto assert exact counter values (1 intra, 1 resolved external,\n1 unresolved external, 0 unknown shape) so C1 cannot regress silently.\n\nM1: Split `data_model_element_upstreams_unresolved` into\n`_unresolved_external` (target dataset exists but was filtered out of\nthe run) vs `_unknown_shape` (source_id shapes this release does not\nparse, e.g. cross-DM refs). Aggregate counter kept for dashboards.\n\nM2: Docstring on `_get_data_model_lineage_entries` now reflects the\nshape-aware key choice and the rationale for preserving entries with\nmissing identifiers.\n\nM5: Duplicate fieldPath collapse is now deterministic -- prefer the\nrow with a formula set (user-authored calc field), tie-break on the\nlexicographically smallest columnId. Dropped columnIds are emitted\nto debug logs for reconciliation.\n\nM6: `/dataModels/{id}/lineage` is now gated on `extract_lineage` so\n`ingest_data_models=True` + `extract_lineage=False` emits DM\nContainers, element Datasets, and SchemaMetadata without hitting any\nlineage endpoint.\n\nM4: Softened hard-coded `StringTypeClass` / `nativeDataType=\"String\"`\non DM element columns to `NullTypeClass` + `\"unknown\"` via a named\nconstant, so downstream type-aware features can distinguish\n\"no type returned by Sigma\" from \"actually a string.\"\n\nDoc updates: sigma_pre.md covers the new counter split, the\nextract_lineage gate, and the softened column type; updating-datahub.md\nbullet reflects the same."
  },
  "base": {
    "hash": "af552cce4caa59c833522b3f3e5d3343bcb71ffe",
    "message": "fix: secrets can paginate now (#17172)"
  },
  "pr": {
    "number": 17173,
    "title": "feat(ingest/sigma): emit Data Models as Containers with per-element Datasets",
    "url": "https://github.com/datahub-project/datahub/pull/17173"
  }
}

Usage

Current base URL: unknown

Package Size Install command
acryl-datahub 3.592 MB uv pip install 'acryl-datahub @ <base-url>/artifacts/wheels/acryl_datahub-0.0.0.dev1-py3-none-any.whl'
acryl-datahub-actions 0.105 MB uv pip install 'acryl-datahub-actions @ <base-url>/artifacts/wheels/acryl_datahub_actions-0.0.0.dev1-py3-none-any.whl'
acryl-datahub-airflow-plugin 0.108 MB uv pip install 'acryl-datahub-airflow-plugin @ <base-url>/artifacts/wheels/acryl_datahub_airflow_plugin-0.0.0.dev1-py3-none-any.whl'
acryl-datahub-dagster-plugin 0.020 MB uv pip install 'acryl-datahub-dagster-plugin @ <base-url>/artifacts/wheels/acryl_datahub_dagster_plugin-0.0.0.dev1-py3-none-any.whl'
acryl-datahub-gx-plugin 0.011 MB uv pip install 'acryl-datahub-gx-plugin @ <base-url>/artifacts/wheels/acryl_datahub_gx_plugin-0.0.0.dev1-py3-none-any.whl'
prefect-datahub 0.011 MB uv pip install 'prefect-datahub @ <base-url>/artifacts/wheels/prefect_datahub-0.0.0.dev1-py3-none-any.whl'