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-05-14T08:48:36.455139+00:00.

{
  "timestamp": "2026-05-14T08:48:36.455139+00:00",
  "branch": "per-connector-cli-version-matrix",
  "commit": {
    "hash": "bebb0c1935b6715c48829133018180d278e216fc",
    "message": "feat(ingestion): per-connector CLI version matrix + resolution stamp + test-connection path\n\nAdds per-connector CLI version resolution so a Snowflake fix can ship\nwithout forcing a bump on every other connector. A JSON matrix hosted at\nINGESTION_VERSION_MATRIX_URL maps server release x connector -> version,\nwith optional per-deployment cohort allowlists for canary rollouts.\n\nMatrix schema:\n\n  {\n    \"1.3.1.4\": {\n      \"snowflake\": {\n        \"_default\": \"1.3.1.4\",\n        \"cohorts\": [\n          { \"version\": \"1.3.1.5\",\n            \"deployments\": [\"deployment-slug-1\", \"deployment-slug-2\"] }\n        ]\n      }\n    }\n  }\n\n`deployments` entries are matched against `ingestion.customerId` (env\nINGESTION_CUSTOMER_ID, falling back to DATAHUB_EXECUTOR_CUSTOMER_ID).\nThe leading underscore on `_default` marks it as a sentinel key so it\ncan't collide with a connector name.\n\nResolution priority (top wins):\n  1. Per-source explicit `config.version` (unchanged)\n  2. matrix[serverVersion][connectorType].cohorts - first cohort whose\n     `deployments` list contains this deployment's customerId\n  3. matrix[serverVersion][connectorType]._default\n  4. defaultCliVersion from application.yaml (unchanged fallback)\n\nStorage is pluggable. Matrix consumption (IngestionVersionMatrixService)\nis decoupled from where the matrix lives via a MatrixSource interface:\n\n  - HttpUrlMatrixSource - periodic HTTP GET (the URL-backed default)\n  - NoOpMatrixSource    - empty matrix, wired when no URL is configured\n                          so the consumer never needs null checks\n\nFuture backends (GMS aspect on a globalSettings entity, AppConfig/Consul/\netcd, GitHub raw) just implement MatrixSource - the resolver and the\nresolution stamp don't change.\n\nThree execution entry points are covered:\n  - CreateIngestionExecutionRequestResolver (manual triggers)\n  - IngestionScheduler.ExecutionRequestRunnable (scheduled triggers)\n  - CreateTestConnectionRequestResolver (test-connection from UI)\n\nEach one stamps the structured CliVersionResolution record on the\nresulting ExecutionRequestInput aspect. Post-hoc forensics queries the\nrecord directly instead of iterating the generic args map:\n\n  cliVersionResolution: {\n    resolved: \"1.3.1.5\",\n    source: MATRIX_COHORT,\n    matrixServerVersion: \"1.3.1.4\",\n    matchedCohortIndex: 0,\n    matrixFetchedAt: 1715079540000\n  }\n\nTest connections also now honor defaultCliVersion when no explicit\nversion is supplied - previously they silently omitted version,\nwhich caused the executor to use whatever bundled CLI it shipped\nwith rather than the configured default.\n\nFeature is off by default - when INGESTION_VERSION_MATRIX_URL is unset\nthe factory wires a NoOpMatrixSource and every resolveVersion() returns\nempty, so existing behavior is preserved exactly. In single-tenant\ndeployments without a customerId set, cohort matching never fires and\nonly the per-connector `_default` from the matrix applies.\n\nAlso: treat empty version strings as unset (bootstrap YAML can render\n\"\" for the version field, and an empty value forwarded to the executor\nsilently falls back to the bundled CLI rather than the configured\ndefault).\n\nConfig:\n  INGESTION_VERSION_MATRIX_URL              (default: empty / disabled)\n  INGESTION_VERSION_MATRIX_REFRESH_SECONDS  (default: 600)\n  INGESTION_CUSTOMER_ID                     (default: falls back to\n                                             DATAHUB_EXECUTOR_CUSTOMER_ID)"
  },
  "base": {
    "hash": "cca686dbbeddc9d6204bde5f49476706f8881efe",
    "message": "test(playwright): migrate ingestion tests (frontend changes) (#17420)"
  },
  "pr": {
    "number": 17436,
    "title": "Draft: feat(ingestion): per-connector CLI version matrix + resolution stamp \u2026",
    "url": "https://github.com/datahub-project/datahub/pull/17436"
  }
}

Usage

Current base URL: unknown

Package Size Install command
acryl-datahub 3.796 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.109 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'