Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Resolver error trees with collapsed unavailable conclusion is out of order #9861

Closed
zanieb opened this issue Dec 13, 2024 · 2 comments · Fixed by #9877
Closed

Resolver error trees with collapsed unavailable conclusion is out of order #9861

zanieb opened this issue Dec 13, 2024 · 2 comments · Fixed by #9877

Comments

@zanieb
Copy link
Member

zanieb commented Dec 13, 2024

e.g.,

❯ echo "open3d" | cargo run -- pip compile --no-cache --exclude-newer 2024-03-25T00:00:00Z --python-platform linux --python 3.10 -
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.49s
     Running `target/debug/uv pip compile --no-cache --exclude-newer '2024-03-25T00:00:00Z' --python-platform linux --python 3.10 -`
Resolver derivation tree before reduction
term root==0a0.dev0
  root==0a0.dev0 depends on open3d*
  term open3d*
    open3d==0.18.0 no wheels with a matching platform tag
    term open3d<0.18.0 | >0.18.0
      open3d==0.17.0 no wheels with a matching platform tag
      term open3d<0.17.0 | >0.17.0, <0.18.0 | >0.18.0
        open3d==0.16.1 no wheels with a matching platform tag
        term open3d<0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
          open3d==0.16.0 no wheels with a matching platform tag
          term open3d<0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
            open3d==0.15.2 no wheels with a matching Python ABI tag
            term open3d<0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
              open3d==0.15.1 no wheels with a matching Python ABI tag
              term open3d<0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
                open3d==0.14.1 no wheels with a matching Python ABI tag
                term open3d<0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
                  open3d==0.13.0 no wheels with a matching Python ABI tag
                  term open3d<0.13.0 | >0.13.0, <0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
                    open3d==0.12.0 no wheels with a matching Python ABI tag
                    term open3d<0.12.0 | >0.12.0, <0.13.0 | >0.13.0, <0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
                      open3d==0.11.2 no wheels with a matching Python ABI tag
                      term open3d<0.11.2 | >0.11.2, <0.12.0 | >0.12.0, <0.13.0 | >0.13.0, <0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
                        open3d==0.11.1 no wheels with a matching Python ABI tag
                        term open3d<0.11.1 | >0.11.1, <0.11.2 | >0.11.2, <0.12.0 | >0.12.0, <0.13.0 | >0.13.0, <0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
                          open3d==0.11.0 no wheels with a matching Python ABI tag
                          term open3d<0.11.0 | >0.11.0, <0.11.1 | >0.11.1, <0.11.2 | >0.11.2, <0.12.0 | >0.12.0, <0.13.0 | >0.13.0, <0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
                            open3d==0.10.0.1 no wheels with a matching Python ABI tag
                            term open3d<0.10.0.1 | >0.10.0.1, <0.11.0 | >0.11.0, <0.11.1 | >0.11.1, <0.11.2 | >0.11.2, <0.12.0 | >0.12.0, <0.13.0 | >0.13.0, <0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
                              open3d==0.10.0.0 no wheels with a matching Python ABI tag
                              term open3d<0.10.0.0 | >0.10.0.0, <0.10.0.1 | >0.10.0.1, <0.11.0 | >0.11.0, <0.11.1 | >0.11.1, <0.11.2 | >0.11.2, <0.12.0 | >0.12.0, <0.13.0 | >0.13.0, <0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
                                open3d==0.9.0.0 no wheels with a matching Python ABI tag
                                term open3d<0.9.0.0 | >0.9.0.0, <0.10.0.0 | >0.10.0.0, <0.10.0.1 | >0.10.0.1, <0.11.0 | >0.11.0, <0.11.1 | >0.11.1, <0.11.2 | >0.11.2, <0.12.0 | >0.12.0, <0.13.0 | >0.13.0, <0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
                                  open3d==0.8.0.0 no wheels with a matching Python ABI tag
                                  no versions of open3d<0.8.0.0 | >0.8.0.0, <0.9.0.0 | >0.9.0.0, <0.10.0.0 | >0.10.0.0, <0.10.0.1 | >0.10.0.1, <0.11.0 | >0.11.0, <0.11.1 | >0.11.1, <0.11.2 | >0.11.2, <0.12.0 | >0.12.0, <0.13.0 | >0.13.0, <0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
Resolver derivation tree after reduction
term root==0a0.dev0
  root==0a0.dev0 depends on open3d*
  term open3d<0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
    open3d==0.16.0 | ==0.16.1 | ==0.17.0 | ==0.18.0 no wheels with a matching platform tag
    term open3d<0.9.0.0 | >0.9.0.0, <0.10.0.0 | >0.10.0.0, <0.10.0.1 | >0.10.0.1, <0.11.0 | >0.11.0, <0.11.1 | >0.11.1, <0.11.2 | >0.11.2, <0.12.0 | >0.12.0, <0.13.0 | >0.13.0, <0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
      open3d==0.8.0.0 | ==0.9.0.0 | ==0.10.0.0 | ==0.10.0.1 | ==0.11.0 | ==0.11.1 | ==0.11.2 | ==0.12.0 | ==0.13.0 | ==0.14.1 | ==0.15.1 | ==0.15.2 no wheels with a matching Python ABI tag
      no versions of open3d<0.8.0.0 | >0.8.0.0, <0.9.0.0 | >0.9.0.0, <0.10.0.0 | >0.10.0.0, <0.10.0.1 | >0.10.0.1, <0.11.0 | >0.11.0, <0.11.1 | >0.11.1, <0.11.2 | >0.11.2, <0.12.0 | >0.12.0, <0.13.0 | >0.13.0, <0.14.1 | >0.14.1, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
  × No solution found when resolving dependencies:
  ╰─▶ Because only the following versions of open3d are available:
          open3d==0.8.0.0
          open3d==0.9.0.0
          open3d==0.10.0.0
          open3d==0.10.0.1
          open3d==0.11.0
          open3d==0.11.1
          open3d==0.11.2
          open3d==0.12.0
          open3d==0.13.0
          open3d==0.14.1
          open3d==0.15.1
          open3d==0.15.2
          open3d==0.16.0
          open3d==0.16.1
          open3d==0.17.0
          open3d==0.18.0
      and open3d<=0.15.2 has no wheels with a matching Python ABI tag, we can conclude that open3d<0.9.0.0 cannot be used.
      And because open3d>=0.16.0 has no wheels with a matching platform tag and you require open3d, we can conclude that your
      requirements are unsatisfiable.

We make the conclusion "we can conclude that open3d<0.9.0.0 cannot be used" before we make the second proof about the incompatible range "because open3d>=0.16.0 has no wheels"

There's some more context in pubgrub-rs/pubgrub#297 as I've explored a couple issues here — the root cause might be the same.

@zanieb
Copy link
Member Author

zanieb commented Dec 13, 2024

Interestingly, adding a bound fixes this? I added >0.15.0 just in an attempt to minimize the problem.

❯ echo "open3d>0.15.0" | cargo run -- pip compile --no-cache --exclude-newer 2024-03-25T00:00:00Z --python-platform linux --python 3.10 -
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.15s
     Running `target/debug/uv pip compile --no-cache --exclude-newer '2024-03-25T00:00:00Z' --python-platform linux --python 3.10 -`
Resolver derivation tree before reduction
term root==0a0.dev0
  root==0a0.dev0 depends on open3d>0.15.0
  term open3d>0.15.0
    open3d==0.18.0 no wheels with a matching platform tag
    term open3d>0.15.0, <0.18.0 | >0.18.0
      open3d==0.17.0 no wheels with a matching platform tag
      term open3d>0.15.0, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
        open3d==0.16.1 no wheels with a matching platform tag
        term open3d>0.15.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
          open3d==0.16.0 no wheels with a matching platform tag
          term open3d>0.15.0, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
            open3d==0.15.2 no wheels with a matching Python ABI tag
            term open3d>0.15.0, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
              open3d==0.15.1 no wheels with a matching Python ABI tag
              no versions of open3d>0.15.0, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
Resolver derivation tree after reduction
term root==0a0.dev0
  root==0a0.dev0 depends on open3d>0.15.0
  term open3d>0.15.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
    open3d==0.16.0 | ==0.16.1 | ==0.17.0 | ==0.18.0 no wheels with a matching platform tag
    term open3d>0.15.0, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
      open3d==0.15.1 | ==0.15.2 no wheels with a matching Python ABI tag
      no versions of open3d>0.15.0, <0.15.1 | >0.15.1, <0.15.2 | >0.15.2, <0.16.0 | >0.16.0, <0.16.1 | >0.16.1, <0.17.0 | >0.17.0, <0.18.0 | >0.18.0
  × No solution found when resolving dependencies:
  ╰─▶ Because only the following versions of open3d are available:
          open3d<0.15.0
          open3d==0.15.1
          open3d==0.15.2
          open3d==0.16.0
          open3d==0.16.1
          open3d==0.17.0
          open3d==0.18.0
      and open3d>=0.15.1,<=0.15.2 has no wheels with a matching Python ABI tag, we can conclude that open3d>0.15.0,<0.15.2 cannot be used.
      And because open3d>=0.16.0 has no wheels with a matching platform tag and you require open3d>0.15.0, we can conclude that your requirements are unsatisfiable.
``

@zanieb
Copy link
Member Author

zanieb commented Dec 13, 2024

Though it does not work with a smaller version

❯ echo "open3d>=0.11.0" | cargo run -- pip compile --no-cache --exclude-newer 2024-03-25T00:00:00Z --python-platform linux --python 3.10 -
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.14s
     Running `target/debug/uv pip compile --no-cache --exclude-newer '2024-03-25T00:00:00Z' --python-platform linux --python 3.10 -`
  × No solution found when resolving dependencies:
  ╰─▶ Because only the following versions of open3d are available:
          open3d<=0.11.0
          open3d==0.11.1
          open3d==0.11.2
          open3d==0.12.0
          open3d==0.13.0
          open3d==0.14.1
          open3d==0.15.1
          open3d==0.15.2
          open3d==0.16.0
          open3d==0.16.1
          open3d==0.17.0
          open3d==0.18.0
      and open3d>=0.11.0,<=0.15.2 has no wheels with a matching Python ABI tag, we can conclude that open3d>=0.11.0,<0.11.1 cannot be used.
      And because open3d>=0.16.0 has no wheels with a matching platform tag and you require open3d>=0.11.0, we can conclude that your requirements are unsatisfiable.

Removing the simplify call is helpful?

  × No solution found when resolving dependencies:
  ╰─▶ Because only the following versions of open3d are available:
          open3d<=0.11.0
          open3d==0.11.1
          open3d==0.11.2
          open3d==0.12.0
          open3d==0.13.0
          open3d==0.14.1
          open3d==0.15.1
          open3d==0.15.2
          open3d==0.16.0
          open3d==0.16.1
          open3d==0.17.0
          open3d==0.18.0
      and open3d>=0.11.0,<=0.15.2 has no wheels with a matching Python ABI tag, we can conclude that all of:
          open3d>=0.11.0,<0.11.1
          open3d>0.11.1,<0.11.2
          open3d>0.11.2,<0.12.0
          open3d>0.12.0,<0.13.0
          open3d>0.13.0,<0.14.1
          open3d>0.14.1,<0.15.1
          open3d>0.15.1,<0.15.2
          open3d>0.15.2,<0.16.0
          open3d>0.16.0,<0.16.1
          open3d>0.16.1,<0.17.0
          open3d>0.17.0,<0.18.0
          open3d>0.18.0
       cannot be used.
      And because open3d>=0.16.0 has no wheels with a matching platform tag and you require open3d>=0.11.0, we can conclude that your requirements are unsatisfiable.

And so is the complement

  × No solution found when resolving dependencies:
  ╰─▶ Because only the following versions of open3d are available:
          open3d<=0.11.0
          open3d==0.11.1
          open3d==0.11.2
          open3d==0.12.0
          open3d==0.13.0
          open3d==0.14.1
          open3d==0.15.1
          open3d==0.15.2
          open3d==0.16.0
          open3d==0.16.1
          open3d==0.17.0
          open3d==0.18.0
      and open3d>=0.11.0,<=0.15.2 has no wheels with a matching Python ABI tag, we can conclude that all of:
          open3d<0.11.0
          open3d==0.11.1
          open3d==0.11.2
          open3d==0.12.0
          open3d==0.13.0
          open3d==0.14.1
          open3d==0.15.1
          open3d==0.15.2
          open3d==0.16.0
          open3d==0.16.1
          open3d==0.17.0
          open3d==0.18.0
       cannot be used.
      And because open3d>=0.16.0 has no wheels with a matching platform tag and you require open3d>=0.11.0, we can conclude that your requirements are unsatisfiable.

but this doesn't work for most conclusions? (i.e., many regressions if I run the test suite with these changes)

Here, at least, it's very clear the ordering is wrong?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant