Open konstin opened 6 days ago
Can you break this down a bit? It seems like you’re reporting multiple issues here - or am I misreading?
No i think this is one issue where we accumulate the wrong markers and then everything downstream is wrong
Do you want to look into it?
My guess is... maybe we aren't checking if the fork is disjoint with the parent fork? Like, after we fork, we do:
forked_state.markers.and(fork.markers);
forked_state.markers = normalize(forked_state.markers)
.unwrap_or(MarkerTree::And(Vec::new()));
But that expression could be ∅
.
Although in theory we filter out deps with possible_to_satisfy_markers
...
When resolving transformers, the marker expressions on the forks are non-sensical:
platform_system == 'Darwin' and platform_system == 'Linux'
is ∅, i.e. those split can never be reached, and the union of the splits is not universal.I've tried to minimize is a bit, but the problem did not occur when using
uv pip install --universal
or when using direct dependencies with `tool.uv.source, i.e. i think it needs some previous (dummy?) splits, and hence the half-done MRE:Use this pyproject.toml, edit the overrides to point to two dummy projects.
opencv-python
splits,foo
is our reporter.Run this on a 64-bit x86 machine or edit the marker to something else that's your machine but excluded in the lock markers. Run
uv lock -v
. In the lockfile we findand anyio 4.4.0, missing our constraint! It looks like we're only solving for a subset of markers in this case.
The marker on opencv-python -> numpy also looks wrong: