From 68fd556b22b6b486d9c62f1ae5c553d94a01be8e Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Fri, 19 Dec 2025 13:27:54 +0100 Subject: [PATCH 1/4] Add ipykernel to default template and fix conftest comment ## Changes - Added ipykernel to dev dependencies in default template's pyproject.toml - Fixed outdated comment in conftest.py (removed reference to 'tests under resources/') - Updated acceptance test outputs for default-python, lakeflow-pipelines, and pydabs templates ## Why ipykernel enables Jupyter notebook support with the project's virtual environment, which is essential for the exploratory notebooks included in the template. The conftest comment was outdated and misleading. ## Investigation Confirmed that databricks.sdk.runtime.spark already works correctly in the template: - Unit tests properly use databricks.sdk.runtime.spark - pytest --collect-only is fast (~0.05s) and doesn't eagerly connect - DBR 15+ compatibility works via validateSession() - The eager initialization in conftest.py serves real purposes (compute config, version validation) and should be kept ## Tests - All template acceptance tests pass - Verified pytest --collect-only behavior - Tested on Python 3.9-3.13 - Tested with both classic and serverless compute --- .../classic/output/my_default_python/pyproject.toml | 1 + .../classic/output/my_default_python/tests/conftest.py | 3 +-- .../serverless/output/my_default_python/pyproject.toml | 1 + .../serverless/output/my_default_python/tests/conftest.py | 3 +-- .../python/output/my_lakeflow_pipelines/pyproject.toml | 1 + .../pydabs/init-classic/output/my_pydabs/pyproject.toml | 1 + .../default/template/{{.project_name}}/pyproject.toml.tmpl | 1 + .../default/template/{{.project_name}}/tests/conftest.py | 3 +-- 8 files changed, 8 insertions(+), 6 deletions(-) diff --git a/acceptance/bundle/templates/default-python/classic/output/my_default_python/pyproject.toml b/acceptance/bundle/templates/default-python/classic/output/my_default_python/pyproject.toml index ffa9337ef4..aabcdf57d3 100644 --- a/acceptance/bundle/templates/default-python/classic/output/my_default_python/pyproject.toml +++ b/acceptance/bundle/templates/default-python/classic/output/my_default_python/pyproject.toml @@ -16,6 +16,7 @@ dev = [ "pytest", "databricks-dlt", "databricks-connect>=15.4,<15.5", + "ipykernel", ] [project.scripts] diff --git a/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py b/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py index 4df274fd43..1981367ea4 100644 --- a/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py +++ b/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py @@ -1,7 +1,6 @@ """This file configures pytest. -This file is in the root since it can be used for tests in any place in this -project, including tests under resources/. +This file can be used for tests in any place in this project. """ import os, sys, pathlib diff --git a/acceptance/bundle/templates/default-python/serverless/output/my_default_python/pyproject.toml b/acceptance/bundle/templates/default-python/serverless/output/my_default_python/pyproject.toml index ffa9337ef4..aabcdf57d3 100644 --- a/acceptance/bundle/templates/default-python/serverless/output/my_default_python/pyproject.toml +++ b/acceptance/bundle/templates/default-python/serverless/output/my_default_python/pyproject.toml @@ -16,6 +16,7 @@ dev = [ "pytest", "databricks-dlt", "databricks-connect>=15.4,<15.5", + "ipykernel", ] [project.scripts] diff --git a/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py b/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py index 4df274fd43..1981367ea4 100644 --- a/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py +++ b/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py @@ -1,7 +1,6 @@ """This file configures pytest. -This file is in the root since it can be used for tests in any place in this -project, including tests under resources/. +This file can be used for tests in any place in this project. """ import os, sys, pathlib diff --git a/acceptance/bundle/templates/lakeflow-pipelines/python/output/my_lakeflow_pipelines/pyproject.toml b/acceptance/bundle/templates/lakeflow-pipelines/python/output/my_lakeflow_pipelines/pyproject.toml index 80c75ecd3d..f374167ec7 100644 --- a/acceptance/bundle/templates/lakeflow-pipelines/python/output/my_lakeflow_pipelines/pyproject.toml +++ b/acceptance/bundle/templates/lakeflow-pipelines/python/output/my_lakeflow_pipelines/pyproject.toml @@ -16,6 +16,7 @@ dev = [ "pytest", "databricks-dlt", "databricks-connect>=15.4,<15.5", + "ipykernel", ] [project.scripts] diff --git a/acceptance/bundle/templates/pydabs/init-classic/output/my_pydabs/pyproject.toml b/acceptance/bundle/templates/pydabs/init-classic/output/my_pydabs/pyproject.toml index 070a22c735..61378bd72c 100644 --- a/acceptance/bundle/templates/pydabs/init-classic/output/my_pydabs/pyproject.toml +++ b/acceptance/bundle/templates/pydabs/init-classic/output/my_pydabs/pyproject.toml @@ -16,6 +16,7 @@ dev = [ "pytest", "databricks-dlt", "databricks-connect>=15.4,<15.5", + "ipykernel", "databricks-bundles==x.y.z", ] diff --git a/libs/template/templates/default/template/{{.project_name}}/pyproject.toml.tmpl b/libs/template/templates/default/template/{{.project_name}}/pyproject.toml.tmpl index 9e60f44d1e..2b1bcc88d3 100644 --- a/libs/template/templates/default/template/{{.project_name}}/pyproject.toml.tmpl +++ b/libs/template/templates/default/template/{{.project_name}}/pyproject.toml.tmpl @@ -16,6 +16,7 @@ dev = [ "pytest", "databricks-dlt", "databricks-connect{{template "conservative_db_connect_version_spec"}}", + "ipykernel", {{- if eq .enable_pydabs "yes" }} "databricks-bundles=={{template "latest_databricks_bundles_version"}}", {{- end }} diff --git a/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py b/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py index 4df274fd43..1981367ea4 100644 --- a/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py +++ b/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py @@ -1,7 +1,6 @@ """This file configures pytest. -This file is in the root since it can be used for tests in any place in this -project, including tests under resources/. +This file can be used for tests in any place in this project. """ import os, sys, pathlib From f5b18b674bf8274cbd4cd3b9011f23fd3bef60cb Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Fri, 19 Dec 2025 13:31:25 +0100 Subject: [PATCH 2/4] Add changelog entry for ipykernel addition --- NEXT_CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEXT_CHANGELOG.md b/NEXT_CHANGELOG.md index f4bb7e8f82..d1fc726b7a 100644 --- a/NEXT_CHANGELOG.md +++ b/NEXT_CHANGELOG.md @@ -7,6 +7,7 @@ ### CLI ### Bundles +* Add `ipykernel` to the `default` template to enable Databricks Connect notebooks in Cursor/VS Code ([#4164](https://github.com/databricks/cli/pull/4164)) ### Dependency updates From c8608f031be12b2e9f43d2cac3be9c7506a18c2b Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Fri, 19 Dec 2025 13:43:00 +0100 Subject: [PATCH 3/4] Improve conftest.py docstring clarity --- .../classic/output/my_default_python/tests/conftest.py | 5 +---- .../default-python/serverless-customcatalog/output.txt | 10 ++++++++++ .../output/my_default_python/tests/conftest.py | 5 +---- .../template/{{.project_name}}/tests/conftest.py | 5 +---- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py b/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py index 1981367ea4..c0a18b80e0 100644 --- a/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py +++ b/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py @@ -1,7 +1,4 @@ -"""This file configures pytest. - -This file can be used for tests in any place in this project. -""" +"""This file configures pytest, making sure Databricks Connect is initialized and test fixtures are available.""" import os, sys, pathlib from contextlib import contextmanager diff --git a/acceptance/bundle/templates/default-python/serverless-customcatalog/output.txt b/acceptance/bundle/templates/default-python/serverless-customcatalog/output.txt index daa2aba833..ef2b44fbc6 100644 --- a/acceptance/bundle/templates/default-python/serverless-customcatalog/output.txt +++ b/acceptance/bundle/templates/default-python/serverless-customcatalog/output.txt @@ -69,3 +69,13 @@ To get started, refer to the project README.md file and the documentation at htt + "defaultValue": "customcatalog", "label": "Catalog", "name": "catalog", +--- [TESTROOT]/bundle/templates/default-python/serverless-customcatalog/../serverless/output/my_default_python/tests/conftest.py ++++ output/my_default_python/tests/conftest.py +@@ -1,6 +1,3 @@ +-"""This file configures pytest. +- +-Configures Databricks Connect and provides test fixtures. +-""" ++"""This file configures pytest, making sure Databricks Connect is initialized and test fixtures are available.""" + + import os, sys, pathlib diff --git a/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py b/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py index 1981367ea4..c0a18b80e0 100644 --- a/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py +++ b/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py @@ -1,7 +1,4 @@ -"""This file configures pytest. - -This file can be used for tests in any place in this project. -""" +"""This file configures pytest, making sure Databricks Connect is initialized and test fixtures are available.""" import os, sys, pathlib from contextlib import contextmanager diff --git a/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py b/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py index 1981367ea4..c0a18b80e0 100644 --- a/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py +++ b/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py @@ -1,7 +1,4 @@ -"""This file configures pytest. - -This file can be used for tests in any place in this project. -""" +"""This file configures pytest, making sure Databricks Connect is initialized and test fixtures are available.""" import os, sys, pathlib from contextlib import contextmanager From c3fb66d0916b737a6708c4ebc46f24d548f60078 Mon Sep 17 00:00:00 2001 From: Lennart Kats Date: Fri, 19 Dec 2025 13:46:00 +0100 Subject: [PATCH 4/4] Fix conftest.py docstring: clarify it loads test data, not fixtures --- .../classic/output/my_default_python/tests/conftest.py | 2 +- .../default-python/serverless-customcatalog/output.txt | 10 ---------- .../output/my_default_python/tests/conftest.py | 2 +- .../template/{{.project_name}}/tests/conftest.py | 2 +- 4 files changed, 3 insertions(+), 13 deletions(-) diff --git a/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py b/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py index c0a18b80e0..72ebfeb566 100644 --- a/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py +++ b/acceptance/bundle/templates/default-python/classic/output/my_default_python/tests/conftest.py @@ -1,4 +1,4 @@ -"""This file configures pytest, making sure Databricks Connect is initialized and test fixtures are available.""" +"""This file configures pytest, initializes Databricks Connect, and provides fixtures for Spark and loading test data.""" import os, sys, pathlib from contextlib import contextmanager diff --git a/acceptance/bundle/templates/default-python/serverless-customcatalog/output.txt b/acceptance/bundle/templates/default-python/serverless-customcatalog/output.txt index ef2b44fbc6..daa2aba833 100644 --- a/acceptance/bundle/templates/default-python/serverless-customcatalog/output.txt +++ b/acceptance/bundle/templates/default-python/serverless-customcatalog/output.txt @@ -69,13 +69,3 @@ To get started, refer to the project README.md file and the documentation at htt + "defaultValue": "customcatalog", "label": "Catalog", "name": "catalog", ---- [TESTROOT]/bundle/templates/default-python/serverless-customcatalog/../serverless/output/my_default_python/tests/conftest.py -+++ output/my_default_python/tests/conftest.py -@@ -1,6 +1,3 @@ --"""This file configures pytest. -- --Configures Databricks Connect and provides test fixtures. --""" -+"""This file configures pytest, making sure Databricks Connect is initialized and test fixtures are available.""" - - import os, sys, pathlib diff --git a/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py b/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py index c0a18b80e0..72ebfeb566 100644 --- a/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py +++ b/acceptance/bundle/templates/default-python/serverless/output/my_default_python/tests/conftest.py @@ -1,4 +1,4 @@ -"""This file configures pytest, making sure Databricks Connect is initialized and test fixtures are available.""" +"""This file configures pytest, initializes Databricks Connect, and provides fixtures for Spark and loading test data.""" import os, sys, pathlib from contextlib import contextmanager diff --git a/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py b/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py index c0a18b80e0..72ebfeb566 100644 --- a/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py +++ b/libs/template/templates/default/template/{{.project_name}}/tests/conftest.py @@ -1,4 +1,4 @@ -"""This file configures pytest, making sure Databricks Connect is initialized and test fixtures are available.""" +"""This file configures pytest, initializes Databricks Connect, and provides fixtures for Spark and loading test data.""" import os, sys, pathlib from contextlib import contextmanager