Repository navigation
Closed
Labels
Description
uv lock / uv sync fails: unsatisfiable extras (and libreyolo[all] can't be installed on Python ≥ 3.12)
Summary
On current dev (092ce18), uv can't resolve the project at all. Fixing the first error only exposes the next one. There are five separate causes in pyproject.toml. One of them also affects pip users: pip install "libreyolo[all]" can't succeed on Python ≥ 3.12.
Reproduce
uv lock --dry-run # uv 0.11.8Because libreyolo:dev depends on pytest>=9.0.2 and executorch==1.2.0 depends on pytest<9.0,
we can conclude that executorch==1.2.0 and libreyolo:dev are incompatible.
And because only the following versions of executorch are available:
executorch<=1.2.0
executorch>1.3
and libreyolo[executorch] depends on executorch>=1.2,<1.3 ...
your project's requirements are unsatisfiable.
Root causes
Each cause below was found by fixing the previous one and running the lock again.
| # | Conflict | Why |
|---|---|---|
| 1 | dev group vs executorch |
executorch 1.2.0 lists pytest<9.0 as a runtime dependency, but the dev group requires pytest>=9.0.2. |
| 2 | paddle vs tflite / litert (and therefore all) |
paddle pins onnx>=1.14.0,<1.18 (for X2Paddle), but onnx2tf>=2.4.3 pins onnx==1.20.1 on Python ≥ 3.12. all includes both, so libreyolo[all] is unsatisfiable on Python ≥ 3.12 under pip too. |
| 3 | executorch vs tflite / litert |
onnx2tf>=2.4.3 pins pytest==9.0.2 at runtime, while executorch 1.2.0 requires pytest<9.0. |
| 4 | coreai on Python 3.10 |
coreai-torch>=0.4.1 requires Python ≥ 3.11, but the extra's marker is only sys_platform == 'darwin' and the project supports 3.10. |
| 5 | vla vs molmo2 and vs marigold |
lerobot==0.6.1 requires huggingface-hub>=1.6, but molmo2 pins transformers==4.57.1, which needs huggingface-hub<1.0. lerobot also requires accelerate>=1.14.0, but marigold pins accelerate==1.13.0. |
Upgrading executorch doesn't help. Versions 1.3.1 and later drop the pytest pin but need torch>=2.12, and the pytorch-cu128 index stops at torch 2.11.
Proposed fix (tested: uv lock resolves)
[dependency-groups]
dev = [
- "pytest>=9.0.2",
+ "pytest>=8.3", coreai = [
- "coreai-torch>=0.4.1; sys_platform == 'darwin'",
+ "coreai-torch>=0.4.1; sys_platform == 'darwin' and python_version >= '3.11'",
] all = [
...
- "libreyolo[paddle]",(An alternative is to keep it as "libreyolo[paddle]; python_version < '3.12'".)
[tool.uv]
conflicts = [
...
+ [{ extra = "molmo2" }, { extra = "vla" }],
+ [{ extra = "marigold" }, { extra = "vla" }],
+ [{ extra = "paddle" }, { extra = "tflite" }],
+ [{ extra = "paddle" }, { extra = "litert" }],
+ [{ extra = "executorch" }, { extra = "tflite" }],
+ [{ extra = "executorch" }, { extra = "litert" }],
+ [{ extra = "executorch" }, { extra = "all" }],
]With these changes the lock resolves executorch 1.2.0 with torch 2.11.0+cu128. pytest resolves to 8.4.2 alongside executorch and 9.0.2 alongside tflite.
Notes
- No test uses a pytest-9-only API (subtests,
RaisesGroup, etc.), so lowering the dev floor looks safe. - executorch and tflite/litert can't share an environment until executorch can move past 1.2 (blocked on a torch ≥ 2.12 CUDA index). Their tests have to run in separate environments.
- No
uv.lockis committed and nothing in CI runsuv lock, so this drifted unnoticed. Auv lock --check(oruv lock --dry-run) step in CI would catch the next one.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
EHxuban11 commentedon Nov 2, 2026
This is embarassing 💀
Explain the Core AI Python floor and LocateAnything's decord platforms (
Merge pull request #990 from LibreYOLO/989-fix-unsatisfiable-extras
Drop cuda-python from the tensorrt extra: it fights torch's own cuda-…
Keep FLATC_EXECUTABLE for concurrent exports, compare boxes in the in…
Ignore decord's mislabeled wheel tag in the install job's pip check (#…
Explain MNN's executable-stack refusal on glibc 2.41+ and test the wo…
Compare scores of matched detections in the install smoke test (#989)
Merge pull request #991 from LibreYOLO/989-install-from-wheels
Match smoke-test detections one to one so duplicates count as extras (#…
EHxuban11 commentedon Nov 3, 2026
Hello @gboeer ,
Fixed on both dev and latest release, and thank you for saving the library with this issue 🥇
Just out of curiosity, do you use libreyolo at your work or is it in your free time?
gboeer commentedon Nov 4, 2026
No problem. Yes I'm currently trying out libreyolo at work.
Make every extra resolvable with uv and pip (LibreYOLO#989)
Check dependency resolution of every extra in CI (LibreYOLO#989)
Find mnnconvert and flatc in an unactivated venv; explain where corem…
Install every extra from wheels and pin torch for ExecuTorch (LibreYO…
Check for source builds and really install [all] on three OSes in CI (L…
Free runner disk for the [all] install job and install without pip's …