uv
91653f5f - Avoid invalid simplification with conflict markers (#15041)

Commit
128 days ago
Avoid invalid simplification with conflict markers (#15041) Previously, `simplify_conflict_markers` assumed that it can remove all conflict set together, when we need to look at each conflict set individually. Specifically, `(platform_machine == 'x86_64' and extra == 'extra-5-foo-b') or extra == 'extra-5-foo-a'` can't be reduced `platform_machine == 'x86_64'` only because it reduces to true when both conflict extras are activated. This case applied in https://github.com/astral-sh/uv/issues/14805, where a jax 0.5.3 version was used for `platform_machine != 'aarch64' or sys_platform != 'linux'` and the conflict extra `cu128`, but jax 0.7.0 for the conflict extra `cpu`. Only removing the faulty inference regresses lockfiles to much more verbose markers. To balance the much more conservative inference, I added `unify_inference_sets` to simplify cases where all conflict branches reduce to the same marker. This still regresses some markers. For example `sys_platform == 'win32'` regresses to `sys_platform == 'win32' or (extra == 'extra-3-pkg-x1' and extra == 'extra-3-pkg-x2')` in `extra_inferences`, even through x1 and x2 conflict and the second conjunction could be simplified away. Fixes https://github.com/astral-sh/uv/issues/14805
Author
Parents
Loading