fix(python-setup): actionable error for E_MERGE on a [project]-less pyproject - #2180
Merged
Conversation
rugpanov
temporarily deployed
to
test-trigger-is
September 8, 2026 13:24 — with
GitHub Actions
Inactive
rugpanov
temporarily deployed
to
test-trigger-is
September 8, 2026 13:25 — with
GitHub Actions
Inactive
rugpanov
temporarily deployed
to
test-trigger-is
September 8, 2026 13:25 — with
GitHub Actions
Inactive
Contributor
Author
|
🤖 Integration tests ❌ failed for |
rugpanov
force-pushed
the
setup-local-emerge-no-project-table
branch
from
September 8, 2026 13:34
b09e190 to
7d8453e
Compare
rugpanov
temporarily deployed
to
test-trigger-is
September 8, 2026 13:34 — with
GitHub Actions
Inactive
rugpanov
temporarily deployed
to
test-trigger-is
September 8, 2026 13:34 — with
GitHub Actions
Inactive
rugpanov
temporarily deployed
to
test-trigger-is
September 8, 2026 13:34 — with
GitHub Actions
Inactive
Contributor
Author
|
🤖 Integration tests running for |
…yproject *Why* A valid PEP 735 dependency-groups-only pyproject.toml (no [project] table) makes the CLI's merge phase fail with E_MERGE / "no [project] table to hold requires-python" (libs/localenv's errNoProjectTable). The extension surfaced this as a generic "failed to merge" with no fix, and routed *all* E_MERGE to a "report this bug" prompt — which is what auto-filed GitHub issue #2177 for a user-fixable manifest shape. *What* - Add isMissingProjectTableFailure(result): detects this E_MERGE variant by the CLI message (mirroring isIndexUnreachableFailure), scoped to E_MERGE. - getPythonSetupErrorMessage now returns actionable copy for it (add a [project] table, or switch to manual setup); generic E_MERGE keeps the neutral copy. - formatSetupFailureDetail spells out both fixes in the output channel so the guidance survives the notification being dismissed. No new button (the primary fix is a manual edit). - reportRepoForResult excludes this variant, so it no longer prompts a bug report; a generic E_MERGE stays report-worthy. *Verification* - New unit tests for the detector, message, detail block, and report-routing exclusion; full unit suite passes (the 2 packageJsonUtils pinned-version failures are a stale-bin worktree artifact, unrelated). - tsc, eslint, and prettier clean on the changed files. Co-authored-by: Isaac <no-reply@databricks.com>
rugpanov
force-pushed
the
setup-local-emerge-no-project-table
branch
from
September 8, 2026 13:40
7d8453e to
38d3342
Compare
rugpanov
temporarily deployed
to
test-trigger-is
September 8, 2026 13:41 — with
GitHub Actions
Inactive
rugpanov
temporarily deployed
to
test-trigger-is
September 8, 2026 13:42 — with
GitHub Actions
Inactive
rugpanov
temporarily deployed
to
test-trigger-is
September 8, 2026 13:43 — with
GitHub Actions
Inactive
Contributor
Author
|
🤖 Integration tests ❌ failed for |
rugpanov
marked this pull request as ready for review
September 8, 2026 15:41
misha-db
approved these changes
Sep 9, 2026
rugpanov
enabled auto-merge (squash)
September 9, 2026 16:01
rugpanov
temporarily deployed
to
test-trigger-is
September 9, 2026 16:02 — with
GitHub Actions
Inactive
rugpanov
temporarily deployed
to
test-trigger-is
September 9, 2026 16:02 — with
GitHub Actions
Inactive
Contributor
|
If integration tests don't run automatically, an authorized user can run them manually by following the instructions below: Trigger: Inputs:
Checks will be approved automatically on success. |
rugpanov
temporarily deployed
to
test-trigger-is
September 9, 2026 16:02 — with
GitHub Actions
Inactive
Merged
rugpanov
added a commit
that referenced
this pull request
Sep 10, 2026
Release **v2.17.0** of the Databricks VS Code extension. ## What's included - Add a Python environment setup preset picker to choose a Full, DB Connect, or Python-only environment (#2179) - Recover from a dependency constraint conflict during Python setup by offering to retry as a DB Connect environment (#2186) - Add recovery UX for Python download failures (#2164) - Show an actionable error when Python setup hits a merge conflict on a `pyproject.toml` without a `[project]` table (#2180) - Preserve script stdout when an Upload-and-Run file fails (#2171) - Update Databricks CLI to v1.16.0 (#2175, #2183) — see the [CLI release notes](https://github.com/databricks/cli/releases) for changes Changelog curated from the generated output (stripped auto-close refs, dropped internal telemetry/CI-only items). Tracking: DECO-28498. --------- Co-authored-by: releasebot <noreply@github.com> Co-authored-by: @rugpanov <gripanov@gmail.com> Co-authored-by: Isaac <no-reply@databricks.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Automated
setup-localfails with E_MERGE /pyproject.toml has no [project] table to hold requires-pythonon a valid PEP 735 dependency-groups-only manifest — apyproject.tomlthat deliberately has no[project]table (e.g. a Databricks Apps repo whose app runtime pip-installsrequirements.txt). Reported in #2177.The
"no [project] table…"text comes from the CLI's merge phase (libs/localenv,MergeManaged→errNoProjectTable), which refuses to write the runtime'srequires-pythonwhen there is no[project]table to hold it. That is intentional CLI behaviour, but the extension surfaced it badly:errorMessages.tsgave the generic, non-actionable "Failed to merge the runtime constraints…" copy.reportSetupIssue.tsrouted allE_MERGEtodatabricks/databricks-vscodeas a reportable defect — so our own report flow auto-generated issue [setup-local] Unexpected E_MERGE in the merge phase #2177 for a valid, user-fixable manifest shape.Fix
isMissingProjectTableFailure(result)— detects thisE_MERGEvariant by the CLI message (mirroring the existingisIndexUnreachableFailure), scoped toE_MERGE.getPythonSetupErrorMessagereturns actionable copy for it: add a minimal[project]table (name, version,requires-python), or setdatabricks.python.environmentSetuptomanual. GenericE_MERGEkeeps the neutral copy.formatSetupFailureDetailspells out both fixes in the output channel so the guidance survives the notification being dismissed. No new button — the primary fix is a manual edit.reportRepoForResultexcludes this variant, so it no longer prompts a bug report. A genericE_MERGEstays report-worthy.No new settings, state, telemetry, or commands. Purely presentational + report-routing; generic
E_MERGEbehaviour is unchanged.Testing
tsc,eslint, andprettierclean on the changed files.Fixes #2177
This pull request and its description were written by Isaac.