Skip to content

LITE-33583: Align bootstrapped extension deps with the runner#252

Merged
arnaugiralt merged 2 commits into
masterfrom
fix/LITE-33583-bootstrap-dependency-mismatch
Jul 21, 2026
Merged

LITE-33583: Align bootstrapped extension deps with the runner#252
arnaugiralt merged 2 commits into
masterfrom
fix/LITE-33583-bootstrap-dependency-mismatch

Conversation

@pcaro

@pcaro pcaro commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Problem

Bootstrapping an extension produced an incoherent runner ↔ connect-eaas-core dependency pair, so the generated project could not run without manual fixes.

Root cause:

  • get_pypi_runner_version() selected the runner image by the CLI's own major version (26), which has diverged from the real runner line (currently 43). This baked a stale, incompatible connect-extension-runner:26.x into the Dockerfile.
  • The pyproject.toml.j2 template hardcoded connect-eaas-core = ">=30", so poetry update in the Dockerfile resolved a connect-eaas-core version the pinned runner image does not support.

Fix

  • Runner selection: get_pypi_runner_version() now returns the latest published runner instead of filtering by the CLI major (removes the broken coupling).
  • Coherent, self-tracking pin: new get_pypi_runner_eaas_core_version(runner) derives the connect-eaas-core specifier from the selected runner's PyPI requires_dist, so the pair is always coherent and cannot drift again.
  • Template: connect-eaas-core is pinned to the runner-derived specifier; python aligned to the runner line (>=3.9,<3.13); stale dev-deps refreshed (pytest 8, flake8 ≥6, pytest-asyncio ≥0.23) and the dead mock marker dropped.

Verification

  • 118 project-plugin tests pass ; flake8 clean.
  • Real-PyPI derivation yields runner 43.0 + connect-eaas-core <38,>=37.4, which poetry parses correctly (>=37.4,<38; allows 37.5, excludes 38.0).

…-33583)

Bootstrapping an extension produced an incoherent runner/connect-eaas-core
pair, so the generated project could not run without manual fixes. The
runner image was selected by the CLI's own major version (26, stale versus
the real runner line 43) while the pyproject template hardcoded a
connect-eaas-core ">=30" floor, letting `poetry update` resolve a version
the runner image does not support.

Select the latest published runner instead of filtering by the CLI major,
and derive the connect-eaas-core specifier from that runner's PyPI
requires_dist so the pair is always coherent and cannot drift again. The
template now pins connect-eaas-core to the derived specifier, aligns python
to the runner line (>=3.9,<3.13), and refreshes the stale dev-dependencies
(pytest 8, flake8 >=6, pytest-asyncio >=0.23; drops the dead mock marker).
@pcaro pcaro changed the title fix(project): align bootstrapped extension deps with the runner (LITE-33583) LITE-33583: Align bootstrapped extension deps with the runner Jul 10, 2026
@pcaro
pcaro marked this pull request as ready for review July 10, 2026 09:46
@arnaugiralt
arnaugiralt requested a review from qarlosh July 10, 2026 14:33
Comment thread tests/plugins/project/test_extension_utils.py Outdated
@qarlosh

qarlosh commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

[Should-fix] (follow-up, not in this diff) bump still selects the runner by the Connect major, which is now obsolete.

This PR correctly moves bootstrap/validate to the latest published runner (CLI and runner versions have diverged). But bump_runner_extension_project still calls get_pypi_runner_version_by_connect_version() (helpers.py:251), which picks the runner matching the Connect platform version. Now that these GitHub projects follow independent semver (no longer aligned with Connect releases), that lookup mis-selects.

Suggested fix (likely a separate ticket): align bump with the same "latest / semver-compatible" model, or drop get_pypi_runner_version_by_connect_version.

…33583)

Address review feedback on the bootstrap dependency alignment: the
generated project's `python` constraint was still a hardcoded snapshot
of runner 43's range, recreating for python the same drift this branch
removes for connect-eaas-core.

Fold both pins into a single lookup: get_pypi_runner_requirements()
returns the (connect-eaas-core, python) specifiers from the runner's
PyPI release metadata (requires_dist + requires_python), failing loudly
when either is missing, and the template now renders both derived
values.

Also raise test fidelity: the bootstrap tests now mock the specifier
form the code actually emits ('<38,>=37.4') instead of a hand-reordered
variant, and assert both the connect-eaas-core and python pins in the
rendered pyproject.toml.
@pcaro

pcaro commented Jul 15, 2026

Copy link
Copy Markdown
Contributor Author

[Should-fix] (follow-up, not in this diff) bump still selects the runner by the Connect major, which is now obsolete.

Agreed, but I'd rather keep it out of this PR. bump touches existing projects, so just picking the latest runner could break extensions stuck on an older eaas-core. It needs a bit of thought (probably: stay within the project's current major, or bump the eaas-core pin together, like bootstrap does now). I'll open a separate PR for it.

#254

@sonarqubecloud

Copy link
Copy Markdown

@arnaugiralt arnaugiralt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

lgtm, let's wait for @qarlosh 's approval

@arnaugiralt
arnaugiralt merged commit cea268e into master Jul 21, 2026
4 checks passed
@arnaugiralt
arnaugiralt deleted the fix/LITE-33583-bootstrap-dependency-mismatch branch July 21, 2026 13:59
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.

3 participants