Skip to content

Conversation

lennartkats-db
Copy link
Contributor

This adds a new version of the default-python template. To enable the first integration and evaluation of this template, this first pull request replaces the internal lakeflow-pipelines template. Replacing default-python will be the next milestone.

Changes

  • Update default-python to follow the Lakeflow conventions (per-pipeline sources go into resources/; shared sources go into (lib/)
  • Adapt this template so it can first be used in place of the lakeflow-pipelines template (this required disabling some of the template questions and components)

Why

Lakeflow comes with new conventions that emphasize modularity. This PR represents an initial milestone towards updating the DABs default-python template. default-sql will follow in a later milestone.

Tests

Existing tests were updated.

@lennartkats-db lennartkats-db changed the title Add a Lakeflow-friendly default-python template Add a Lakeflow-friendly DABs template Sep 8, 2025
@@ -1,57 +1,96 @@
{
"welcome_message": "\nWelcome to the template for Lakeflow Declarative Pipelines!",
"//": "This template is based on an upcoming version of the default-python template, but comes with a SQL variation + certain defaults that are specific to Lakeflow Pipelines.",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 note that this databricks_template_schema has several "skipped" questions so it follows the same structure as the existing pipelines-default template

@@ -0,0 +1,17 @@
{{/* The latest LTS DBR version; this should be updated a few months after each LTS.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 these changes are already in default-python

@@ -1,33 +0,0 @@
{{- define `pipeline_name` -}}
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 note that default-python never used templates like this (mostly because of the syntactic noise they add and because they don't work in filenames)

notebook_task:
notebook_path: sample_notebook.ipynb
{{- if $serverless}}
environment_key: default
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 note that this fixes an issue in existing templates where notebook tasks didn't get an environment_key if there was no Python package. We always need an environment to be able to pick an environment version.

@@ -0,0 +1,93 @@
"""This file configures pytest.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡this file is already in default-python and is based on #3254.

return DatabricksSession.builder.getOrCreate()

@pytest.fixture()
def load_fixture(spark: SparkSession):
Copy link
Contributor Author

@lennartkats-db lennartkats-db Sep 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 this function is new and is referenced from fixtures.gitkeep.tmpl. It makes it easy to use fixtures in tests:

Add JSON or CSV files here. In tests, use them with `load_fixture()`:

def test_using_fixture(load_fixture):
    data = load_fixture("my_data.json")
    assert len(data) >= 1

@eng-dev-ecosystem-bot
Copy link
Collaborator

eng-dev-ecosystem-bot commented Sep 8, 2025

Run: 17764254407

Env ✅​pass ❌​FAIL 🔄​flaky 🙈​skip
🔄​ aws linux 309 3 526
🔄​ aws windows 303 10 525
✅​ aws-ucws linux 423 425
✅​ aws-ucws windows 425 423
🔄​ azure linux 308 4 525
🔄​ azure windows 309 3 525
✅​ azure-ucws linux 424 423
✅​ azure-ucws windows 425 422
❌​ gcp linux 26 298 501
❌​ gcp windows 26 299 500
299 failing tests:
Test Name aws linux aws windows azure linux azure windows gcp linux gcp windows
TestAccept 🔄​flaky ✅​pass ✅​pass 🔄​flaky ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/alerts/basic ✅​pass ✅​pass ✅​pass 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/detect-change ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/generate_inplace ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/nested-folders ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/simple ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/simple_outside_bundle_root ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/dashboard/simple_syncroot ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/empty-bundle ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/empty-bundle/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/empty-bundle/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/files/no-snapshot-sync ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/files/no-snapshot-sync/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/check-metadata ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/check-metadata/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/check-metadata/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/double-underscore-keys ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/double-underscore-keys/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/double-underscore-keys/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/fail-on-active-runs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/fail-on-active-runs/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/fail-on-active-runs/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/shared-root-path ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/shared-root-path/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/jobs/shared-root-path/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/mlops-stacks ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/allow-duplicate-names ✅​pass 🔄​flaky ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/allow-duplicate-names/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass 🔄​flaky ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/allow-duplicate-names/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/auto-approve ✅​pass 🔄​flaky ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/auto-approve/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass 🔄​flaky ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/auto-approve/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/lakeflow-pipeline ✅​pass 🔄​flaky ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/lakeflow-pipeline/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/pipeline/lakeflow-pipeline/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass 🔄​flaky ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deploy/secret-scope ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/cluster ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/dashboard ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/dashboard/recreation ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/experiment ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/job/generate-and-bind ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/job/job-abort-bind ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/job/job-spark-python-task ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/deployment/bind/model-serving-endpoint ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/destroy/jobs-and-pipeline ✅​pass ✅​pass ✅​pass 🔄​flaky ❌​FAIL ❌​FAIL
TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/destroy/jobs-and-pipeline/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass 🔄​flaky ❌​FAIL ❌​FAIL
TestAccept/bundle/local_state_staleness ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/local_state_staleness/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/local_state_staleness/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/resources/clusters/deploy/simple ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/resources/pipelines/update ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/resources/pipelines/update/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/resources/pipelines/update/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=no/PY=no ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=no/PY=yes ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=yes/PY=no ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=yes/PY=yes ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=no/PY=no ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=no/PY=yes ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=yes/PY=no ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=yes/PY=yes ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=no/PY=no ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=no/PY=yes ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=yes/PY=no ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=yes/PY=yes ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=no/PY=no ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=no/PY=yes ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=yes/PY=no ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/classic/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=yes/PY=yes ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=no/PY=no 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=no/PY=yes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=yes/PY=no 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=no/NBOOK=yes/PY=yes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=no/PY=no 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=no/PY=yes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=yes/PY=no 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=direct-exp/DLT=yes/NBOOK=yes/PY=yes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=no/PY=no 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=no/PY=yes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=yes/PY=no 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=no/NBOOK=yes/PY=yes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=no/PY=no 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=no/PY=yes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=yes/PY=no 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/combinations/serverless/DATABRICKS_CLI_DEPLOYMENT=terraform/DLT=yes/NBOOK=yes/PY=yes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic 🔄​flaky ✅​pass 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/UV_PYTHON=3.10 ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/UV_PYTHON=3.11 ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/UV_PYTHON=3.12 ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/UV_PYTHON=3.13 ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=direct-exp/UV_PYTHON=3.9 🔄​flaky ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=terraform/UV_PYTHON=3.10 ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=terraform/UV_PYTHON=3.11 ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=terraform/UV_PYTHON=3.12 ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=terraform/UV_PYTHON=3.13 ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/bundle/templates/default-python/integration_classic/DATABRICKS_CLI_DEPLOYMENT=terraform/UV_PYTHON=3.9 ✅​pass ✅​pass 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/basic ✅​pass 🔄​flaky 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/basic/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass 🔄​flaky 🔄​flaky ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/basic/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/error ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/error/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/error/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/pipeline-crud ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/pipeline-crud/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/pipeline-crud/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/workspace-file-io ✅​pass 🔄​flaky ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/workspace-file-io/DATABRICKS_CLI_DEPLOYMENT=direct-exp ✅​pass 🔄​flaky ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAccept/selftest/record_cloud/workspace-file-io/DATABRICKS_CLI_DEPLOYMENT=terraform ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAlertsCreateErrWhenNoArguments ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestApiGet ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestAuthDescribeSuccess ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestBundleInitErrorOnUnknownFields ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestBundleInitHelpers ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestClustersGet ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestClustersList ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestDashboardAssumptions_WorkspaceImport ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestExport ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestExportDir ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestExportDirDoesNotOverwrite ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestExportDirWithOverwriteFlag ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestExportWithFileFlag ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFetchRepositoryInfoAPI_FromNonRepo ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFetchRepositoryInfoAPI_FromRepo ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadDir ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadDir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadDir/workspace_files ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadDir/workspace_files_extensions ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadWrite ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadWrite/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadWrite/workspace_files ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerReadWrite/workspace_files_extensions ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerRecursiveDelete ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerRecursiveDelete/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerRecursiveDelete/workspace_files ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerRecursiveDelete/workspace_files_extensions ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerWorkspaceFilesExtensionsDelete ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerWorkspaceFilesExtensionsRead ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerWorkspaceFilesExtensionsReadDir ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerWorkspaceFilesExtensionsStat ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFilerWorkspaceNotebook ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCat ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCat/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatDoesNotSupportOutputModeJson ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatForDbfsInvalidScheme ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatOnADir ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatOnADir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatOnNonExistentFile ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCatOnNonExistentFile/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCompletion ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDir ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDir/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDir/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDir/dbfs_to_uc-volumes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpDir/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDir/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten/dbfs_to_uc-volumes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirFileNotOverwritten/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag/dbfs_to_uc-volumes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpDirToDirWithOverwriteFlag/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpErrorsOnInvalidScheme ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpErrorsWhenSourceIsDirWithoutRecursiveFlag ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpErrorsWhenSourceIsDirWithoutRecursiveFlag/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDir ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDir/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDir/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDir/dbfs_to_uc-volumes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToDir/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDir/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten/dbfs_to_uc-volumes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirFileNotOverwritten/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirForWindowsPaths 🙈​skip ✅​pass 🙈​skip ✅​pass 🙈​skip ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag/dbfs_to_uc-volumes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToDirWithOverwriteFlag/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFile ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFile/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFile/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFile/dbfs_to_uc-volumes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToFile/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFile/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten/dbfs_to_uc-volumes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileFileNotOverwritten/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag/dbfs_to_uc-volumes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpFileToFileWithOverwriteFlag/local_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpSourceIsDirectoryButTargetIsFile ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpSourceIsDirectoryButTargetIsFile/dbfs_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpSourceIsDirectoryButTargetIsFile/dbfs_to_local ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsCpSourceIsDirectoryButTargetIsFile/dbfs_to_uc-volumes 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestFsCpSourceIsDirectoryButTargetIsFile/local_to_dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLs/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsForNonexistingDir ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsForNonexistingDir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsOnEmptyDir ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsOnEmptyDir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsOnFile ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsOnFile/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsWithAbsolutePaths ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsWithAbsolutePaths/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsLsWithoutScheme ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdir ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirCreatesIntermediateDirectories ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirCreatesIntermediateDirectories/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirWhenDirectoryAlreadyExists ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirWhenDirectoryAlreadyExists/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirWhenFileExistsAtPath ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsMkdirWhenFileExistsAtPath/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmDirRecursively ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmDirRecursively/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmEmptyDir ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmEmptyDir/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmFile ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmFile/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmForNonExistentFile ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmForNonExistentFile/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmNonEmptyDirectory ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestFsRmNonEmptyDirectory/dbfs ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestGenerateFromExistingJobAndDeploy ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestGenerateFromExistingPipelineAndDeploy ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportDir ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportDirDoesNotOverwrite ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportDirWithOverwriteFlag ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportFileFormatAuto ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportFileFormatSource ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportFileUsingContentFormatAuto ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestImportFileUsingContentFormatSource ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestLock ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestLockUnlockWithAllowsLockFileNotExist ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestLockUnlockWithoutAllowsLockFileNotExist ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSecretsPutSecretBytesValue ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSecretsPutSecretStringValue ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSparkJarTaskDeployAndRunOnWorkspace ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_14.3_LTS ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSparkJarTaskDeployAndRunOnWorkspace/Databricks_Runtime_15.4_LTS ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncEnsureRemotePathIsUsableIfRepoDoesntExist ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncEnsureRemotePathIsUsableIfRepoExists ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncEnsureRemotePathIsUsableInWorkspace ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncFullFileSync ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncIncrementalFileOverwritesFolder ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncIncrementalFileSync ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncIncrementalSyncFileToPythonNotebook ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncIncrementalSyncPythonNotebookDelete ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncIncrementalSyncPythonNotebookToFile ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncNestedFolderDoesntFailOnNonEmptyDirectory ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncNestedFolderSync ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestSyncNestedSpacePlusAndHashAreEscapedSync ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestTagKeyGCP 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestTagKeyGCP/empty ❌​FAIL ❌​FAIL
TestTagKeyGCP/invalid ❌​FAIL ❌​FAIL
TestTagKeyGCP/unicode ❌​FAIL ❌​FAIL
TestTagKeyGCP/valid ❌​FAIL ❌​FAIL
TestTagValueGCP 🙈​skip 🙈​skip 🙈​skip 🙈​skip ❌​FAIL ❌​FAIL
TestTagValueGCP/invalid ❌​FAIL ❌​FAIL
TestTagValueGCP/unicode ❌​FAIL ❌​FAIL
TestTagValueGCP/valid ❌​FAIL ❌​FAIL
TestTelemetryEndpoint ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkpaceExportPrintsContents ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensionsDirectoriesAreNotNotebooks ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensionsNotebooksAreNotDeletedAsFiles ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensionsNotebooksAreNotReadAsFiles ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensionsNotebooksAreNotStatAsFiles ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/jupyter_python ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/jupyter_r ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/jupyter_scala ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/jupyter_sql ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/source_python ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/source_r ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/source_scala ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceFilesExtensions_ExportFormatIsPreserved/source_sql ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL
TestWorkspaceList ✅​pass ✅​pass ✅​pass ✅​pass ❌​FAIL ❌​FAIL

"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.defaultFormatter": "ms-python.python",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this formatter compatible with black? We were using black before because that's what's being used in the workspace. Using different formatters can cause thrashing.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should use PEP8. Cursor and my AI told me that the setting above is deprecated and I need to use what it says here. But I'll double check or just take this minor change out of scope.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reverted this change and added black-formatter to the list of recommended extensions


trigger:
# Run this job every day, exactly one day from the last run; see https://docs.databricks.com/api/workspace/jobs/create#trigger
periodic:
interval: 1
unit: DAYS

email_notifications:
on_failure: ${var.notifications}
#email_notifications:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the commented code intentional?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah for default-python I used this approach where there are never emails by default (since they were not effective) + there is no special variable for it (since variables come with a cost)

@@ -1,57 +1,96 @@
{
"welcome_message": "\nWelcome to the template for Lakeflow Declarative Pipelines!",
"//": "This template is based on an upcoming version of the default-python template, but comes with a SQL variation + certain defaults that are specific to Lakeflow Pipelines.",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note to self: We have to test the new template schema with the workspace creation UI to see if everything still makes sense and looks OK.

cc @ilyakuz-db

"default": "yes",
"enum": [
"yes",
"no (advanced: I will customize the schema configuration later in databricks.yml)"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why don't we ask for the schema here?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the scenario where users don't select the per-user schema then they need to decide what they want to do instead. Things get complicated:

  • Some customers want one catalog per user
  • Some customers want some kind of schema-mangling approach
  • Some customers might be okay with just a single hardcoded schema for dev and a single hard-coded schema for prod, but this seem so limiting that it seems better to use default and ask customers to configure things themselves if they don't like this.
  • Some customers may do yet other things.

Copy link
Contributor

@pietern pietern left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can't test this end-to-end yet because of the missing pyproject.toml.

{{skip "{{.project_name}}/resources/{{.project_name}}_pipeline/transformations/sample_zones_{{.project_name}}.py"}}
{{skip "{{.project_name}}/resources/{{.project_name}}_pipeline/transformations/sample_trips_{{.project_name}}.py"}}
{{if not $python_package}}
{{skip "{{.project_name}}/pyproject.toml"}}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no pyproject.toml in the output, even if you selected python.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the pipelines-default pipeline we never had the question to ask about the Python package, so there is no pyproject.toml in that case. If you want to try this already before we merge things into default-python you can play with databricks_template_schema.vnext.json.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the vnext for?

This is currently untested.

Copy link
Contributor Author

@lennartkats-db lennartkats-db Sep 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is indeed not used right now, it's just a reviewable reference for what the template_schema could look like for default-python. See also the "//" comment at the top. Compared to the one for default-pipelines, it doesn't disable any of the questions and it has minor wording changes.

"properties": {
"lakeflow_only": {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the intent? Use from the UI only?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, exactly, this is just for retrofitting the default-python template to be suitable as a replacement for lakeflow-pipelines.

// Pylance settings (VS Code)
// Set typeCheckingMode to "basic" to enable type checking!
"python.analysis.typeCheckingMode": "off",
"python.analysis.extraPaths": ["src", "lib", "resources"],
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This implies that lakeflow_pipelines_etl.transformations is importable.

We should make sure that this is not the case and produces squigglies in the editor, because it won't be importable from the real pipeline either.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "resources" entry makes it so that all packages under "resources" can indeed be resolved for imports. This is important for imports across pipeline packags, e.g. the utilities package.

We should make sure that this is not the case and produces squigglies in the editor, because it won't be importable from the real pipeline either.

I don't see any way to do that since IDEs like VS Code assume a single compilation unit in a project. We have more than one. And I don't think it's a good option to simply imports in pipelines.

@@ -0,0 +1,12 @@
from pyspark.sql.functions import col, when
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Utilities should only be produced in the workspace (if at all).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed these.

Though this is unfortunately inconsistent with the one from Black
@lennartkats-db lennartkats-db changed the title Add a Lakeflow-friendly DABs template Update the lakeflow-pipelines template according to the latest Lakeflow conventions Sep 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants