Skip to content

[setup-local] Unexpected E_MERGE in the merge phase #2177

Description

@Nivethan2893

Automated setup of the local Python environment failed after its pre-flight checks. The details below were collected automatically (local paths, usernames, and credentials redacted). Please add anything else that helps us reproduce it.

Error code: E_MERGE
Failing phase: merge
Environment key: serverless/serverless-v5
Package manager: uv
Extension version: 2.16.0
CLI version: 1.14.1
OS: darwin

CLI output (auto-redacted):

merge managed regions failed: pyproject.toml has no [project] table to hold requires-python

Your pyproject.toml (paste it below to help us reproduce — remove anything private):

# Python dev-tooling manifest for the Sterling & Wilson demo.
#
# Deliberately NO [project] / [build-system] table: nothing builds or installs
# this repo as a distribution. The Databricks Apps runtime installs
# src/05_app/requirements.txt with pip, and that contract is unchanged. A
# [dependency-groups]-only pyproject is valid per PEP 735.
#
# This file owns dev-only dependencies plus the ruff and pytest configuration.
# Install for development:
#   pip install -r src/05_app/requirements.txt --group dev   (needs pip >= 25.1)

[dependency-groups]
# Dev/CI-only tools — NOT installed by the Databricks Apps runtime.
dev = [
    "pytest>=8.0",
    "ruff>=0.15",
]

[tool.ruff]
target-version = "py311"
line-length = 100
extend-exclude = [".claude", ".venv"]

[tool.ruff.lint]
select = [
    "E",  # pycodestyle errors
    "W",  # pycodestyle warnings
    "F",  # pyflakes
    "I",  # isort (import order)
    "B",  # bugbear
    "UP", # pyupgrade
]

[tool.ruff.lint.per-file-ignores]
# The Spark Declarative Pipeline runs inside the Databricks pipelines runtime,
# which injects `spark` into the module globals. There is no import to add —
# adding one would break the runtime — so pyflakes' undefined-name check is
# wrong here specifically.
"src/02_pipeline/*.py" = ["F821"]

# Databricks notebooks are executed cell-by-cell by the notebook runtime, which
# injects `spark`, `dbutils` and `display`, and requires imports to sit inside
# the cells that use them rather than at the top of the file.
"notebooks/*.py" = ["F821", "E402"]
"src/03_lakebase/*.py" = ["F821", "E402"]

# Tests insert the app directory on sys.path before importing from it, so the
# imports cannot come first.
"tests/*.py" = ["E402"]

# The synthetic dataset is defined as fixed-width literal tables (_PROJECT_SEED,
# _OPP_NAMES and friends) where one line per record is the readable form —
# wrapping them would make a diff to the data harder to review, not easier.
# Every other line in the file is held to the 100-column limit.
"src/05_app/mock_data.py" = ["E501"]

[tool.ruff.lint.isort]
combine-as-imports = true

[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["src/05_app"]

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions