These prebuilt wheel files can be used to install our Python packages as of a specific commit.
Built at 2026-08-21T09:49:24.917798+00:00.
{
"timestamp": "2026-08-21T09:49:24.917798+00:00",
"branch": "fix/powerbi-mquery-lexical-scope",
"commit": {
"hash": "0c3d423da30de283fb8d2ad019d4c0169f5aedef",
"message": "fix(ingest/powerbi): resolve M-Query names against enclosing let scopes\n\nThe walk carried one let at a time. Descending into a nested let replaced\nthe enclosing scope instead of adding to it, so a nested body could not\nreach any step its parents bound:\n\n Source = Databricks.Catalogs(...),\n db = Source{[Name=\"cat\", Kind=\"Database\"]}[Data],\n sch = db{[Name=\"sch\", Kind=\"Schema\"]}[Data],\n out = let tbl = sch{[Name=\"tbl\", Kind=\"Table\"]}[Data] in tbl\n\n`sch` was unreachable from the inner let, so the table produced no lineage\nat all. Nested lets are common in Power BI-generated M and `Source` is the\ndefault step name, so this is not an unusual shape.\n\nCarry the enclosing scopes as a chain, innermost last, and look a name up\nfrom the inside out so the nearest binding wins.\n\nThe chain is truncated at the scope that binds the name, because a step\nbound by an outer let is evaluated in that let's scope and cannot see names\na nested one introduces. Without that, `a = sch{...}` at the outer level\nresolves against a nested `sch` and invents an upstream from an expression\nPower BI itself would reject -- verified, it produces `cat.inner.tbl`.\n\nThe circular-reference guard now keys on the scope that actually bound the\nname rather than whichever let happened to be current."
},
"base": {
"hash": "878cd50e07e488201467a265206d664a41994c24",
"message": "ci: stop cancelling protected-branch workflow runs on new pushes (#19354)\n\nCo-authored-by: Cursor "
},
"pr": {
"number": 19370,
"title": "fix(ingest/powerbi): resolve M-Query names against enclosing let scopes",
"url": "https://github.com/datahub-project/datahub/pull/19370"
}
}
Current base URL: unknown
| Package | Size | Install command |
|---|---|---|
acryl-datahub |
5.018 MB | uv pip install 'acryl-datahub @ <base-url>/artifacts/wheels/acryl_datahub-0.0.0.dev1-py3-none-any.whl' |
acryl-datahub-actions |
0.117 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.072 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.021 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.019 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' |