Skip to content

test(compat): map post-12.0.0b5 pylance releases to lance-namespace 0.11 - #65

Closed
amunra wants to merge 1 commit into
release-10.0.0from
adam/compat-namespace-0-11-r10
Closed

amunra wants to merge 1 commit into
release-10.0.0from
adam/compat-namespace-0-11-r10

Conversation

@amunra

@amunra amunra commented Sep 1, 2026 •

Copy link
Copy Markdown

Backports one slice of upstream lance-format#8903 (1391e6cb7), "build(deps)!: bump lance-namespace to 0.11.1 across Java and Python". In that PR's words:

The compat harness also gains a tier in its namespace pin map, which tells it what lance-namespace range to install alongside each published pylance release. Releases cut after 12.0.0b5 will carry the new >=0.11.1,<0.12 range, so the map needs an entry for them; 12.0.0b5 and earlier keep the old one.

That tier is what this takes, unchanged, along with the three parameterised cases upstream added to pin the boundary either side of 12.0.0b5.

It is needed here because the harness discovers its version matrix at collection time rather than pinning it, taking the newest beta from the fury index. Once upstream published pylance 12.0.0-beta.6 — the first release carrying the new range — the harness kept asking pip for pylance==12.0.0b6 together with lance-namespace>=0.8.0,<0.9, which cannot resolve. The install failed before any Lance code ran, erroring every test parameterised on that version. Because the matrix is discovered rather than pinned, that broke every branch at once, not only ones touching Python.

No production code: both files are test-harness only, and this fork's own lance-namespace pin stays at >=0.8.5,<0.9. The map only decides what to install into the throwaway venv built for some other published pylance release.

Testing

Compat suite on this branch: 278 passed, 9 skipped, none failed — against 30 failed, 245 passed, 9 skipped before. The 31 12.0.0b6 cases now execute rather than erroring at install, so a release-10.0.0 writer is genuinely exercised against a 12.0.0-beta.6 reader; nothing fails on its merits.

test_venv_manager.py::test_lance_namespace_dependency covers the boundary directly, 9 passed with --run-compat. Checked non-vacuous by dropping the new tier, which fails exactly the two cases it should: assert 'lance-namespace>=0.8.0,<0.9' == 'lance-namespace>=0.11.1,<0.12'.

Not included

Everything else in upstream lance-format#8903, which is the dependency bump proper and is breaking: raising lance-namespace to 0.11.1 in Cargo.toml and all three lockfiles, java/pom.xml and four Java sources, python/pyproject.toml, python/lance/namespace.py and uv.lock. Upstream's summary of what that entails:

0.11 changes four LanceNamespace methods to return a response object instead of a bare value. Both bindings are updated to match, and callers need to unwrap.

That belongs in its own deliberate port and review rather than riding along with a CI unblock. Nothing here depends on it: the map describes what other releases require, so it is correct whether or not this fork has bumped its own pin.

The compatibility suite discovers its version matrix at collection time, taking
the newest beta from the fury index. Upstream published pylance 12.0.0-beta.6,
which raised its own requirement from `lance-namespace>=0.8.5,<0.9` to
`lance-namespace>=0.11.1,<0.12`, but `_lance_namespace_dependency` maps every
release at or above 7.2.0b5 to the 0.8 range.

So the harness asks pip for `pylance==12.0.0b6` together with
`lance-namespace>=0.8.0,<0.9`, which cannot resolve, and the install fails before
any Lance code runs. Every test parameterised on that version errors out, and
because the matrix is discovered rather than pinned this breaks every branch at
once rather than only ones touching Python.

Partial backport of upstream lance-format/lance@1391e6cb7 (lance-format#8903),
which made the same change alongside the dependency bump itself. Only the two
compat-harness files are taken, unchanged. The rest of that commit raises
`lance-namespace` to 0.11.1 across Rust, Java and Python, adapts the Java
namespace classes and `python/lance/namespace.py`, and rewrites all three
lockfiles; it is a breaking change that belongs in its own deliberate port. This
branch's own pin stays at `lance-namespace>=0.8.5,<0.9` and its wheel is
unaffected -- the mapping only decides what to install into the throwaway venv
built for some *other* pylance version.
@amunra

amunra commented Sep 2, 2026

Copy link
Copy Markdown
Author

Superseded by #67, which caps the discovered compat version matrix at the version under test instead of adding a namespace-pin tier.

This PR backported upstream's fix (lance-format/lance@1391e6cb7, lance-format#8903) and did unblock the install — 30 failed became 278 passed. But it leaves a release branch testing against its own future: release-10.0.0 was resolving 11.0.0 and 12.0.0b6 into its matrix, because both discovery queries are global rather than relative to the build. It also needs a new tier on every upstream namespace bump, so the same class of break returns.

With the matrix capped, no tier is needed — every remaining version predates the 0.9 era and the existing arm covers it.

@amunra amunra closed this Sep 2, 2026
@amunra
amunra deleted the adam/compat-namespace-0-11-r10 branch September 2, 2026 10:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant