HsuehYi opened a new issue, #75195:
URL: https://github.com/apache/airflow/issues/75195
### Description
`uv lock --check` (and `uv sync --frozen`) fails on a clean `main`:
```
error: Failed to parse `uv.lock`
cause: Found duplicate package `pyvespa==1.2.9 @
registry+https://pypi.org/simple`
```
Reproduced with uv 0.12.18, 0.13.1 and 0.13.3 on `main` at `0a4b5d8e49` and
current `6aee277d4a` (macOS arm64). The `uv.lock` blob is
`eb0774d98a4571fd1a0359d8536d4b13aa41422b` (sha256
`cf8f72edaff55fa77a1ca03445032adf7e5b346f7c93154592408e5c2ac64014`); I copied
that exact blob from `git show upstream/main:uv.lock` into an isolated temp
directory and reproduced the parse failure with all three versions, so this
is
not caused by the workspace or a local environment. `uv sync --frozen
--project
airflow-core --group mypy --dry-run` fails with the same error.
### Cause
`uv.lock` contains two `[[package]]` blocks for `pyvespa` 1.2.9 with the same
name, version and source, separated only by `resolution-markers`:
- one for `python_full_version < '3.14'` (expanded with the platform/Python
variants)
- one for `python_full_version >= '3.14'`
Before #73822, the `< 3.14` entry resolved to `pyvespa==1.2.7` while `>=
3.14`
resolved to `1.2.9`, so the two blocks had different versions; the parent
commit
`0a4b5d8e49^` parses correctly with uv 0.12.18, 0.13.1 and 0.13.3. #73822
(`[main] Upgrade important CI environment`) regenerated the lock, and the
`< 3.14` entry also became `1.2.9` — the two blocks are now identical except
for `resolution-markers`, and uv refuses to parse the file.
The provider still declares a split constraint:
```toml
# providers/vespa/pyproject.toml
"pyvespa>=1.2.9; python_version >= '3.14'",
"pyvespa>=1.1.2; python_version < '3.14'",
```
### Impact
Every `uv sync --frozen` on current `main` fails, so:
- prek hooks such as `mypy-*`, provider validation and `Update uv.lock` fail;
- CI jobs that sync the workspace fail (e.g. Airflow CTL tests 3.11–3.14,
Scripts tests and Shared distributions tests on `0a4b5d8e49`);
- contributors cannot rebase/push branches onto current `main` without
`--no-verify`.
### Suggested fix
Regenerate the lock after normalizing the Vespa constraint — e.g. a single
`pyvespa>=1.2.9` if 1.2.9 still supports Python 3.11, or keep the `< 3.14`
constraint but let uv resolve to a single package block. Then `uv lock
--check`
should pass.
If uv still produces a redundant marker split for the same version, merging
the
two `[[package]]` blocks (dropping the `< 3.14` resolution markers from the
`pyvespa` 1.2.9 entry) would also fix the parse error, but regenerating from
the
provider constraint is preferable.
### Environment
- uv 0.13.3 (also reproduced with 0.12.18 and 0.13.1)
- macOS arm64; repo venv CPython 3.12.15, isolated probe used CPython 3.14.7
selected by uv
- `uv.lock` revision 5, `requires-python >=3.11`
Related: #73822, #75062
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]